CentOS 7 從頭搭建LNMP環境

1 準備工作

        保證系統已安裝gcc、g++,沒有安裝的話通過以下命令安裝:

        yum install gcc gcc-c++

2 安裝nginx

        安裝nginx依賴包,如Rewrite模塊和HTTP核心模塊會使用到的PCRE正則表達式解析、需要使用gzip壓縮、安全套接字層SSL:
        yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

        下載openssl的源碼包並解壓
        wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
        tar -zxvf openssl-1.1.0h.tar.gz

        下載nginx包並解壓
        wget http://nginx.org/download/nginx-1.14.0.tar.gz
        tar -zxvf nginx-1.14.0.tar.gz

        編譯安裝到/usr/local/nginx
        cd nginx-1.14.0
        ./configure --prefix=/usr/local/nginx --with-openssl=../openssl-1.1.0h
        make
        make install

        創建並設置nginx運行賬號
        groupadd nginx
        useradd -M -g nginx -s /sbin/nologin nginx

        修改/usr/local/nginx/conf/nginx.conf,設置user參數如下,其他配置參數暫時無需改動。
        user nginx nginx

        設置nginx爲系統服務,新建/lib/systemd/system/nginx.service,內容如下:

[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

        設置nginx開機自啓動
        systemctl enable nginx.service

        開啓nginx服務:
        systemctl start nginx.service

        查看nginx是否啓動成功:
        ps aux | grep nginx

        防火牆開放80端口
        firewall-cmd --zone=public --add-port=80/tcp --permanent

        重啓防火牆
        firewall-cmd --reload

3 安裝MySQL

        下載 mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz,並解壓到/usr/local/mysql下
        tar -zxvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz
        mv mysql-5.7.22 /usr/local/mysql

        建立mysql相關的用戶和組,-s /sbin/nologin用於阻止用戶登錄
        groupadd mysql
        useradd -M -s /sbin/nologin -g mysql mysql
        chown -R mysql .
        chgrp -R mysql .

        初始化數據
        cd /usr/local/mysql
        bin/mysqld --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ --initialize

        在初始化時如果加上 --initial-insecure,則會創建空密碼的 root@localhost 賬號;--secure-file-priv 指定密碼文件夾位置 對應文件夾下就會有 .mysql_secret 文件。

        配置mysql服務
        cp support-files/mysql.server /etc/init.d/mysqld
        cp support-files/my-default.cnf /etc/my.cnf
        在/etc/init.d/mysqld和/etc/my.cnf中都添加
        basedir = /usr/local/mysql/
        datadir = /usr/local/mysql/data

        啓動mysql服務
        service mysqld start
        
        ******
        另外一種配置mysql服務的方法是,新建文件 /lib/systemd/system/mysql.service,內容如下:

[Unit]
Description=mysql
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecRestart=/usr/local/mysql/support-files/mysql.server restart
ExecReload=/usr/local/mysql/support-files/mysql.server reload
PrivateTmp=true

[Install]
WantedBy=multi-user.target

        設置mysql服務開機自啓動
        systemctl enable mysql.service

        啓動mysql
        systemctl start mysql.service

        查看mysql狀態
        systemctl status mysql.service
        
        如果啓動失敗,直接執行/usr/local/mysql/support-files/mysql.server restart,可以看到詳細錯誤原因。       
        ******
        登錄mysql,修改root用戶密碼
        mysql -u root -p
        SET PASSWORD = PASSWORD('123456');

4 安裝PHP

        安裝php依賴包
      yum install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel

        下載php包並解壓
        tar -zxvf php-7.2.8.tar.gz

        編譯安裝(到/usr/local/php目錄)
        cd php-7.2.0
  ./configure --prefix=/usr/local/php --disable-fileinfo --enable-fpm --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-openssl --with-zlib --with-curl --enable-ftp --with-gd --with-xmlrpc --with-jpeg-dir --with-png-dir --with-freetype-dir --enable-mbstring --enable-zip --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql-sock=/tmp/mysql/mysql.sock --without-pear  --enable-bcmath

        (注意:php7不再使用mysql的庫來支持mysql的連接,而是啓用了mysqlnd來支持,所以php7的編譯已經不再使用--with-mysql參數指定mysql的安裝位置了,若想支持mysql,需要設置--enable-mysqlnd、--with-mysqli和--with-pdo-mysql=mysqlnd參數,--with-mysql-sock指定的是mysql的UNIX套接字文件的位置)

        make
        make install

        將php包解壓目錄中的配置文件放置到正確位置(configure命令中的--with-config-file-path設置的位置)
        cp php.ini-production /etc/php.ini

        設置php-fpm運行賬號,統一使用nginx的賬號,如果用其他賬號會有權限問題,解決起來比較麻煩。
        cd /usr/local/php/etc
        cp php-fpm.conf.default php-fpm.conf
        cd php-fpm.d
        cp www.conf.default www.conf

        搜索“user”設置運行賬號:
        user=nginx
        group=nginx
        
        配置nginx支持php,修改/usr/local/nginx/conf/nginx.conf,啓用rewrite:


        
        修改完成之後記得重啓nginx服務:
        systemctl start nginx.service
        
        設置php-fpm爲系統服務,新建文件 /lib/systemd/system/php-fpm.service,文件內容如下:

[Unit]
Description=php-fpm
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/php/sbin/php-fpm
PrivateTmp=True

[Install]
WantedBy=multi-user.target

        設置php-fpm服務開機自啓動:
        systemctl enable php-fpm.service

        啓動php-fpm:
        systemctl start php-fpm.service

        查看是否啓動成功:
        ps aux | grep php-fpm

        編寫phpinfo.php腳本測試nginx是否已支持php,php是否已支持mysql。

<?php
phpinfo();
?>

        至此,LNMP搭建完成!

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章