centos7宝塔已有nginx+php环境下安装apache+php

服务器环境介绍: CentOS 7.7 宝塔面板集成环境已经安装nginx1.17与php7.1、php7.4,已经有几个php网站整在投入使用。现在想要在搭个apache服务器宝塔面板的软件商城提示无法安装,让先卸载nginx才行!本文最终的目的是实现nginx与apache共存,且都可以解析php网页。简述操作方式就是编译安装apache2.4.9,配置apache服务监听8008端口,且使用PHP-FPM 监听unix domain socket (UDS) 方式实现php解析。另外加上nginx反向代理实现域名访问。

本文仅适用于已经安装了宝塔nginx+php前提下,进行apache安装的操作参考,且仅用于学习参考,如果你不是很熟悉服务器配置建议谨慎尝试本教程,一切操作为确保安全请先行配置服务器资料、各网络服务配置文件等资料。

一、安装apache2.4.9

1、因为之前太着急使用yum -y install httpd在centos7下已经安装了apache2.4.6(centos7下yum的apache包只更新到2.4.6)。且本身宝塔上nginx本身是使用socket去监听php服务的,但是apache只有2.4.9及以上版本才支持socket监听,为了尽量保持原有服务不改动的原则我只能先卸载apache2.4.6版本然后再安装apache2.4.9版本了。

2、先把旧版本apache配置文件目录/etc/httpd/conf/httpd.conf 备份。然后使用yum remove httpd移除之前通过yum安装的apache服务。

3、开始准备进行2.4.9版本的安装。 创建目录 (我是把下载的安装压缩包及后期最终的apache服务路径都放在该目录下了,一般不建议这么做哈)

mkdir /www/server/apache2.4.9

4、切换到/www/server/apache2.4.9/目录下,下载以下文件apr 、 apr-util、 http2.4.9 包(也可以去官网下载,一般这个下载链接不会失效,官网有所有版本的包)

https://archive.apache.org/dist/apr/apr-1.7.0.tar.gz
https://archive.apache.org/dist/apr/apr-util-1.6.1.tar.gz
https://archive.apache.org/dist/httpd/httpd-2.4.9.tar.gz

5、使用yum命令先安装一些编译工具,如果你之前有搭建过编译开发环境可以忽略本步骤。

yum install gcc pcre-devel openssl-devel expat-devel autoconf libtool gcc-c++ -y

6、打开终端,切换到安装目录,然后执行解压命令,解压刚才下载的三个文件包

cd /www/server/apache2.4.9
tar xf httpd-2.4.9.tar.gz 
tar xf apr-1.7.0.tar.gz
tar xf apr-util-1.6.1.tar.gz

7、执行以下两个命令,将解压成文件夹的apr及apr-util包剪切到httpd包的指定目录中,为下一步的编译做准备。

mv apr-1.7.0  ./httpd-2.4.9/srclib/apr
mv apr-util-1.6.1  ./httpd-2.4.9/srclib/apr-util

8、切换到安装目录下httpd包解压后的文件夹目录(前面已经讲过,我是将安装文件也放在最终的服务运行目录下了)

cd /www/server/apache2.4.9/httpd-2.4.9/

9、开始预编译,这一步看起来参数很多,其实跟我们没什么关系,它就相当于windows中的软件安装而已。(2020.07.05更新:–enable-dav编译参数可不要,用它主要是方便后期apache与svn web结合)

./configure --prefix=/www/server/apache2.4.9 --enable-dav --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-included-apr --enable-modules=most --enable-mpms-shared=all --with-mpm=prefork

10、正式进行编译,需要耐心等待,如果报错大概率是上面的gcc等依赖包没有安装,安装完后再从第6步开始执行比较稳妥。

make && make install

二、配置apache

1、安装完后我们尝试启动apache,因为配置参数不完整或端口占用会报错

/www/server/apache2.4.9/bin/apachectl start

2、修改/www/server/apache2.4.9/conf/httpd.conf配置,找到相关参数进行修改。我这里改为apache服务端口为8008,以www用户/组启动服务(宝塔nginx服务等也是www用户,强烈不建议用root)ServerName必不可少,然后我配置的默认apache web路径是/www/wwwroot/svn.ranjuan.cn,注意配置文件前后顺序。

Listen 8008
User www
Group www

ServerName 127.0.0.1:8008

DocumentRoot "/www/wwwroot/svn.ranjuan.cn"
<Directory "/www/wwwroot/svn.ranjuan.cn">
	Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

这一步完成后就可以启动服务了, /www/server/apache2.4.9/bin/apachectl start,但是此时apache只能解析静态html。如果想要解析php还需要进行配置。

3、 在httpd.conf配置文件ServerName 127.0.0.1:8008下行加上如下配置信息,因为我是需要给apache配置php7.1版本所以下面是unix:/tmp/php-cgi-71.sock,如果你要匹配7.4版本只要修改为 unix:/tmp/php-cgi-74.sock ,前提是你使用宝塔安装的php,而不是编译安装的php!

<VirtualHost *:8008>
    DocumentRoot "/www/wwwroot/svn.ranjuan.cn"
    #ServerName 127.0.0.1
    ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/tmp/php-cgi-71.sock|fcgi://127.0.0.1:9000/www/wwwroot/svn.ranjuan.cn
</VirtualHost>

如果 php是自行编译安装的则需要去etc/php-fpm.conf配置文件中查看是哪种通信配置以及对应的地址。listen后面有xxx.sock的适合本教程,如果是 127.0.0.0:9000这种ip+端口的则可能不适合本教程。

4、继续修改 httpd.conf配置文件取消下面两句的注释。

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

5、重启apache服务,在web目录/www/wwwroot/svn.ranjuan.cn/下上传你的php代码即可通过服务器ip+8008端口进行访问了。

三、配置nginx反向代理,实现域名访问apache+php服务

新建一个站点,然后开启反向代理,目标url填写http://127.0.0.1:8008即可。

测试访问原nginx+php网站一切正常。

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/centos7-install-nginx-apache-php/

赞赏

微信赞赏支付宝赞赏

centos7-install-nginx-apache-php
code-scan-weixin-alipay
nettool-ping-mtr