Web進階LNMP網站部署
阿新 • • 發佈:2021-08-08
Web進階LNMP網站部署
LNMP架構工作流程
首先Nginx服務是不能處理動態請求,那麼當用戶發起動態請求時, Nginx又是如何進行處理的。 當用戶發起http請求,請求會被Nginx處理,如果是靜態資源請求Nginx則直接返回,如果是動態請求Nginx則通過 fastcgi協議轉交給後端的PHP程式處理,具體如下圖所示
詳解
1.使用者通過 http 協議發起請求,請求會先抵達 LNMP 架構中的 Nginx 2. Nginx 會根據使用者的請求進行判斷,這個判斷是有 Location 進行完成 3.判斷使用者請求的是靜態頁面, Nginx 直接進行處理 4.判斷使用者請求的是動態頁面, Nginx 會將該請求交給 fastcgi 協議下發 5. fastcgi 會將請求交給 php-fpm 管理程序, php-fpm 管理程序接收到後會呼叫具體的工作程序 warrap 6. warrap 程序會呼叫 php 程式進行解析,如果只是解析程式碼 php 直接返回 7.如果有查詢資料庫操作,則由 php 連線資料庫(使用者 密碼 IP)發起查詢的操作 8.最終資料由* mysql->php->php-fpm->fastcgi->nginx->http->user
部署LNMP架構
1.安裝nginx
[root@web01 ~]# yum install -y nginx
2.安裝php
# 1.更改yum源 [root@web01 ~]# wget http://us-east.repo.webtatic.com/yum/el7/webtatic-release.rpm [root@web01 ~]# yum localinstall webtatic-release.rpm -y # 2.生成快取 [root@web01 ~]# yum makecache # 3.安裝php [root@web01 ~]# yum -y install php71w php71w-cli php71w-common php71w-devel php71w-embedded php71w-gd php71w-mcrypt php71w-mbstring php71w-pdo php71w-xml php71w-fpm php71w-mysqlnd php71w-opcache php71w-pecl-memcached php71w-pecl-redis php71w-pecl-mongodb # 4.統一使用者 ## 建立www使用者組 [root@web01 ~]# groupadd www -g 666 ## 建立www使用者 [root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M ## 修改nginx配置檔案使用www使用者 [root@web01 ~]# vim /etc/nginx/nginx.conf user www; ## 修改php服務使用www使用者 [root@web01 ~]# vim /etc/php-fpm.d/www.conf [www] user = www group = www # 5.啟動php-fpm [root@web01 ~]# systemctl start php-fpm # 6.加入開機自啟 [root@web01 ~]# systemctl enable php-fpm # 7.檢查php的程序 [root@web01 ~]# ps -ef|grep '[p]hp-fpm' root 7570 1 0 16:00 ? 00:00:00 php-fpm: master process (/etc/phpfpm.conf) www 7571 7570 0 16:00 ? 00:00:00 php-fpm: pool www www 7572 7570 0 16:00 ? 00:00:00 php-fpm: pool www www 7573 7570 0 16:00 ? 00:00:00 php-fpm: pool www www 7574 7570 0 16:00 ? 00:00:00 php-fpm: pool www www 7575 7570 0 16:00 ? 00:00:00 php-fpm: pool www # 8.檢查php埠 [root@web01 ~]# netstat -lntup|grep 9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 7570/php-fpm: maste
3.安裝資料庫
# 1.安裝mariadb [root@web01 ~]# yum install -y mariadb-server # 2.啟動mariadb [root@web01 ~]# systemctl start mariadb # 3.開機自啟mariadb [root@web01 ~]# systemctl enable mariadb # 4.檢查MySQL埠 [root@web01 ~]# netstat -lntup|grep 3306 tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 7909/mysqld # 5.檢查MySQL程序 [root@web01 ~]# ps -ef|grep '[m]ysqld' # 6.設定mariadb密碼為123 [root@web01 ~]# mysqladmin -uroot password '123' # 7.客戶端連線命令 [root@web01 ~]# mysql -uroot -p123
將Nginx和PHP建立連線
# 1.修改nginx配置檔案
[root@web01 nginx]# vim /etc/nginx/conf.d/test_php.conf
server {
listen 80;
server_name localhost;
root /code;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
# 2.建立站點目錄
[root@web01 nginx]# mkdir /code
# 3.編輯php測試檔案
[root@web01 nginx]# vim /code/info.php
<?php
phpinfo();
?>
測試PHP連線MySQL
[root@web01 nginx]# vim /code/mysql.php
<?php
$servername = "localhost";
$username = "root";
$password = "123";
// 建立連線
$conn = mysqli_connect($servername, $username, $password);
// 檢測連線
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "小哥哥,php可以連線MySQL...";
?>
<img style='width:100%;height:100%;'
src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png>
部署部落格軟體(wordpress)
wordpress官網:[tp](Blog Tool, Publishing Platform, and CMS — WordPress.org)
# 1.下載wordpress
[root@web01 code]# wget https://wordpress.org/latest.tar.gz
# 2.解壓
[root@web01 code]# tar xf latest.tar.gz
# 3.遞迴修改wordpress檔案許可權
[root@web01 code]# chown -R www.www /code/wordpress
# 4.編寫wordpress的nginx配置檔案
[root@web01 code]# vim /etc/nginx/conf.d/blog.conf
server {
listen 80;
server_name localhost;
root /code/wordpress;
location / {
index index.php index.html;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
# 5.連線到MySQL中,建立一個給wordpress使用的庫
[root@web01 wordpress]# mysql -uroot -p123
### 建立資料庫 庫名wp 字符集是utf8
MariaDB [(none)]> create database wp charset utf8;
### 檢視有幾個庫
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| wp |
+--------------------+
5 rows in set (0.00 sec)
# 6.開啟瀏覽器訪問http://10.0.0.7
(提前需要給/var/lib/nginx 授權 統一許可權 chown www.www -R /var/lib/nginx)