因为公司有不同的项目存在于php不同版本下开发,重新全部维护修改起来成本太高了,而服务器使用的是centos6的系统,docker版本只能是1.7.1,低版本docker太多功能限制了,连参数-ip指定都不能用。尝试安装成功后发现不够稳定,维护也不方便,又不是做整体微服务。但单单为php搞去升级centos7,所有环境需要重新配置过也太烦了,直接centos6安装多版本php其实也不麻烦,反而更简单好维护。
上官网查找下载各个php版本
https://www.php.net/releases/
https://www.php.net/distributions/php-5.3.29.tar.gz
https://www.php.net/distributions/php-5.6.40.tar.gz
https://www.php.net/distributions/php-7.3.21.tar.gz
首先安装php5.3,进入源文件目录
export PHP_AUTOCONF=/usr/local/autoconf-2.13/bin/autoconf
export PHP_AUTOHEADER=/usr/local/autoconf-2.13/bin/autoheader
tar zxvf php-5.3.29.tar.gz
cd php-5.3.29/
./configure –prefix=/usr/local/php53 –with-config-file-path=/usr/local/php53/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 –with-jpeg-dir –with-png-dir –with-zlib –with-libxml-dir=/usr –enable-xml –disable-rpath –enable-magic-quotes –enable-safe-mode –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 –without-pear –with-gettext –disable-fileinfo
make ZEND_EXTRA_LIBS=’-liconv’
make install
这里不做详细安装出现问题,顺利话就会在/usr/local/php53安装好php5.3.29
这里举例php5.3.29,5.3因为没有自带缓存加速需要另外单独安装个ZendGuardLoader,其它版本不需要,其它同样照做就可以了。
ln -s /usr/local/php/bin/php /usr/bin/php
ln -s /usr/local/php/bin/phpize /usr/bin/phpize
ln -s /usr/local/php/sbin/php-fpm /usr/bin/php-fpm
复制php系统自带管理脚本文件,可以操作启动、停止等一些系列操作。
cp /php-5.3.29/sapi/fpm/init.d.php-fpm /etc/init.d/php53-fpm
chmod +x /etc/init.d/php53-fpm
同时要编辑php53-fpm文件里面对应的调用php文件,应该都不是按默认的安装,有php53 php56 php73路径问题
本地宿主建议使用sock方式启动性能更高效,只要sock文件名称不同即可,其它文件对应修改单独路径即可,如果使用ip方式也可以,只要修改不同端口,就看你喜欢用哪种。
[global]
pid = /usr/local/php53/var/run/php-fpm.pid
error_log = /data/logs/php/php53-fpm.log
log_level = notice
/usr/local/php53/etc/php-fpm.conf
[www]
;listen = 127.0.0.1:9000
listen = /tmp/php53-cgi.sock
user = www
group = www
listen.owner = www
listen.group = www
如果没设置www组,很有可能就会出现和我同样的502问题
cp php.ini-production /usr/local/php/etc/php.ini
如果扩展so路径不同,记得也在php.ini修改成对应的路径。
最后就是启动了[root@hl-qy ~]# /etc/init.d/php53-fpm restart