LNMP就是
Linux作為服務器的操作系統(tǒng)
Nginx作為Web服務器
PHP作為解析動態(tài)腳本語言
MySQL即為數(shù)據(jù)庫
Nginx服務本身不能處理PHP的請求,那么當用戶發(fā)起PHP動態(tài)請求, Nginx又是如何進行處理的。
有兩種方法:
1.將PHP頁面的解析請求轉發(fā)給Apache處理
2.將PHP頁面的解析請求轉發(fā)給php-fpm模塊
用戶–>http協(xié)議–>Nginx–>fastcgi–>php-fpm
1.用戶通過http協(xié)議發(fā)起請求,請求會先抵達LNMP架構中的Nginx
2.Nginx會根據(jù)用戶的請求進行判斷,這個判斷是有Location進行完成
3.判斷用戶請求的是靜態(tài)頁面,Nginx直接進行處理
4.判斷用戶請求的是動態(tài)頁面,Nginx會將該請求交給fastcgi下發(fā)
5.fastgi會將請求交給php-fpm管理進程, php-fpm管理進程接收到后會調用具體的工作線程wrapper
6.wrapper線程會調用php進行解析,如果只是解析代碼php直接返回
7.如果有查詢數(shù)據(jù)庫操作,則由php連接數(shù)據(jù)庫(用戶 密碼 IP)然后發(fā)起查詢的操作
8.最終數(shù)據(jù)由mysql->php->php-fpm->fastcgi->nginx->http->user
下面開始實踐:
這里使用的軟件版本為:Nginx 1.16 MySQL 5.6 PHP 7.1
一.N
首先安裝nginx服務
yum install nginx -y
第二步:設置開機自啟
systemctl start nginx
systemctl enable nginx
二.M
1.下載MySQL官方擴展源
[root@nginx ~]# rpm -ivh http://repo.mysql.com/yum/mysql-5.6-community/el/7/x86_64/mysql-community-release-el7-5.noarch.rpm
2.安裝
yum install mysql-community-server -y
3.啟動數(shù)據(jù)庫, 并加入開機自啟動
[root@nginx ~]# systemctl start mysqld
[root@nginx ~]# systemctl enable mysqld
4.登錄數(shù)據(jù)庫和重置數(shù)據(jù)庫密碼
[root@web01 ~]# mysql -u root
……
mysql>
mysql> exit
###5.6默認無密碼
###為了安全,必須給root設置密碼
[root@nginx ~]# mysqladmin -u root password 123456
如果已經(jīng)有密碼,再次修改
[root@web01 ~]# mysqladmin -u root -p123456 password 123321
6.使用密碼登陸mysql
[root@web01 ~]# mysql -u root -p123321
…
mysql>
###此步為檢查密碼
三.P
1.移除舊版php(之前有通過Base或epel庫安裝過php的,必須執(zhí)行這個操作)
yum remove php-mysql-5.4 php php-fpm php-common
2.安裝擴展源
[root@nginx ~]# yum localinstall -y http://mirror.webtatic.com/yum/el7/webtatic-release.rpm
<=====自己做了rpm包,所以yum localinstall安裝
3.安裝php7.1版本
[root@nginx ~]# 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
yum localinstall -y *.rpm
進入/etc/yum.repos.d/
vim webtatic.repo
4.啟動php-fpm管理進程, 并加入開機自啟
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm
四:組合
驗證Nginx是否能正常解析php動態(tài)請求,以及php程序能否正常連接數(shù)據(jù)庫
1.創(chuàng)建一個測試站點
[root@nginx /application/nginx/conf/extra]# cat /application/nginx/conf/extraphp.conf
server {
server_name www.oldboy.com;
listen 80;
root html/php;
index index.php index.html;
location ~ \.php$ {
root html/php;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
###這里目錄都為yum安裝后的目錄(僅供參考)
2.新增info.php, 測試php解析是否工作正常
[root@web01 ~]# cat /application/nginx/html/php/index.php
<?php
phpinfo();
?>
3.測試php是否能連接mysql數(shù)據(jù)庫服務[無論是本地數(shù)據(jù)庫還是遠程數(shù)據(jù)庫,測試方式一致
[root@web01 ~]# cat /code/mysqli.php
<?php
$servername = "localhost";
$username = "*********"; #####用戶名
$password = "*********"; #####用戶密碼
// 創(chuàng)建連接
$conn = mysqli_connect($servername, $username, $password);
// 檢測連接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "連接成功";
?>
五:部署博客(wordpress)
1.配置Nginx虛擬主機站點,域名為blog.zyl666.com
[root@web01 conf]# cat blog.conf
server {
listen 80;
server_name blog.zyl666.com;
root conf/wordpress;
index index.php index.html;
location ~ \.php$ {
root conf/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
2.獲得wordpress源碼
wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
3.解壓網(wǎng)站源碼文件,拷貝至對應站點目錄,并授權站點目錄
[root@nginx tools]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@nginx tools]# mv wordpress /application/nginx/conf/
4.重載nginx和php-fpm
systemctl reload nginx php-fpm
5.由于wordpress產品需要依賴數(shù)據(jù)庫, 所以需要手動建立數(shù)據(jù)庫
[root@web01 conf]# mysql -u root -p******* <====這里的密碼為自己那會設置的密碼
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
wordpress進去后會提示讓你創(chuàng)一個文件里面鍵入內容,直接把提示的內容放進去就可以,如果想上傳圖片,需要給wordpress底下的目錄wp-content提權
附贈本人結果圖片:
