为了不让一个ecs的性能浪费,所以要在一个ecs中放好几个网站,但是之前默认安装的是7.2版本,第二个网站只能用5.6以下的,所以要弄一个php多版本共存的环境
因为阿里云自带的oneinstack 镜像中已经安装了php5.3-7.4的版本包,所以在这里就不提安装的事情了,有需求的可以去搜索 oneinstack 安装多个版本php的教程。
我的镜像nginx版本为1.16.1,老版本的方法会有所不同
oneinstack里php的默认安装路径是/usr/local/php,脚本里是通过超链接的形式来切换php版本的,所以需要将不同版本的服务单独配置
1.配置 php-fpm 服务
因为 PHP默认的服务文件为 php-fpm.service 所以先将php-fpm.service复制两份为php56-fpm.service和php72-fpm.service
service php-fpm stop #停止php启动脚本mv /usr/lib/systemd/system/php-fpm.service /usr/lib/systemd/system/php56-fpm.service #重命名php5.6启动脚本mv /usr/lib/systemd/system/php-fpm.service /usr/lib/systemd/system/php72-fpm.service #重命名php7.2启动脚本
这里要修改 php56-fpm.service和php72-fpm.service
vim /usr/lib/systemd/system/php56-fpm.service
将:
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php/etc/php-fpm.conf
改成:
PIDFile=/usr/local/php56/var/run/php-fpm.pid
ExecStart=/usr/local/php56/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php56/etc/php-fpm.conf
同理
vim /usr/lib/systemd/system/php72-fpm.service
将:
PIDFile=/usr/local/php/var/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php/etc/php-fpm.conf
改成:
PIDFile=/usr/local/php72/var/run/php-fpm.pid
ExecStart=/usr/local/php72/sbin/php-fpm –nodaemonize –fpm-config /usr/local/php72/etc/php-fpm.conf
2.为防止php5.6、php7.2监听sock冲突,修改php的listen配置文件
例如
vim /usr/local/php72/etc/php-fpm.conf
将listen = /dev/shm/php-cgi.sock 修改为
listen = /dev/shm/php72-cgi.sock
同理
vim /usr/local/php56/etc/php-fpm.conf
将listen = /dev/shm/php-cgi.sock 修改为
listen = /dev/shm/php56-cgi.sock
3.修改nginx配置文件,例如
vim /usr/local/nginx/conf/vhosts/www.nginx.com.conf(www.nginx.com改成自己绑定域名):
将location php 中的
fastcgi_pass unix:/dev/shm/php-cgi.sock;
更改为
fastcgi_pass unix:/dev/shm/php72-cgi.sock;
然后保存,
/usr/local/nginx/sbin/nginx -s reload
4.设置php7.2、php5.6开机自启动:
chkconfig php56-fpm onchkconfig php72-fpm on
5.重启php-fpm服务
service php56-fpm startservice php72-fpm start
6.重新加载nginx,使配置生效:
service nginx reload
7.附:查看php运行状态
ps -ef|grep php-fpm