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得

在这里插入图片描述

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