Linux系统下多版本php共存的解决方案(超简单)
自php7问世,身为最新版本控的我马上升级体验,但是由于服务器上还有旧程序在运行,只好部署一个php多版本共存环境。
现有环境是lnmp
-CentOS6.7
-nginx1.10.1
-mariadb-10.0.26
-php7.0.8
为了更好兼容旧的php程序,推荐使用5.4.45.主要是兼容mysql扩展。
首先要下载php-5.4.45.tar.gz源码包。
通过源码安装
#tarxzvfphp-5.4.45.tar.gz #cdphp-5.4.45 #./configure--prefix=/usr/local/php54--with-config-file-path=/usr/local/php54/etc--enable-fpm--with-fpm-user=www--with-fpm-group=www--with-mysql=mysqlnd--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd--with-iconv-dir--with-freetype-dir=/usr/local/freetype--with-jpeg-dir--with-png-dir--with-zlib--with-libxml-dir=/usr--enable-xml--disable-rpath--enable-bcmath--enable-shmop--enable-sysvsem--enable-inline-optimization--with-curl--enable-mbregex--enable-mbstring--with-mcrypt--enable-ftp--with-gd--enable-gd-native-ttf--with-openssl--with-mhash--enable-pcntl--enable-sockets--with-xmlrpc--enable-zip--enable-soap--with-gettext--disable-fileinfo--enable-intl--with-xsl #makeZEND_EXTRA_LIBS='-liconv' #makeinstall #cpphp.ini-production/usr/local/php/etc/php.ini
php.ini配置
post_max_size=50M upload_max_filesize=50M date.timezone=PRC short_open_tag=On cgi.fix_pathinfo=0 max_execution_time=300 disable_functions=passthru,exec,system,chroot,scandir,chgrp,chown,shell_exec,proc_open,proc_get_status,popen,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server
php-fpm.conf配置
#vim/usr/local/php/etc/php-fpm.conf
[global] pid=/usr/local/php54/var/run/php-fpm.pid error_log=/usr/local/php54/var/log/php-fpm.log log_level=notice [www] listen=/tmp/php54-cgi.sock listen.backlog=-1 listen.allowed_clients=127.0.0.1:9001 listen.owner=www listen.group=www listen.mode=0666 user=www group=www pm=dynamic pm.max_children=40 pm.start_servers=20 pm.min_spare_servers=20 pm.max_spare_servers=40 request_terminate_timeout=100 request_slowlog_timeout=0 slowlog=var/log/slow.log
注意:重点是配置监听端口和进程
启动php-fpm
#cpsapi/fpm/init.d.php-fpm/etc/init.d/php54-fpm #chmod+x/etc/init.d/php54-fpm #/etc/init.d/php54-fpmstart
修改nginx配置,对需要的服务配置使用php-5.4.45
location~[^/]\.php(/|$) { try_files$uri=404; fastcgi_passunix:/tmp/php54-cgi.sock; fastcgi_indexindex.php; includefastcgi.conf; }
配置php-5.4.45的php54-fpm开机自动启动
#chkconfig--addphp54-fpm #chkconfigphp54-fpmon
chkconfig功能说明:检查,设置系统的各种服务。
语法:chkconfig[–add][–del][–list][系统服务]
chkconfig[–level<等级代号>][系统服务][on/off/reset]
本方案的重点是
每个PHP版本都要安装在新的独立的文件夹里
每个PHP版本的php-fpm.conf配置文件都需要设置不同的进程名和监听端口
nginx配置文件中指定要使用的PHP版本监听端口或进程名