目錄
- 一.什么是LNMP
- 二.LNMP環境搭建
- 1.Nginx的搭建
- 2.安裝php
- 3.安裝數據庫
- 4.測試Nginx與PHP的連接
- 5.測試PHP連接數據庫
一.什么是LNMP
LNMP是一套技術的組合,L=linux,N=nginx,M=mysql,P=php
首先Nginx服務是不能處理動態資源請求,那么當用戶發起動態請求時, Nginx又是如何進行處理的?
-
nginx僅支持解析html文件;圖片傳輸;視頻傳輸;不支持 php、python、java等腳本文件,因此php,python都是nginx通過fastcgi,uwcgi協議來轉發的,java這是通過tomcat
-
當用戶發起http請求,請求會被Nginx處理。
-
如果是靜態資源請求Nginx則直接返回,
-
如果是動態請求Nginx則通過fastcgi協議轉交給后端的PHP程序處理
-
如果這個動態請求要讀取數據庫,那么php就會繼續向后請求mysql數據庫讀取需要的數據
Nginx與Fast-cgi詳細工作流程
二.LNMP環境搭建
1.Nginx的搭建
# 安裝Nginx
[root@tdm ~]# yum -y install nginx # 開機自啟
[root@tdm ~]# systemctl start nginx
[root@tdm ~]# systemctl enable nginx
2.安裝php
# 檢查是否安裝過,有的話卸載
[root@tdm ~]# rpm -qa|grep php# 配置php yum源
[root@tdm /etc/yum.repos.d]# vim /etc/yum.repos.d/php.repo
[php-webtatic]
name = PHP Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64/
gpgcheck = 0# 生成緩存
yum repolist#安裝php
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#修改php配置,統一使用nginx用戶,與nginx用戶一致# 啟動php-fpm
systemctl start php-fpm
systemctl enable php-fpm# 檢查進程和端口
ps -ef | grep '[p]hp-fpm'netstat -lntup |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 7818/php-fpm: maste
3.安裝數據庫
# 安裝mariadb
yum install -y mariadb-server# 啟動并加入開機自啟
systemctl start mariadb
systemctl enable mariadb# 檢查MySQL端口和進程
[root@tdm ~]# netstat -lntup | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8143/mysqld
ps -ef | grep '[m]ysqld'# 設置Mariadb密碼123456
[root@web01 ~]# mysqladmin -uroot password '123456'
4.測試Nginx與PHP的連接
# php.conf文件配置
server {listen 80;server_name 182.92.243.89;root /code/php;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; }
}# 創建站點目錄
[root@tdm code]# mkdir php
[root@tdm php]# vim info.php
<?php
phpinfo();
?>
5.測試PHP連接數據庫
# 在/code/php目錄下創建mysql.php文件,填入對應的數據庫IP、用戶名、密碼
vim /code/php/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";
?>
參考:https://zhuanlan.zhihu.com/p/644362162