CentOS7使用yum方式安装和配置php-fpm
目前常用的两种yum方式安装php-fpm,分别是webtatic仓库和remi仓库,在实际的使用中选择一种即可。
下面以安装 PHP 7.1 为例。
使用webtatic仓库安装PHP
安装webstatic仓库
在CentOS基础库中不存在PHP 7.1,我们需要从名为webtatic的第三方仓库中安装它。
使用如下rpm命令安装webtatic仓库。
sudo yum install -y epel-release
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
如果执行上面的命令一直报错
curl: (35) Encountered end of file,可以尝试将上面的https协议改成http协议获取rpm源。
其他版本下载可以查看这里:webtatic仓库
检查webstatic仓库安装结果
使用下面的命令可以查看webstatic仓库是否安装成功。
sudo yum repolist

使用yum命令安装php-fpm
yum install -y php71w php71w-gd php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zip
执行完上面的命令后,CentOS系统上已经安装了PHP 7.1。
检查php-fpm是否安装成功
php -v

注意: 如果想更换到
php5.6或7.0版本, 直接把上面的php71w换成php56w或者php70w就可以了。 重装php-fpm时,记得使用sudo systemctl stop php-fpm先关闭php-fpm进程,然后再使用yum uninstall php71w php71w-curl php71w-common php71w-cli php71w-mysql php71w-mbstring php71w-fpm php71w-xml php71w-pdo php71w-zip命令进行移除后,并再次执行yum install命令进行重装。
使用remi仓库
sudo wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm
sudo yum install -y yum-utils
sudo yum-config-manager --enable remi-php71
sudo yum install -y php71
sudo yum install -y php php-mcrypt php-xml php-mbstring php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinf php-fpm
如果执行上面的命令提示:
-bash: wget: command not found,则使用sudo yum install -y wget安装一下wget命令。
配置php-fpm
注意: 在配置中修改的用户和用户组会设置成跟web服务器的保持一致即可。
如果不存在web服务器,可以使用nobody替代。
修改 php.ini
通过使用vim编辑配置文件php.ini来配置PHP,默认的主配置文件存放位置在/etc/php.ini。
在文件中找如如下行,取消它的行注释并将值更改为0。
cgi.fix_pathinfo=0
修改完成后,保存文件并退出编辑器。
修改www.conf
现在编辑php-fpm文件/etc/php-fpm.d/www.conf。
- php-fpm将在用户和组- nginx下运行,将下面两行的值更改为- nginx,这里用户和用户组请保持与- Nginx服务器的用户和用户组一致。- user = nginx group = nginx
- php-fpm将在套接字文件下运行,而不是使用服务器端口,将- listen值更改为路径- /run/php-fpm/php-fpm.sock。- listen = /run/php-fpm/php-fpm.sock
- 套接字文件所有者将是 - nginx用户,这里用户和用户组请保持与- Nginx服务器的用户和用户组一致。权限模式为- 660,取消注释并更改所有值。- listen.owner = nginx listen.group = nginx listen.mode = 0660
- 对于环境变量,取消注释这些行并设置值。 - env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
系统守护进程方式启动php-fpm
执行下面的命令启动php-fpm并使其在CentOS系统启动时运行。
sudo systemctl start php-fpm && sudo systemctl enable php-fpm
使用supervisord管理进程
supervisord的进程管理参考这里。
修改php-fpm在前台运行
- 使用 - sed命令进行修改- sed -i 's/^daemonize = yes/daemonize = no/g' /etc/php-fpm.conf
- 检查php-fpm配置 - grep daemonize /etc/php-fpm.conf- 输出: - daemonize = no即表示设置成功。
php-fpm的supervisord配置文件
默认的 supervisord 的进程文件保存在/etc/supervisord.d/php.ini,内容如下:
[program:php]
command=/sbin/php-fpm
user=root
autostart=true
autorestart = true
stdout_logfile=/var/log/php.out.log
stderr_logfile=/var/log/php.err.log
重载配置
supervisorctl reread && supervisorctl update
执行完上面的命令,可以看到控制台会输出如下结果
php: available
php: added process group
如果在启动
php-fpm的时候,报错ERROR: unable to bind listening socket for address '/run/php-fpm/php-fpm.sock': No such file or directory (2)。 使用命令mkdir -pv /run/php-fpm/手动创建目录。
至此使用 supervisord 管理php-fpm进程已经完成。
检查php-fpm
检查进程
检查系统进程使用ps命令。
ps aux |grep php-fpm

检查套接字
php-fpm在套接字文件下运行,使用以下命令检查。
sudo netstat -pl | grep php-fpm.sock
如果得到
“-bash: netstat: command not found”错误,请安装net-tools软件包,如下所示:sudo yum -y install net-tools

至此,CentOS下安装php-fpm就安装好了。