LNMP就是
Linux作為服務(wù)器的操作系統(tǒng)
Nginx作為Web服務(wù)器
PHP作為解析動(dòng)態(tài)腳本語(yǔ)言
MySQL即為數(shù)據(jù)庫(kù)
Nginx服務(wù)本身不能處理PHP的請(qǐng)求酌儒,那么當(dāng)用戶發(fā)起PHP動(dòng)態(tài)請(qǐng)求, Nginx又是如何進(jìn)行處理的。
有兩種方法:
1.將PHP頁(yè)面的解析請(qǐng)求轉(zhuǎn)發(fā)給Apache處理
2.將PHP頁(yè)面的解析請(qǐng)求轉(zhuǎn)發(fā)給php-fpm模塊
用戶–>http協(xié)議–>Nginx–>fastcgi–>php-fpm
1.用戶通過(guò)http協(xié)議發(fā)起請(qǐng)求,請(qǐng)求會(huì)先抵達(dá)LNMP架構(gòu)中的Nginx
2.Nginx會(huì)根據(jù)用戶的請(qǐng)求進(jìn)行判斷,這個(gè)判斷是有Location進(jìn)行完成
3.判斷用戶請(qǐng)求的是靜態(tài)頁(yè)面粥诫,Nginx直接進(jìn)行處理
4.判斷用戶請(qǐng)求的是動(dòng)態(tài)頁(yè)面,Nginx會(huì)將該請(qǐng)求交給fastcgi下發(fā)
5.fastgi會(huì)將請(qǐng)求交給php-fpm管理進(jìn)程, php-fpm管理進(jìn)程接收到后會(huì)調(diào)用具體的工作線程wrapper
6.wrapper線程會(huì)調(diào)用php進(jìn)行解析,如果只是解析代碼php直接返回
7.如果有查詢數(shù)據(jù)庫(kù)操作崭庸,則由php連接數(shù)據(jù)庫(kù)(用戶 密碼 IP)然后發(fā)起查詢的操作
8.最終數(shù)據(jù)由mysql->php->php-fpm->fastcgi->nginx->http->user
下面開(kāi)始實(shí)踐:
這里使用的軟件版本為:Nginx 1.16 MySQL 5.6 PHP 7.1
一.N
首先安裝nginx服務(wù)
yum install nginx -y
第二步:設(shè)置開(kāi)機(jī)自啟
systemctl start nginx
systemctl enable nginx
二.M
1.下載MySQL官方擴(kuò)展源
[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.啟動(dòng)數(shù)據(jù)庫(kù), 并加入開(kāi)機(jī)自啟動(dòng)
[root@nginx ~]# systemctl start mysqld
[root@nginx ~]# systemctl enable mysqld
4.登錄數(shù)據(jù)庫(kù)和重置數(shù)據(jù)庫(kù)密碼
[root@web01 ~]# mysql -u root
……
mysql>
mysql> exit
###5.6默認(rèn)無(wú)密碼
###為了安全怀浆,必須給root設(shè)置密碼
[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(之前有通過(guò)Base或epel庫(kù)安裝過(guò)php的怕享,必須執(zhí)行這個(gè)操作)
yum remove php-mysql-5.4 php php-fpm php-common
2.安裝擴(kuò)展源
[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
進(jìn)入/etc/yum.repos.d/
vim webtatic.repo
4.啟動(dòng)php-fpm管理進(jìn)程, 并加入開(kāi)機(jī)自啟
[root@nginx ~]# systemctl start php-fpm
[root@nginx ~]# systemctl enable php-fpm
四:組合
驗(yàn)證Nginx是否能正常解析php動(dòng)態(tài)請(qǐng)求,以及php程序能否正常連接數(shù)據(jù)庫(kù)
1.創(chuàng)建一個(gè)測(cè)試站點(diǎn)
[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, 測(cè)試php解析是否工作正常
[root@web01 ~]# cat /application/nginx/html/php/index.php
<?php
phpinfo();
?>
3.測(cè)試php是否能連接mysql數(shù)據(jù)庫(kù)服務(wù)[無(wú)論是本地?cái)?shù)據(jù)庫(kù)還是遠(yuǎn)程數(shù)據(jù)庫(kù),測(cè)試方式一致
[root@web01 ~]# cat /code/mysqli.php
<?php
$servername = "localhost";
$username = "*********"; #####用戶名
$password = "*********"; #####用戶密碼
// 創(chuàng)建連接
$conn = mysqli_connect($servername, $username, $password);
// 檢測(cè)連接
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "連接成功";
?>
五:部署博客(wordpress)
1.配置Nginx虛擬主機(jī)站點(diǎn)函筋,域名為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)站源碼文件,拷貝至對(duì)應(yīng)站點(diǎn)目錄,并授權(quán)站點(diǎn)目錄
[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產(chǎn)品需要依賴數(shù)據(jù)庫(kù), 所以需要手動(dòng)建立數(shù)據(jù)庫(kù)
[root@web01 conf]# mysql -u root -p******* <====這里的密碼為自己那會(huì)設(shè)置的密碼
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
wordpress進(jìn)去后會(huì)提示讓你創(chuàng)一個(gè)文件里面鍵入內(nèi)容沙合,直接把提示的內(nèi)容放進(jìn)去就可以,如果想上傳圖片驻呐,需要給wordpress底下的目錄wp-content提權(quán)
附贈(zèng)本人結(jié)果圖片: