搭建LNMP架構(Nginx、mysql、php)

2020-08-09 12:00:24

一、安裝Nginx

1.1 Nginx介紹

  • 是一款高效能,輕量級的web服務軟體
  • 穩定性高
  • 系統資源消耗低
  • 對HTTP併發連線的處理能力高(活到現在的原因)
    單台伺服器可支援30000~50000個併發請求

1.2 準備工作

  • 準備安裝包 nginx-1.12.2.tar.gz
  • 安裝工具和環境包
## 方便後續實驗關閉防火牆和核心防護
[root@localhost bbs]# iptables -F  ## 關閉防火牆
[root@localhost bbs]# setenforce 0 ## 關閉核心服務
    
yum -y install \
pcre-devel \   ##  pcre支援正則表達式的功能
zlib-devel \  ## 提供壓縮
gcc \    ## 支援C語言
gcc-c++  \   ## 支援C++語言
pcre  \  ## pcre語言
make  ## 編譯

1.3 原始碼編譯及安裝

[root@localhost ~]# useradd -s /sbin/nologin -M nginx ## 建立不可登錄的程式使用者nginx 
[root@localhost nginx-1.12.2]# tar zxvf nginx-1.12.2.tar.gz   ## 解壓nginx壓縮包
[root@localhost nginx-1.12.2]# cd  nginx-1.12.2  ## 進入解壓縮後的包
[root@localhost nginx-1.12.2]# 
./configure  --prefix=/usr/local/nginx \  ## 指定安裝路徑
--user=nginx \  ## 指定使用者
--group=nginx \ ## 指定組
--with-http_stub_status_module  ## 統計模組
[root@localhost nginx-1.12.2]#  make && make install  ## 編譯及安裝

1.4 優化執行路徑

[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ## 讓系統能識別ngxin的命令

1.5 製作管理指令碼

[root@localhost ~]# vim /etc/init.d/nginx 
#!/bin/bash
# chkconfig: - 99 20
# description:Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
 start)
        $PROG
        ;;
 stop)
        kill -s QUIT $(cat $PIDF)
        ;;
 restart)
        $0 stop
        $0 start
        ;;
 reload)
        kill -s HUP $(cat $PIDF)
        ;;
 *)
        echo "Usage: $0 {start|stop|restart|reload}"
        exit 1
 esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx  ## 給予指令碼執行許可權
[root@localhost ~]# service nginx start  ## 啓動nginx服務
[root@localhost ~]# netstat -atnp | grep "nginx" ## 檢視 服務
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      28961/nginx: master 

二、部署Mysql數據庫

2.1 準備工作

  • 準備好mysql壓縮包 mysql-boost-5.7.20.tar
  • 準備環境和工具包
[root@localhost ~]# yum -y install ncurses ncurses-devel bison cmake
## bison用於自動生成語法分析器程式  ## 安裝光碟自帶的ncurses-devel包   autoconf 適應多種Unix類系統的shell指令碼的工具
## cmake  編譯分析工具 
[root@localhost ~]# useradd -s /sbin/nologin mysql  ## 建立程式使用者mysql

2.2 Mysql原始碼編譯及安裝

[root@localhost ~]# tar zxvf  mysql-boost-5.7.20.tar.gz   ## 解壓MySQL壓縮包
[root@localhost ~]# cd mysql-5.7.20/  ## 進入解壓後的安裝包
[root@localhost ~]#
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \## DCMAKE_INSTALL_PREFIX  安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ ## DMYSQL_UNIX_ADDR=  數據庫對接目錄
-DSYSCONFDIR=/etc \   
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \   ## DDEFAULT_CHARSET  字元集爲uft8 即中文
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \    ## -DMYSQL_DATADIR數據庫數據管理使用者目錄 
-DWITH_BOOST=boost  \
-DWITH_SYSTEMD=1
[root@localhost mysql-5.7.20]# make && make install ## 編譯及安裝   時間較長需耐心等待

3.3 調整安裝路徑檔案的許可權

[root@localhost ~]#chown -R mysql:mysql /usr//local/mysql/  ## 屬主 屬組都必須是mysql使用者

3.4 調整組態檔

[root@localhost mysql-5.7.20]#vi /etc/my.cnf
[client]
port = 3306
default-character-set=utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set=utf8
socket = /usr/local/mysq/mysql.sock

[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES

3.5 設定環境變數

[root@localhost ~]#echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile  ## 將MySQL命令路徑追加到 PATH環境 寫入到 全域性變數檔案裏面
[root@localhost ~]#echo 'export PATH' >>/etc/profile  ## 將PATH申明爲全域性變數
[root@localhost ~]#soure /etc/profile  ## 重新載入全域性檔案,使剛纔問設定生效

3.6 初始化數據庫

[root@localhost ~]#cd /usr/local/mysql
bin/mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

3.7 開啓數據庫

[root@localhost ~]# cp usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system/ ## 系統能識別 能用systemctl命令開啓
[root@localhost ~]# systemctl  start mysqld  ## 其他如自啓動關閉檢視狀態跟其他服務命令一個格式
[root@localhost mysql]# netstat -anpt | grep 3306 ## 開啓後檢視服務
tcp6       0      0 :::3306                 :::*                    LISTEN      47949/mysqld   

3.8 爲數據庫設定管理員密碼

[root@localhost mysql]#  mysqladmin   -u  root -p  password
Enter password:      ## 原來沒密碼 直接回車
New password:         ## 輸入新密碼
Confirm new password: 
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

三、 安裝PHP

3.1 準備工作

  • 準備PHP 安裝包 php-7.1.10.tar
  • 準備環境及工具
[root@localhost ~]# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib  zlib-devel curl curl-devel openssl openssl-devel

3.2 編譯安裝

[root@localhost ~]# tar jxvf php-7.1.10.tar.bz2   ## 解壓壓縮包
[root@localhost ~]# cd php-7.1.10/   ## 進入安裝包
[root@localhost php-7.1.10]# 
./configure \
--prefix=/usr/local/php \  ## 安裝路徑
--with-mysql-sock=/usr/local/mysql/mysql.sock \  ## 連線數據庫
--with-mysqli \ 
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \  ## 動態網頁的核心模組,一定要開   
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
[root@localhost php-7.1.10]# make && make install

3.3 修改組態檔

[root@localhost php-7.1.10]# cp php.ini-development /usr/local/php/lib/php.ini ## 核心組態檔
[root@localhost php-7.1.10]# vim /usr/local/php/lib/php.ini
mysqli.default_socket=/usr/local/mysql/mysql.sock  ## 在組態檔1170行
date.timezone = Asia/Shanghai   ## 在939行

3.4 設定及優化FPM 模組

[root@localhost php-7.1.10]# cd /usr/local/php/etc/    
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf ## 從模板複製進程服務組態檔
[root@localhost etc]# cd /usr/local/php/etc/php-fpm.d/
[root@localhost php-fpm.d]# cp www.conf.default www.conf ## 從模板中複製一份擴充套件組態檔
[root@localhost php-fpm.d]# vim /usr/local/php/etc/php-fpm.conf
pid = run/php-fpm.pid ## 去掉開頭分號
[root@localhost php-fpm.d]# /usr/local/php/sbin/php-fpm -c  /usr/local/php/lib/php.ini  ## 啓動fpm模組  -c 是以config模式 在/usr/local/php/lib/php.ini  啓動
[root@localhost php-fpm.d]# netstat -ntap | grep 9000  ## 檢視fpm模組是否啓動
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      18694/php-fpm: mast 
[root@localhost php-fpm.d]# ln -s /usr/local/php/bin/* /usr/local/bin/ ## 優化命令路徑
[root@localhost php-fpm.d]# ps aux |grep -c "php-fpm"     ## 檢視多少php-fpm進程
4

3.5 讓nginx支援PHP 功能

[root@localhost php-fpm.d]# vim /usr/local/nginx/conf/nginx.conf ## 進入nginx檔案  在server裏面寫
location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name;  ## 這裏要注意路徑
            include        fastcgi_params;
        }
[root@localhost html]# mv index.html  index.bak ## 修改原檔名後綴,使其無法識別,留着萬一後面有用
[root@localhost html]# cp index.bak  index.php  ## 複製一份後綴爲php的檔案
[root@localhost html]# vim index.php  
<?php                     ## 顯示php頁面
phpinfo();
?>
[root@localhost html]# iptables -F  ## 清空防火牆
[root@localhost html]# setenforce 0  ## 關閉核心防護
[root@localhost html]# service  nginx restart    ## 重新啓動服務

3.6 測試

  • 登錄http://IP地址/index.php
    在这里插入图片描述

四、測試數據庫能否連線

4.1 在數據庫中建立數據庫使用者

[root@localhost ~]#  mysql -u root -p  ## 若無法連線用mysql -uroot -h 127.0.0.1 -p 連線
Enter password: 
mysql> CREATE DATABASE bbs;   ## 建立數據庫bbs
Query OK, 1 row affected (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';  ## 建立能使用bbs的使用者
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;  ## 重新整理
Query OK, 0 rows affected (0.00 sec)

4.2 修改頁面檔案測試

[root@localhost mysql]# vim /usr/local/nginx/html/index.php ## 修改頁面檔案測試
<?php
$link=mysqli_connect('192.168.233.100','bbsuser','admin123');  ## 連線數據庫
if($link) echo"<h1>Success!!</h1>";     ## 連線成功輸出Success
else echo "Fail!!"  ## 連線失敗輸出Fail 
?>

  • 連線成功
    在这里插入图片描述

五、安裝論壇

5.1 準備工作

  • 準備 Discuz_X3.4_SC_UTF8.zip 壓縮包

5.2 修改組態檔

[root@localhost ~]# cd dir_SC_UTF8/
[root@localhost ~]# unzip Discuz_X3.5_SC_UTF8.zip
[[root@localhost dir_SC_UTF8]# cp -r upload/ /usr/local/nginx/html/bbs/  ## 將upload包複製到nginx目錄下邊
[root@localhost dir_SC_UTF8]# cd /usr/local/nginx/html/bbs/  ## 進入bbs目錄下  修改某些目錄的檔案屬主屬組及許可權
### 修改屬主屬主
[root@localhost bbs]# chown -R root:nginx ./config/
[root@localhost bbs]# chown -R root:nginx ./data/
[root@localhost bbs]# chown -R root:nginx ./uc_client/
[root@localhost bbs]# chown -R root:nginx ./uc_server/
## 修改許可權
[root@localhost bbs]# chmod -R 777 ./config/
[root@localhost bbs]# chmod -R 777 ./data/
[root@localhost bbs]# chmod -R 777 ./uc_client/
[root@localhost bbs]# chmod -R 777 ./uc_server/

5.3 安裝論壇

  • 進入 http://192.168.233.200/bbs/install/index.php
    在这里插入图片描述
  • 點選我同意 ,發現環境全部符合要求
    在这里插入图片描述
  • 選擇全部安裝
    在这里插入图片描述
  • 建立 連線數據庫

在这里插入图片描述

  • 安裝成功
    在这里插入图片描述