(三) LAMP(模块方式,php-fpm方式,源码编译安装LAMP)架构

一 配置php-fpm实现LAMP

介绍
在这里插入图片描述
httpd+php结合的方式

module: php 只能配合apache

fastcgi : php-fpm 可以配合Apache和nginx

注意 fastcgi只能配合phm-fpm

各种OS版本对fastcgi的支持

CentOS 8: 默认使用fpm模式
 httpd-2.4:默认rpm包支持fcgi模块
   php包默认使用fpm模式
   php-fpm包:专用于将php运行于fpm模式

CentOS 7:
 httpd-2.4:默认rpm包支持fcgi模块
 php-fpm包:专用于将php运行于fpm模式

CentOS 6:
 PHP-5.3.2之前:默认不支持fpm机制;需要自行打补丁并编译安装
 httpd-2.2:默认不支持fcgi协议,需要自行编译此模块
 解决方案:编译安装httpd-2.4, php-5.3.3+

1. 安装php-fpm

CentOS 8 安装php-fpm

dnf -y install php-fpm
#或者
dnf -y install php

CentOS 7 安装php-fpm
BASE源安装PHP-FPM

yum install php-fpm

清华大学yum源安装较新版的PHP-FPM(依赖EPEL源)

#配置yum源
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

2. 配置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文件的路径
注意:Unix Domain Socket (UDS) support added in httpd-2.4.7
http://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass
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 //仅允许哪些WEB主机访问
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的访问日志

vim /etc/php-fpm.d/www.conf
access.log = /var/log/php-fpm/access.log

systemctl restart 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 = /fpm_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的文件路径

3. 配置httpd 支持 fastcgi

在HTTPD服务器上必须启用proxy_fcgi_module模块,才能充当php-fpm客户端

#dnf -y install httpd php-fpm
[root@centos8 ~]#httpd -M |grep fcgi
AH00558: httpd: Could not reliably determine the server's fully qualified domain 
name, using centos8.localdomain. Set the 'ServerName' directive globally to 
suppress this message
proxy_fcgi_module (shared)

创建httpd的配置文件 /etc/httpd/conf.d/fcgi.conf ,内容如下

DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://php-fpm服务器IP:9000/var/www/html/$1
ProxyPassMatch ^/(fpm_status|ping) fcgi://127.0.0.1:9000
#以上开启FCGI反向代理,^/”这处的”/“相对于后面的/var/www/html而言,后面的$1是指前面的/(.*.php)

如果php-fpm和httpd在同一台主机,也可以用 UDS(unix domain socket)方式

ProxyPassMatch ^/(.*\.php)$ 
unix:/var/run/php.sock|fcgi://localhost/app/httpd24/htdocs/$1

虚拟主机配置支持FCGI

vim /etc/httpd/conf.d/vhosts.conf
DirectoryIndex index.php
<VirtualHost *:80>
 ServerName www.magedu.net
 DocumentRoot /apps/vhosts/magedu.net
 ProxyRequests Off
 ProxyPassMatch ^/(.*\.php)$     
fcgi://127.0.0.1:9000/apps/vhosts/magedu.net/$1
 ProxyPassMatch ^/(fpm_status|ping) fcgi://127.0.0.1:9000
 <Directory "/apps/vhosts/magedu.net">
 Options None
 AllowOverride None
 Require all granted
 </Directory>
</VirtualHost>

yum安装基于PHP-FPM模式的LAMP

#安装httpd和php-fpm包
[root@centos7 ~]#yum install httpd php-fpm
#查看Httpd mod_fcgi模块是否加载
httpd -M | grep fcgi
proxy_fcgi_module (shared)
#添加FCGI的配置文件
DirectoryIndex index.php
ProxyRequests off //是否开启正向代理
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1  
ProxyPassMatch ^/(fpm_status|ping) fcgi://127.0.0.1:9000
[root@centos7 ~]#systemctl start httpd php-fpm

yum源实现PHP-FPM的UDS模式

[root@centos7 ~]#yum install https://mirrors.tuna.tsinghua.edu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值