本地虚拟机已安装了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
<?php

echo phpinfo();

//Esc键 :wq 退出

访问,如图:

注意: 如果出现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)

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐