本地虚拟机已安装了php7.2版本,现在想再安装个php7.0,操作如下:
一.php7.0编译安装
1.1 首先下载并解压php安装包 php下载地址
//首先,进入/var/lnmp 目录, 没有的 mkdir lnmp 创建
cd /var/lnmp
//下载:
wget http://php.net/get/php-7.0.29.tar.gz/from/a/mirror
//解压:(tar 解压命令 -x 解压 -v 显示所有过程 -f 使用档案名字)
tar -xvf mirror
1.2 安装
这个时候你已经得到了解压后的php安装包, 可以 使用命令: ll 查看 进入解压后的文件夹:
cd php-7.0.29/
1.3安装常用的依赖:
yum -y install gcc gcc-c++ glibc automake autoconf libtool make libmcrypt-devel mhash-devel libxslt-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel readline readline-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel openssl openssl-devel
1.4配置php (现在只是安装一下必要的扩展,等你需要额外的扩展完全可以以后再安装):
./configure --prefix=/usr/local/php70 --with-fpm-user=nginx --with-fpm-group=nginx --enable-fpm --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mhash --with-openssl --with-zlib --with-bz2 --with-curl --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib --enable-mbstring --with-mcrypt --enable-sockets --with-iconv-dir --enable-zip --with-pcre-dir --with-pear --enable-session --enable-gd-native-ttf --enable-xml --with-freetype-dir --enable-gd-jis-conv --enable-inline-optimization --enable-shared --enable-soap --enable-bcmath --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-mbregex --enable-pcntl --with-xmlrpc --with-gettext --enable-exif --with-readline --enable-ftp --enable-redis --enable-pdo -enable-tokenizer --enable-zip
注意 这个地方会很容易出现错误,你只要注意configure error并百度安装相对应的环境就可以了
--prefix=/usr/local/php70 这个是你的安装目录
--with-mysqli 这个是mysqli扩展
--with-fpm-user=nginx fpm用户
--with-fpm-group-nginx fpm用户组
当你看到如下页面就代表php7.0可以安装了:
1.5执行命令:
make && make install
1.6生成php.ini配置
cp /var/lnmp/php-7.0.29/php.ini-development /usr/local/php70/lib/php.ini
//测试php7.0版本
vim /etc/profile
//在结尾添加
PATH=$PATH:/usr/local/php70/bin
export PATH
//保存后运行
source /etc/profile
//执行命令
php -v
//测试完毕!
1.7生成配置
将启动文件加入systemctl,复制到系统文件夹中:
cp /var/lnmp/php-7.0.29/sapi/fpm/php-fpm.service /usr/lib/systemd/system/php-fpm70.service
//1.生成 php-fpm.conf 配置
cd /usr/local/php70/etc/
//复制默认文件
cp php-fpm.conf.default php-fpm.conf
//2.生成 www.conf 配置
cd /usr/local/php70/etc/php-fpm.d
//复制默认文件
cp www.conf.default www.conf
//编辑文件,将其中user = nginx group = nginx 改为 user = nobody group = nobody
vim www.conf
//修改user,group
user = nobody
group = nobody
1.8把php-fpm70加入init.d
cp -R /var/lnmp/php-7.0.29/sapi/fpm/php-fpm /etc/init.d/php-fpm70
1.9修改php-fpm.conf的侦听端口为9001,因为主版本7.2是侦听9000
//进入php-fpm.d目录
cd /usr/local/php70/etc/php-fpm.d
//进入www.conf
vim www.conf
//把listen = 127.0.0.1:9000的端口号改为9001
listen = 127.0.0.1:9001
如图:
2.1启动php-fpm70:
/etc/init.d/php-fpm70 或者 systemctl start php-fpm70.service
2.2此时可以通过ps -aux|grep php查看进程是否启动成功:
2.3把服务加入开机自启:
systemctl enable php-fpm70
二.配置nginx:
1.配置/etc/nginx/conf.d/default.conf
vim /etc/nginx/conf.d/default.conf
server{
listen 81;
server_name www.tester-lnmp70.com.cn tester-lnmp70.com.cn;
root /var/www/html/php70;
location / {
index index.html index.htm index.php;
#autoindex on;
}
location ~ \.php(.*)$ {
root /var/www/html/php70;
fastcgi_pass 127.0.0.1:9001;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
}
2.开放81,9001端口,如下类似:
//查看81端口是否开启
firewall-cmd --query-port=81/tcp
//查看80端口被谁占用:
netstat -lnp|grep 81
//开启81端口
firewall-cmd --add-port=81/tcp --permanent # --permanent 永久生效,没有此参数重启后失效
//关闭81端口
firewall-cmd --remove-port=81/tcp --permanent # --permanent 永久生效,没有此参数重启后失效
// firewalld 基本使用
启动: systemctl start firewalld
查看状态: systemctl status firewalld
停止: systemctl disable firewalld
3.重启nginx,php-fpm,php-fpm70:
systemctl restart nginx.service
systemctl restart php-fpm.service
systemctl restart php-fpm70.service
4.查看:
netstat -ntlp
ps -aux| grep php
ps -aux| grep php-fpm
三.访问
1.访问php7.0版本, www.tester-lnmp70.com.cn(你的域名):
配置站点:
//进入/var/www/html/php70,没有目录的自行创建mkdir
cd /var/www/html/php70
// 生成index.php
vim index.php
//编辑index.php
访问,如图:
注意: 如果出现502错误:
查看错误日志:
//找到nginx错误日志, 我的在/var/log/nginx/error.log,查看:
cd /var/log/nginx
tail -f error.log
// 发现错误如下:
*61 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.3.119, server: www.tester-lnmp70.com.cn, request:
经过一番检查以及google,应该是SeLinux的导致的,处理方法:
一.关闭SeLinux:
查看SELinux状态:
//查看SELinux状态
/usr/sbin/sestatus -v
// 或者也可以用这个命令检查
getenforce
//如果SELinux status参数为enabled即为开启状态
关闭SELinux:
1.临时关闭(不用重启机器):
//设置SELinux 成为permissive模式: setenforce 0
setenforce 0
//setenforce 1 设置SELinux 成为enforcing模式
2.永久关闭(修改配置文件需要重启机器):
//修改/etc/selinux/config 文件,将SELINUX=enforcing改为SELINUX=disabled,重启机器即可
vim /etc/selinux/config
SELINUX=disabled
//Esc :wq 编辑后,退出
//重启
reboot
二.运行以下的命令
setsebool -P httpd_can_network_connect 1
至此,安装多版本php完毕!
上一篇: CentOS7搭建Lnmp环境 (php7.2 + mysql5.7 +nginx1.8)