本文基于源码安装PHP讲解,不明白可以先看上节内容

启用PHP-FPM

PHP源码包中本身包含PHP-FPM相关文件我们只要简单配置即可使用
首先进入源码包执行配置,重新编译 在原来配置香添加 –enable-fpm 即可
命令:./configure –prefix=/usr/local/etc/php –with-config-file-path=/usr/local/etc/php/etc –enable-fpm
命令 ./configure –help 可以查看所有配置选项
如果你忘记之前配置过哪些选项可以查看源码包中 config.nice
命令 cat config.nice
这个文件记载的是之前配置项及配置内容
配置完成后执行编译命令:make&&make install

配置PHP-FPM

安装成功切换之PHP安装配置目录: cd /usr/local/etc/php/etc
ls -l 查看 会发现新增了PHP-FPM 配置文件夹和配置文件

修改该配置文件:cp php-fpm.conf.default php-fpm.conf
编辑配置文件:vim php-fpm.conf
将 pid = run/php-fpm.pid 此项注释打开 前面分号去掉即可

进入子配置文件夹:cd php-fpm.d
拷贝一份修改:cp www.conf.default www.conf
添加执行的用户:vim www.conf
user =www-data
group=www-data
这里可以填写你自己设置的web用户,用户组,没有也可以创建
查看所有组:cat /etc/group
创建用户组 :groupadd web
查看所用用户:cat /etc/passwd
创建用户:useradd www -d /var/www/ -g web
-d 用户祝目录 -g 所属组
设置密码:passwd www //回车会让你输入两次密码

启动

找到你PHP安装目录的sbin目录执行下面命令
以我的安装目录为例:/usr/local/etc/php/sbin/php-fpm
如果没有错误弹出,即可进行下一步配置,错误请百度搜索,大部分为用户配置错误更改正确用户配置即可

测试

在你的web目录创建PHP探针页面:
cd /var/www/html
vim index.php
其内容如下:
<?php
echo phpinfo();
保存退出

nginx配置

配置完成重启nginx
打开浏览器输入你绑定的域名,或者ip:80正常显示PHP信息则证明安装成功

扩展

PHP-FPM tcp socket 与 unix socket

转自:https://www.cnblogs.com/creazylinux/p/7723245.html

tcp socket

允许通过网络进程之间的通信,也可以通过loopback进行本地进程之间通信。

unix socket

允许在本地运行的进程之间进行通信。

分析

unix socket减少了不必要的tcp开销,而tcp需要经过loopback,还要申请临时端口和tcp相关资源。但是,unix socket高并发时候不稳定,连接数爆发时,会产生大量的长时缓存,在没有面向连接协议的支撑下,大数据包可能会直接出错不返回异常。tcp这样的面向连接的协议,多少可以保证通信的正确性和完整性。

我的选择

如果是在同一台服务器上运行的nginx和php-fpm,并发量不超过1000,选择unix socket,因为是本地,可以避免一些检查操作(路由等),因此更快,更轻。
如果我面临高并发业务,我会选择使用更可靠的tcp socket,以负载均衡、内核优化等运维手段维持效率。

nginx和php-fpm 使用unix socket

将sock文件放在/dev/shm目录下,使用的内存读写更快。

php-fpm 配置

nginx server块配置

提高nginx和php-fpm使用的 unix socket稳定性(单机能力有限)

1.修改内核参数

2.提高backlog
backlog默认位128,1024这个值最好换算成自己正常的QPS。

3.增加sock文件和php-fpm实例
在/dev/shm新建一个sock文件,在nginx中通过upstream将请求负载均衡到两个sock文件,
并且将两个sock文件分别对应到两套php-fpm实例上。

优化

加入开机启动

vim /etc/rc.local
添加:/usr/local/etc/php/sbin/php-fpm
没有如果没有rc.local 文件:

 ubuntu 18.04 不再使用 inited 管理系统,改用 systemd 

       虽然是进步,但很多人(包括我)还是喜欢用原本简单方便的 rc.local 作为系统启动脚本

       systemd 里面有个 rc-local.service 文件,里面有写到 rc.local 的启动顺序和行为,但是没用写加载这个 rc-local.service 。也就是说我们需要给它写上这个。

sudo vim /etc/systemd/system/rc-local.service
在文件后加上如下内容:

[Install]
WantedBy=multi-user.target
Alias=rc-local.service
或者直接用一行命令把内容写进去:

sudo echo “
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
” >> etc/systemd/system/rc-local.service

 接下来就创建属于我们的 /etc/rc.local bash 脚本吧

sudo touch /etc/rc.local
chmod 755 /etc/rc.local
写入 bash 脚本执行的编译器

sudo echo “#!/bin/bash” > /etc/rc.local
到此为止,和以前一样的 rc.local 就完成了!
————————————————
版权声明:本文为CSDN博主「三生锁链」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a912952381/java/article/details/81205095

PHP—FPM 常用命令

在安装PHP拓展或者修改配置后需要重启使之生效,我们可以使用信号优雅启动

启动:
/usr/local/etc/php/sbin/php-fpm
关闭:
命令 信号 php-fpm.pid文件位置
kill -INT cat /usr/local/etc/php/var/run/php-fpm.pid
重启
kill -USR2 cat /usr/local/etc/php/var/run/php-fpm.pid
平滑终止:
kill -QUIT cat /usr/local/etc/php/var/run/php-fpm.pid

最后修改日期:2020-05-11

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。