php 升级到7.0,PHP 7.0 升级到 7.3

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth为什么要升级PHP版本

就是这么逗逼,从PHP 5.4升级到7.0之后,WordPress又升了几次版本,让PHP 7.0又成了明日黄花(不是“昨日黄花”啊同志们,成语要用对),虽然7.0还能用,但是每次进WordPress后台看到的“PHP版本太旧”的提示很碍眼,于是我下定决心要把它升级到当前最主流的 7.3 版——本文写作之时,是2020年7月。

以下步骤只适用于CentOS 7系统(具体子版本不确定能支持到什么范围)。

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth 怎样升级PHP版本最方便

这回我就没有那么幸运了,虽然还是可以用yum来安装PHP相关的package,但是安装好之后有很多问题导致不能用,折腾了好些时间才搞定。作为一个完全不用PHP的人,我太难了。

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth确定CentOS版本

cat /etc/redhat-release

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth安装remi的centos7的源

yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

yum -y install epel-release yum-utils

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptthdisable PHP 5.4的repo

yum-config-manager --disable remi-php54

yum-config-manager --enable remi-php73

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth查看已经安装过的PHP包

yum list installed | grep php

php70w.x86_64                         7.0.33-1.w7                      @webtatic

php70w-cli.x86_64                     7.0.33-1.w7                      @webtatic

php70w-common.x86_64                  7.0.33-1.w7                      @webtatic

php70w-devel.x86_64                   7.0.33-1.w7                      @webtatic

php70w-fpm.x86_64                     7.0.33-1.w7                      @webtatic

php70w-gd.x86_64                      7.0.33-1.w7                      @webtatic

php70w-mysql.x86_64                   7.0.33-1.w7                      @webtatic

php70w-opcache.x86_64                 7.0.33-1.w7                      @webtatic

php70w-pdo.x86_64                     7.0.33-1.w7                      @webtatic

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth安装yum替换插件

yum -y install yum-plugin-replace

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth替换PHP 7的相关模块

根据之前用 yum list installed | grep php 命令得到的结果,使用如下命令替换(升级)对应的模块:

yum -y replace php70w --replace-with=php73-php

替换以后,会自动替换/安装一堆的依赖package,因此下面的这些package,某些不再需要单独替换,某些也无法通过replace的方式来升级了(所以你看到,下面的命令都注释掉了):

# yum -y replace php70w-cli --replace-with=php73-php-cli

# yum -y replace php70w-common --replace-with=php73-php-common

# yum -y replace php70w-devel --replace-with=php73-php-devel

# yum -y replace php70w-fpm --replace-with=php73-php-fpm

# yum -y replace php70w-gd --replace-with=php73-php-gd

# yum -y replace php70w-mysql --replace-with=php73-php-mysqlnd

# yum -y replace php70w-opcache --replace-with=php73-php-opcache

# yum -y replace php70w-pdo --replace-with=php73-php-pdo

注意上面的红字:在这个源的7.3版中,已经没有 php-mysql 这个package了,只有 php-mysqlnd (这是一种比 php-mysql 效率更高的和mysql的连接方式)。

下面是要新安装的package:

yum install php73-php-devel php73-php-fpm php73-php-gd php73-php-mysqlnd php73-php-opcache php73-php-pdo

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth新安装的 php-fpm 可执行程序在哪?

/opt/remi/php73/root/usr/sbin/php-fpm

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth修改 php-fpm 的一个配置文件

vim /etc/opt/remi/php73/php-fpm.d/www.conf

注释掉这一行:

listen = 127.0.0.1:9000

添加:

fastcgi_pass  unix:/var/opt/remi/php73/run/php-fpm/php-fpm.sock;

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth对应这个配置,nginx的配置文件也要做相应修改:

vim /usr/local/nginx/conf/nginx.conf

这一句:

fastcgi_pass  unix:/dev/shm/php-fpm.sock;

改成:

fastcgi_pass  unix:/var/opt/remi/php73/run/php-fpm/php-fpm.sock;

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth测试php-fpm

/opt/remi/php73/root/usr/sbin/php-fpm -t

打印出如下消息即为成功:

NOTICE: configuration file /etc/opt/remi/php73/php-fpm.conf test is successful

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth为php-fpm创建一个service,从而可以用 systemctl 命令来管理

cd /etc/systemd/system/php73-php-fpm.service.d

(↑↑↑该目录本来就存在,如果不存在,可以自己mkdir)

创建3个管理脚本:

vim start-php-fpm.sh

#!/bin/bash

/opt/remi/php73/root/usr/sbin/php-fpm -c /etc/opt/remi/php73/php.ini -y /etc/opt/remi/php73/php-fpm.conf

# make nginx user(apache) can access this file

chown apache:apache /var/opt/remi/php73/run/php-fpm/php-fpm.sock

vim stop-php-fpm.sh

#!/bin/bash

kill -INT `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`

vim reload-php-fpm.sh

#!/bin/bash

kill -USR2 `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`

# make nginx user(apache) can access this file

chown apache:apache /var/opt/remi/php73/run/php-fpm/php-fpm.sock

接着创建 php-fpm 的service文件:

cd /etc/systemd/system

vim php-fpm.service

[Unit]

Description=The PHP FastCGI Process Manager

After=syslog.target network.target

[Service]

Type=simple

PIDFile=/var/opt/remi/php73/run/php-fpm/php-fpm.pid

ExecStart=/etc/systemd/system/php73-php-fpm.service.d/start-php-fpm.sh

ExecReload=/etc/systemd/system/php73-php-fpm.service.d/reload-php-fpm.sh

ExecStop=/etc/systemd/system/php73-php-fpm.service.d/stop-php-fpm.sh

PrivateTmp=true

[Install]

WantedBy=multi-user.target

(↑↑↑里面的 ExecStart,ExecReload,ExecStop都只能填绝对路径,使用了前面创建的3个脚本)

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth设置开机启动php-fpm

systemctl enable php-fpm

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth重启web服务

systemctl restart php-fpm

systemctl restart nginx

imgpxy.php?url=gnp.4172%2F27x27%2F1-0.0.21%2Fijome%2Feroc%2Fsegami%2Fgro.w.s%2F%2F%3Asptth下面的命令是debug用:不通过 systemctl,直接控制 php-fpm 进程的方式

修改 php-fpm 生成的 php-fpm.sock 文件的权限,否则 nginx 进程没有权限访问它(取决于你的nginx配置文件里的user设置):

chown apache:apache /var/opt/remi/php73/run/php-fpm/php-fpm.sock

启动php-fpm

/opt/remi/php73/root/usr/sbin/php-fpm -c /etc/opt/remi/php73/php.ini -y /etc/opt/remi/php73/php-fpm.conf

重启php-fpm

kill -USR2 `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`

关闭php-fpm

kill -INT `cat /var/opt/remi/php73/run/php-fpm/php-fpm.pid`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值