乐趣区

Centos多版本php共存

需求场景:服务器有几个较老的应用占用了 php,且版本不可向上兼容,新的项目需要高版本的 php 才能支持,实现其实比较简单,php-fpm 可以指定端口(默认 9000),修改 nginx fastcgi_pass 指向对应的端口即可。

这里记录 2 种不同的安装方式:一种是通过 yum 安装,另外一种是从官网下载源码编译安装。

安装 php7

# 安装 yum 源
rpm -ivh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 查看可安装的版本
yum list | grep php
# 安装指定版本
yum install php70w.x86_64 php70w-cli.x86_64 php70w-common.x86_64 php70w-gd.x86_64 php70w-ldap.x86_64 php70w-mbstring.x86_64 php70w-mcrypt.x86_64 php70w-mysqlnd.x86_64 php70w-pdo.x86_64
# 开启 php-fpm
/usr/sbin/php-fpm
# 重启 php-fpm
ps aux|grep php-fpm
kill -SIGUSER2 xx(php_master_id)

安装 php7.2.19

1. 去官网下载压缩包,上传到服务器解压文件,并进入

# 或者直接通过服务器下载源文件安装
wget http://cn2.php.net/distributions/php-7.2.19.tar.gz
# 解压(下面下载文件默认是在 usr/local 文件夹下)tar -zxvf php-7.2.19.tar.gz
# 进入
cd php-7.2.19

2. 配置安装参数

./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-curl --with-freetype-dir=/usr/include/freetype2/freetype --with-gd --with-gettext \--with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip --disable-fileinfo --disable-inline-optimization

3. 编译安装

make && make install

4. 生成配置文件

# 生成 php.ini
cp php-7.2.19/php.ini-development /usr/local/php7/lib/php.ini
# 生成 www.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
# 生成 php-fpm.conf
cp /usr/local/php7/etc/php-fpm.conf.default /usr/local/php7/etc/php-fpm.conf

5. 修改 php-fpm 的端口

vi /usr/local/php7/etc/php-fpm.d/www.conf
# 修改其中的 listen 127.0.0.1:9000 端口为 9001
# user 和 user_group 根据情况修改 

6. 修改 nginx 配置文件

vi /usr/local/nginx/conf/nginx.conf
# 修改其中某个站点的 fastcgi_pass 127.0.0.1:9000 端口为 9001

7. 开启第二个 php-fpm, 并重启 nginx

/usr/local/php7/sbin/php-fpm
/usr/local/nginx/sbin/nginx -s -reload
退出移动版