1. 程式人生 > 其它 >Web進階LNMP網站部署

Web進階LNMP網站部署

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)