一、LNMP 1.使用LNMP的優點: 資源占用少 更多併發 代理伺服器 熱啟動 穩定高效 負載均衡 郵件伺服器 2、安裝前準備: 2.1查看防火牆(預設開啟): 2.2關閉防火牆: 2.2.1或者開啟某埠號 3、YUM安裝與相關配置: 3.1配置Nginx倉庫 在官方源找到的.Repo包幫助,寫 ...
一、LNMP
1.使用LNMP的優點:
- 資源占用少
- 更多併發
- 代理伺服器
- 熱啟動
- 穩定高效
- 負載均衡
- 郵件伺服器
2、安裝前準備:
2.1查看防火牆(預設開啟):
[root@localhost ~]# systemctl status firewalld
2.2關閉防火牆:
[root@localhost ~]# systemctl stop firewalld.service #停止firewall服務
[root@localhost ~]# systemctl disable firewalld.service #禁止開機自啟動
2.2.1或者開啟某埠號
#安裝完nginx之後再修改
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf
> listen 81; #修改80埠為81,按自己需求。
[root@localhost ~]# systemctl restart nginx #重啟nginx
[root@localhost ~]# firewall-cmd --add-port=81/tcp #臨時開啟81埠
[root@localhost ~]# firewall-cmd --permanent --add-port=81/tcp #永久添加81埠
[root@localhost ~]# firewall-cmd --reload #重啟防火牆
3、YUM安裝與相關配置:
3.1配置Nginx倉庫
[root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
在官方源找到的.Repo包幫助,寫入Nginx.repo中:
# /etc/yum.repos.d/nginx.repo
# Date 2019_7_14
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
安裝步驟:
[root@localhost ~]# yum update #更新源倉庫
[root@localhost ~]# yum install -y nginx #安裝nginx
[root@localhost ~]# systemctl start nginx #開啟nginx服務
[root@localhost ~]# systemctl enable nginx #開機自啟
[root@localhost ~]# nginx -t #測試命令
[root@localhost ~]# nginx -s reload #當修改nginx.conf後的重載
3.2安裝php-fpm
在安裝php-fpm之前首先瞭解一下什麼是CGI(Common Gateway Interface)。
- cgi:它是一種協議。通過cgi協議,web server可以將動態請求和相關參數發送給專門處理動態內容的應用程式。
- fastcgi:也是一種協議,只不過是cgi的優化版。cgi的性能較差,fastcgi則在其基礎上進行了改進。
- php-cgi:fastcgi是一種協議,而php-cgi實現了這種協議。不過這種實現比較爛。它是單進程的,一個進程處理一個請求,處理結束後進程就銷毀。
php-cgi工作流程(單進程):
- php-fpm:是對php-cgi的改進版,它直接管理多個php-cgi進程/線程。也就是說,php-fpm是php-cgi的進程管理器因此它也算是fastcgi協議的實現。在一定程度上講,php-fpm與php的關係,和tomcat對java的關係是類似的。
php-fpm轉發過程圖解
總結:web server和CGI的交互模式
- cgi模式:httpd接收到一個動態請求就fork一個cgi進程,cgi進程返回結果給httpd進程後自我銷毀。
- 動態模塊模式(同一伺服器中):將php-cgi的模塊(例如php5_module)編譯進httpd。在httpd啟動時會載入模塊,載入時也將對應的模塊激活,php-cgi也就啟動了。
php-fpm模式(不在伺服器中,可獨立成某一httpd模塊):使用php-fpm管理php-cgi,此時httpd不再控制php-cgi進程的啟動。可以將php-fpm獨立運行在非web伺服器上,實現所謂的動靜分離。使用php-fpm管理php-cgi,此時httpd不再控制php-cgi進程的啟動。可以將php-fpm獨立運行在非web伺服器上,實現所謂的動靜分離。
這裡使用yum安裝 php-fpm
[root@localhost ~] yum install -y php-fpm
3.3配置PHP文件
[root@localhost ~]# find / -name html #找到nginx下的html目錄
[root@localhost ~]# vim /usr/share/nginx/html/index.php #編輯php訪問頁面
>
# /usr/share/nginx/html/index.php
# PHP頁面測試配置
<?php
phpinfo();
?>
3.4配置文件識別到PHP
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf
>找到以下位置,並啟用
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html/$fastcgi_script_name;# 修改路徑
include fastcgi_params;
}
[root@localhost ~]# nginx -s reload # 重啟
記一次伺服器nginx配置問題:(the page you are looking for is currently unavailable)
1.php-fpm 未正常啟動
[root@localhost ~]# ps -ef |grep 9000 #查看php-fpm服務是否開啟
[root@localhost ~]# systemctl restart php-fpm
[root@localhost ~]# systemctl restart nginx
2.nginx啟動埠修改為81埠:
在瀏覽器中打開 192.168.110.128:81/index.php
3.更改php路徑
[root@localhost ~]# vim /etc/nginx/conf.d/default.conf
# 找到 pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# 修改相關配置
location ~ \.php$ {
root /usr/share/nginx/html;#修改為絕對路徑
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;#修改為$document或絕對路徑
include fastcgi_params;
}
4、安裝mariadb(mysql)
[root@localhost ~]# yum install -y mariadb mariadb-server
[root@localhost ~]# systemctl start mariadb.service #啟動MariaDB
[root@localhost ~]# systemctl stop mariadb.service #停止MariaDB
[root@localhost ~]# systemctl restart mariadb.service #重啟MariaDB
[root@localhost ~]# systemctl enable mariadb.service #設置開機啟動
4.1創建修改密碼(預設無)
[root@localhost ~]# /usr/bin/mysqladmin -u root password 'passwd' #'passwd'為你設置的密碼
[root@localhost ~]# systemctl restart mariadb # 重啟
4.2安裝PHP以及組件,使PHP支持 MariaDB
當遇到依賴包問題,可選
[root@localhost ~]# yum install -y php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-bcmath php-mhash
4.3PHP測試鏈接資料庫
[root@localhost ~]# vim /usr/share/nginx/html/db.php
>#輸入以下測試文件
<?php
$link=mysql_connect("localhost","root","passwd");
if(!$link) echo "Link Error!";
else echo "OK!Link Acces!";
mysql_close();
?>
# 重啟Php-fpm、nginx、mariadb-server
5、遇到的問題,查看日誌
[root@localhost ~]# cat /var/log/nginx/error.log
[root@localhost ~]# cat /var/log/php-fpm/error.log
[root@localhost ~]# cat /var/log/php-fpm/www-error.log