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

webtatic install

使用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

php-fpm version

注意: 如果想更换到php5.67.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 process check

检查套接字

php-fpm在套接字文件下运行,使用以下命令检查。

sudo netstat -pl | grep php-fpm.sock

如果得到“-bash: netstat: command not found”错误,请安装net-tools软件包,如下所示: sudo yum -y install net-tools

php-fpm status check

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

参考链接

results matching ""

    No results matching ""