linux Nginx php多版本共存实现原理:
Nginx是通过PHP-FastCGI与PHP交互的。而PHP-FastCGI运行后会通过文件、或本地端口两种方式进行监听,在Nginx中配置相应的FastCGI监听端口或文件即实现Nginx请求对PHP的解释。
既然PHP-FastCGI是监听端口和文件的,那就可以让不同版本的PHP-FastCGI同时运行,监听不同的端口或文件,Nginx中根据需求配置调用不同的PHP-FastCGI端口或文件,即可实现不同版本PHP共存了。
主要配置过程:
第一步:修改/php安装目录/etc/php-fpm.conf
[www]
listen = /dev/shm/php-cgi.sock
listen.backlog = -1
listen.allowed_clients = 127.0.0.1
listen.owner = www
listen.group = www
listen.mode = 0666
user = www
group = www
修改listen = /dev/shm/php-cgi.sock文件名称,改成 listen = /dev/shm/php-cgi7.sock或者listen = /dev/shm/php-cgi5.sock
php5版本修改listen.allowed_clients = 127.0.0.1:9001添加监听端口号
第二步:便于管理,我们复制两份init.d文件
修改prefix=/usr/local/php7 或者prefix=/usr/local/php5.
## 添加执行权限
chmod a+x /etc/init.d/php-fpm5
chmod a+x /etc/init.d/php-fpm7
## 加入服务
chkconfig –add php-fpm5
chkconfig –add php-fpm7
## 开机自启
chkconfig php-fpm5 on
chkconfig php-fpm7 on
管理php5:
service php-fpm5 {start|stop|restart|reload|status}
管理php7:
service php-fpm7 {start|stop|restart|reload|status}
第三步:修改nginx vhost文件
location ~ [^/]\.php(/|$) {
#fastcgi_pass remote_php_ip:9000;
fastcgi_pass unix:/dev/shm/php7/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
修改socket文件即可。ok,大功告成!相关企业需求,请直接联系我们!