linux進階-怎樣以php-fpm模式實現LAMP架構

php-fpm 模式實現 LAMP

fastcgi模式介紹

  • fastcgi模式下php以獨立程序狀態運行,有獨立的進程、端口號

  • php-fpm軟件包:專用於將php運行於fastcgi模式,與php軟件包不能夠同時安裝

  • httpd2.4支持fastcgi模式,httpd2.2不支持該模式,故CentOS 6環境需要編譯httpd2.4才能使用fastcgi模式

安裝php-fpm

  • CentOS 7 安裝php-fpm
  • BASE源安裝PHP-FPM
yum install php-fpm
  • 清華大學yum源安裝較新版的PHP-FPM(依賴EPEL源)
yum install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-
7.rpm

//安裝php-fpm5.6版
yum install php56-php-fpm php56-php-mysql

//安裝php-fpm7.3版
yum install php73-php-fpm php73-php-mysql

配置php-fpm

  • 查看php-fpm所對應的配置文件
rpm -ql php-fpm
/usr/lib/systemd/system/php-fpm.service
/etc/logrotate.d/php-fpm
/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
/run/php-fpm
  • php-fpm 主要配置文件:

    • /etc/php-fpm.conf
    • /etc/php-fpm.d/*.conf
  • 官方文檔:http://php.net/manual/zh/install.fpm.configuration.php

  • PHP-FPM常見配置

    • daemonize = no //是否將程序運行在後臺
    • listen = 127.0.0.1:9000 //FPM 監聽地址
    • listen = /var/run/php.sock //UDF模式使用,指定生成的unix socket文件的路徑
    • listen.owner = apache //UDF模式使用,指定生成的unix socket文件的所有者
    • listen.group = apache //UDF模式使用,指定生成的unix socket文件的所屬組
    • listen.mode= 0666 //UDF模式使用,,指定生成的unix socket文件的權限
    • listen.acl_users = apache,nginx //指定用戶訪問unix socket文件,listen.owner 和 listen.group將無效
    • listen.backlog = -1 //等待隊列的長度 -1表示無限制
    • listen.allowed_clients = 127.0.0.1 //僅允許哪些主機訪問
    • pm = dynamic|static //static 固定數量的子進程, //dynamic子進程數據以動態模式管理
    • pm.max_childen //static 固定數量的子進程
    • pm.start_servers
    • pm.min_spare_servers
    • pm.max_spare_servers
    • pm.max_requests = 500
    • php_value[session.save_handler] = files
    • php_value[session.save_path] = /var/lib/php/session //設置session存放位置
  • session目錄

    • 確保運行php-fpm進程的用戶對session目錄有讀寫權限
    • mkdir /var/lib/php/session chown apache.apache /var/lib/php/session
  • 啓動PHP-FPM systemctl start php-fpm

範例:php-fpm配置生產案例

cat /etc/php-fpm.d/www.conf
[www]
listen = 127.0.0.1:9000 #監聽地址及IP
listen.allowed_clients = 127.0.0.1 #允許客戶端從哪個源IP地址訪問,要允許所有行首加 ;注
釋即可
user = apache #php-fpm啓動的用戶和組,會涉及到後期文件的權限問題
group = apache
pm = dynamic #動態模式進程管理
pm.max_children = 500 #靜態方式下開啓的php-fpm進程數量,在動態方式下他限定php-fpm的最大
進程數
pm.start_servers = 100 #動態模式下初始進程數,必須大於等於pm.min_spare_servers和小於等
於pm.max_children的值。
pm.min_spare_servers = 100 #最小空閒進程數
pm.max_spare_servers = 200 #最大空閒進程數
pm.max_requests = 500000 #進程累計請求回收值,會重啓
pm.status_path = /pm_status #狀態訪問URL
ping.path = /ping #ping訪問動地址
ping.response = ping-pong #ping返回值
slowlog = /var/log/php-fpm/www-slow.log #慢日誌路徑
php_admin_value[error_log] = /var/log/php-fpm/www-error.log #錯誤日誌
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files #phpsession保存方式及路徑
php_value[session.save_path] = /var/lib/php/session #當時使用file保存session的文件
路徑

httpd、fastcgi、maridb分別在不同服務器時,以php-fpm模式實現LANMP

注意:在HTTPD服務器上必須啓用proxy_fcgi_module模塊,才能充當php-fpm客戶端

httpd-192.168.26.18

//安裝httpd服務
dnf -y install httpd

//httpd想要支持fastcgi,就必須有支持fastcgi的模塊如下
proxy_fcgi_module

//proxy_fcgi_module模塊是由這個文件加載實現的(安裝httpd後默認就有了)
cat /etc/httpd/conf.modules.d/00-proxy.conf

#想讓apache支持處理php基於fastcgi,要指定apache收到php指令後轉發至目標服務器上去
//新建編輯httpd的子配置文件
vim /etc/httpd/conf.d/fcgi.conf

//httpd子配置文件內容如下
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.26.28:9000/var/www/html/$1
#以上開啓FCGI反向代理,“^/”這處的”/“相對於後面的/var/www/html而言,後面的$1是指前面的/(.*.php)

//啓動服務
systemctl start httpd.service

fastcgi-192.168.26.28

//安裝fastcgi服務
dnf -y install php-fpm php-mysqlnd

//修改php-fpm配置文件
vim /etc/php-fpm.d/www.conf
-------------------------------------------
;listen = /run/php-fpm/www.sock   #註釋這行
listen = 127.0.0.1:9000   #添加一行,內容如此
---------------------------------------------
;listen.allowed_clients = 127.0.0.1   #註釋這行
----------------------------------------------

//查看端口,9000端口已開放
ss -ntl

//創建測試文件
vim /var/www/html/test.php

//測試文件內容爲
<?php
phpinfo();
?>
  • 瀏覽器訪問192.168.26.18/test.php測試頁面跳轉出來了
  • 但測試文件實際存儲在192.168.26.28:/var/www/html/路徑下

在這裏插入圖片描述

在這裏插入圖片描述

//使用rz命令將下載的wordpress5.2版本傳進虛擬機
wordpress-5.2.4-zh_CN.tar.gz

//解包到指定目錄下
tar xf wordpress-5.2.4-zh_CN.tar.gz -C /var/www/html/

//修改wordpress目錄權限
chown -R apache.apache /var/www/html/wordpress

//
  • 瀏覽器訪問192.168.26.18/wordpress/index.php/

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

//修改192.168.26.18:/etc/httpd/conf.d/fcgi.conf的子配置文件

//內容爲
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.26.28:9000/var/www/html/wordpress/$1
  • 瀏覽器訪問192.168.26.18

在這裏插入圖片描述

mariadb-192.168.26.38

//安裝mariadb數據庫服務
dnf -y install mariadb-server

//啓動服務
systemctl start mariadb.service 

//進入數據庫
mysql

//創建數據庫
CREATE DATABASE wordpress;

//創建用戶授予權限(地址的話要寫地址段,因爲要跨網路)
GRANT ALL ON wordpress.* TO wordpress@'192.168.26.%' IDENTIFIED BY 'wordpress';

Centos 7 利用yum安裝基於PHP-FPM模式的LAMP

百度清華大學yum源
選擇remi源列表下的:

[維護的企業Linux(RHEL / CentOS /其他克隆)]
Enterprise Linux 8-存儲庫自動配置軟件包: remi-release-8.rpm
Enterprise Linux 7-存儲庫自動配置軟件包: remi-release-7.rpm   #選擇這項右擊複製鏈接地址
Enterprise Linux 6-存儲庫自動配置軟件包: remi-release-6.rpm 
------------------------------------------------------------------------------------
//配置清華php源
yum -y install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm

//安裝相關服務
yum -y install mariadb-server php-mysqlnd

//啓動服務
systemctl start httpd.service php-fpm

//創建實驗所需目錄
mkdir /data/{a,b,c}

//創建實驗所需頁面文件
----------------------------------------------
vim /data/a/a.php

//文件內容爲
<?php
echo "<h1><center>www.a.com</center></h1>";
echo "<h2><center>www.a.com</center></h2>";
echo "<h3><center>www.a.com</center></h3>";
echo "<h4><center>www.a.com</center></h4>";
echo "<h5><center>www.a.com</center></h5>";
echo "<h6><center>www.a.com</center></h6>";
?>
------------------------------------------------
vim /data/b/b.php

//文件內容爲
<?php
echo "<h1><center>www.b.com</center></h1>";
echo "<h2><center>www.b.com</center></h2>";
echo "<h3><center>www.b.com</center></h3>";
echo "<h4><center>www.b.com</center></h4>";
echo "<h5><center>www.b.com</center></h5>";
echo "<h6><center>www.b.com</center></h6>";
?>
------------------------------------------------
vim /data/c/c.php

//文件內容爲
<?php
echo "<h1><center>www.c.com</center></h1>";
echo "<h2><center>www.c.com</center></h2>";
echo "<h3><center>www.c.com</center></h3>";
echo "<h4><center>www.c.com</center></h4>";
echo "<h5><center>www.c.com</center></h5>";
echo "<h6><center>www.c.com</center></h6>";
?>
------------------------------------------------

//新建編輯配置文件
vim /etc/httpd/conf.d/test.conf

//文件內容爲
listen 8001
listen 8002
listen 8003
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/((.*)\.php)$ fcgi://127.0.0.1:9000/data/$2/$1

<virtualhost *:8001>
documentroot /data/a/
<directory /data/a/>
require all granted
</directory>
</virtualhost>

<virtualhost *:8002>
documentroot /data/b/
<directory /data/b/>
require all granted
</directory>
</virtualhost>

<virtualhost *:8003>
documentroot /data/c/
<directory /data/c/>
require all granted
</directory>
</virtualhost>
-----------------------------------------------------------------

//重啓服務
systemctl restart httpd.service
  • 瀏覽器訪問192.168.26.27:8001/a.php得

在這裏插入圖片描述

  • 瀏覽器訪問192.168.26.27:8001/b.php得

在這裏插入圖片描述

  • 瀏覽器訪問192.168.26.27:8001/b.php得

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章