Centos下Apache同时运行多个PHP版本

在一些情况下,我们需要在同一台服务器下运行多个PHP版本用于项目运行。因为各个项目在开发周期内会选择的版本会有所不同,所以这里就涉及到多个版本的PHP同时运行的问题,那我这里就来介绍一下自己配置环境的流程。

一、安装前准备

1,替换系统原有的yum源

    因为要配置EPEL源,否则在安装PHP的时候出现mcrypt,mhash相关软件包安装不了的问题。

    1)进入/etc/yum.repos.d目录,新建一个备份目录repos_bak,用来保存系统中原有的repo文件

[root@moc ~]# cd /etc/yum.repos.d
[root@moc yum.repos.d]# mkdir repos_bak
[root@moc yum.repos.d]# mv *.repo repos_bak/

    2)下载网易和阿里的开源镜像

[root@moc yum.repos.d]#  wget http://mirrors.aliyun.com/repo/Centos-7.repo
[root@moc yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

     网易开源镜像,阿里开源镜像    

    3)清除系统的yum缓存并生成新的yum缓存

[root@moc yum.repos.d]# yum clean all
[root@moc yum.repos.d]# yum makecache

    4)安装EPEL

[root@moc yum.repos.d]# yum list | grep epel-release
[root@moc yum.repos.d]# yum install -y epel-release

    5)下载阿里开源镜像提供的EPEL源

[root@moc yum.repos.d]#	wget -O /etc/yum.repos.d/epel-7.repo http://mirrors.aliyun.com/repo/epel-7.repo

    6)再次清除系统的yum缓存并重新生成yum缓存

[root@moc yum.repos.d]# yum clean all
[root@moc yum.repos.d]# yum makecache

    到这里我们就把系统原有的yum替换了。

2,安装编译需要的依赖包

    安装软件需要的依赖包,避免在编译过程中出错。

    1)安装Apache需要的依赖包

[root@moc ~]# yum -y install gcc gcc-c++ expat-devel pcre pcre-devel openssl openssl-devel  libxml2-devel

    2)安装PHP需要的依赖包

[root@moc ~]# yum -y install bison bison-devel zlib-devel libmcrypt-devel mcrypt mhash-devel libcurl-devel bzip2-devel readline-devel libedit-devel

 

二、安装Apache

    1,下载安装Apache需要的包

        我们可以到Apache的官网下载页面中找到相应的包进行下载,这里需要的安装包有以下几个:

        apr:apr-1.6.5.tar.gz

        apr-util:apr-util-1.6.1.tar.gz

        httpd:httpd-2.4.39.tar.gz

        你可以在网页上下载好之后上传到服务器,也可以直接在服务器上下载,这里我们所有的软件包都会放在/var/local目录下。

[root@moc ~]# cd /var/local
[root@moc local]# wget http://www.apache.org/dist/apr/apr-1.6.5.tar.gz
[root@moc local]# wget http://www.apache.org/dist/apr/apr-util-1.6.1.tar.gz
[root@moc local]# wget http://www.apache.org/dist/httpd/httpd-2.4.39.tar.gz

    2,编译安装依赖包

        1)安装apr

[root@moc local]# tar -zxvf apr-1.6.5.tar.gz
[root@moc local]# cd apr-1.6.5
[root@moc apr-1.6.5]# ./configure --prefix=/usr/local/apr
[root@moc apr-1.6.5]# make && make install

        2)安装apr-util

[root@moc apr-1.6.5]# cd ..
[root@moc local]# tar -zxvf apr-util-1.6.1.tar.gz
[root@moc local]# cd apr-util-1.6.1
[root@moc apr-util-1.6.1]#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@moc apr-util-1.6.1]# make && make install

    3,安装httpd

[root@moc apr-util-1.6.1]# cd ..
[root@moc local]# tar -zxvf httpd-2.4.39.tar.gz
[root@moc local]# cd httpd-2.4.39
[root@moc httpd-2.4.39]# ./configure \
 --prefix=/usr/local/apache \
 --enable-so \
 --enable-ssl \
 --enable-cgi \
 --enable-rewrite \
 --with-zlib \
 --with-pcre \
 --with-apr=/usr/local/apr \
 --with-apr-util=/usr/local/apr-util \
 --enable-modules=all \
 --enable-mpms-shared=all \
 --with-mpm=event
[root@moc httpd-2.4.39]#make && make install

    4,设置Apache为系统服务,并开机自启动

        1)将apachectl复制到系统启动目录下,命名为httpd

[root@moc httpd-2.4.39]# cp /usr/local/apache/bin/apachectl /etc/rc.d/init.d/httpd

        在这里我们已经可以使用service httpd start等命令控制apache了,但是Linux服务列表还没有注册。

        2)把刚刚复制到系统启动目录中的httpd文件添加如下注释

[root@moc httpd-2.4.39]# vim /etc/rc.d/init.d/httpd
#!/bin/sh
# chkconfig:35 61 61
# description:Apache

        如图所示:

        3)将httpd配置自启并加入到Linux服务监控

[root@moc httpd-2.4.39]# chkconfig --add httpd

        4)启动Apache

[root@moc httpd-2.4.39]# service httpd start

        5)访问IP就可以能访问到网站

        Centos下Apache同时运行多个PHP版本_第1张图片

        显示到这里就说明我们的Apache已经安装成功了!

    5,给Apache安装mod_fcgid模块

        这个模块可以使Apache增加对PHP多版本运行支持,这个模块也可以在Apache上下载。

[root@moc local]# wget http://www.apache.org/dist/httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz
[root@moc local]# tar -zxvf mod_fcgid-2.3.9.tar.gz
[root@moc local]# cd mod_fcgid-2.3.9
[root@moc mod_fcgid-2.3.9]# APXS=/usr/local/apache/bin/apxs ./configure.apxs
[root@moc mod_fcgid-2.3.9]# make && make install

        安装mod_fcgid模块的时候报错

        

        出现这个错误的解决板房是伤处当前文件夹,重新解压mod_fcgid或者httpd后进行编译。

三、安装PHP

    1,创建用户和用户组

[root@moc local]# mkdir php
[root@moc local]# cd php
[root@moc php]# groupadd www
[root@moc php]# useradd -g www -s /sbin/nologin -M www

    2,下载PHP

        因为需要多版本运行,所以我们至少需要下载两个PHP版本,这里我用的是php-5.5.38和php-5.6.9,可以在PHP官网上找到对应版本下载,这里就不做介绍了。

      选用的两个版本都是PHP5,安装流程大致相同,只是安装目录不同,我这里就只写php5.5的安装过程。

[root@moc php]# tar -zxvf php-5.5.38.tar.gz
[root@moc php]# cd php-5.5.38
[root@moc php-5.5.38]# ./configure \
 --prefix=/usr/local/php/php55 \
 --with-config-file-path=/etc \
 --with-apxs2=/usr/local/apache/bin/apxs \
 --enable-inline-optimization \
 --disable-debug \
 --disable-rpath \
 --enable-shared \
 --enable-opcache \
 --enable-fpm \
 --with-fpm-user=www \
 --with-fpm-group=www \
 --with-mysql=mysqlnd \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=mysqlnd \
 --with-gettext \
 --enable-mbstring \
 --with-iconv \
 --with-mhash \
 --with-mcrypt \
 --with-openssl \
 --enable-bcmath \
 --enable-soap \
 --with-libxml-dir \
 --enable-pcntl \
 --enable-shmop \
 --enable-sysvmsg \
 --enable-sysvsem \
 --enable-sysvshm \
 --enable-sockets \
 --with-curl \
 --with-zlib \
 --enable-zip \
 --with-bz2 \
 --with-readline \
 --without-sqlite3 \
 --without-pdo-sqlite \
 --with-pear\
 --enable-fastcgi
[root@moc php-5.5.38]# make && make install

Centos下Apache同时运行多个PHP版本_第2张图片

这样我们的PHP就安装完成了

四、配置Apache的虚拟主机,使其支持php和fcgi

[root@moc ~]# vim /usr/local/apache/conf/httpd.conf

    1,在下图位置添加参数

Centos下Apache同时运行多个PHP版本_第3张图片

2,打开虚拟主机配置

Centos下Apache同时运行多个PHP版本_第4张图片

3,创建虚拟主机配置目录和文件

[root@moc ~]# mkdir /usr/local/apache/vhost/
[root@moc ~]# vim /usr/local/apache/vhost/php55.conf
Listen 81

    ServerName php55
    DocumentRoot "/data/web/php55/wwwroot"
    ServerAlias php5529.hk.explame.com
    ErrorLog "/data/web/php55/log/error.log"
    CustomLog "/data/web/php55/log/access.log" common
    FcgidInitialEnv PHPRC "/usr/local/php/php55/"
    FcgidWrapper "/usr/local/php/php55/bin/php-cgi" .php
    
        Options Indexes ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        Require all granted
    
[root@moc ~]# vim /usr/local/apache/vhost/php56.conf
Listen 82

    ServerName php56
    DocumentRoot "/data/web/php56/wwwroot"
    ServerAlias php5629.hk.explame.com
    ErrorLog "/data/web/php56/log/error.log"
    CustomLog "/data/web/php56/log/access.log" common
    FcgidInitialEnv PHPRC "/usr/local/php/php56/"
    FcgidWrapper "/usr/local/php/php56/bin/php-cgi" .php
    
        Options Indexes ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
        Require all granted
    

4,重启Apache

[root@moc ~]# service httpd restart

5,编辑对应站点的PHP文件

[root@moc ~]# vim /data/web/php55/wwwroot/index.php

6,访问站点IP对应端口

Centos下Apache同时运行多个PHP版本_第5张图片

Centos下Apache同时运行多个PHP版本_第6张图片

到这里我们就实现了在一个服务器上运行多个PHP版本。

 

 

你可能感兴趣的:(PHP,Linux,Apache)