技术交流QQ群:①185473046   ②190706903   ③203744115   网站地图
登录

下次自动登录
现在的位置: 首页LAMP>正文
Linux下编译安装Apache并支持php
2025年09月11日 LAMP 暂无评论 ⁄ 被围观 58次+

前置知识:

Rocky Linux 10.x编译安装nginx-1.28.x+mysql-8.4.x+php-8.4.x

https://www.osyunwei.com/archives/16714.html

安装包下载:

1、apache

https://dlcdn.apache.org/httpd/httpd-2.4.65.tar.gz

2、apr(Apache库文件)

https://dlcdn.apache.org//apr/apr-1.7.6.tar.gz

3、apr-util(Apache库文件)

https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz

4、apache支持php模块

https://dlcdn.apache.org/httpd/mod_fcgid/mod_fcgid-2.3.9.tar.gz

安装apache:

1、安装编译工具包

yum install gcc make apr-devel apr-util-devel pcre2-devel openssl-devel

2、安装apr

cd /usr/local/src

tar zxvf apr-1.7.6.tar.gz

cd apr-1.7.6

./configure --prefix=/usr/local/apr

make -j$(nproc)

make install

3、安装apr-util

cd /usr/local/src

tar zxvf apr-util-1.6.3.tar.gz

cd apr-util-1.6.3

./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

make -j$(nproc)

make install

ls /usr/local/apr-util/lib/libaprutil-1.so

添加环境变量

export LD_LIBRARY_PATH=/usr/local/apr-util/lib:$LD_LIBRARY_PATH

4、安装apache

cd /usr/local/src

tar zxvf httpd-2.4.65.tar.gz

cd httpd-2.4.65

./configure \

--prefix=/usr/local/apache2 \

--with-apr=/usr/local/apr \

--with-apr-util=/usr/local/apr-util \

--with-pcre \

--with-ssl=/usr \

--enable-mpms-shared=all \

--enable-rewrite \

--enable-ssl \

--enable-deflate \

--enable-headers \

--enable-expires \

--enable-proxy \

--enable-proxy-fcgi \

--enable-proxy-http \

--enable-proxy-balancer \

--enable-proxy-wstunnel \

--enable-cgi \

--enable-cgid \

--enable-status \

--enable-autoindex \

--enable-userdir \

--enable-alias \

--enable-dav \

--enable-dav-fs \

--enable-dav-lock \

--enable-suexec \

--enable-lbmethod_byrequests \

--enable-lbmethod_bytraffic \

--enable-lbmethod_bybusyness \

--enable-lbmethod_heartbeat \

--enable-http2

make -j$(nproc)

make install

/usr/local/apache2/bin/apachectl -k start #启动

/usr/local/apache2/bin/apachectl -k stop #关闭

./configure --help #查看编译参数

#使用systemd设置apache开机自启

vi /etc/systemd/system/httpd.service

[Unit]

Description=Apache HTTP Server

After=network.target

[Service]

Type=forking

Environment=HTTPD_MPM=event

ExecStart=/usr/local/apache2/bin/apachectl start

ExecStop=/usr/local/apache2/bin/apachectl stop

ExecReload=/usr/local/apache2/bin/apachectl graceful

PIDFile=/usr/local/apache2/logs/httpd.pid

[Install]

WantedBy=multi-user.target

:wq! #保存退出

systemctl daemon-reload

systemctl enable httpd

systemctl start httpd

vi /etc/profile #添加apache服务系统环境变量

在最后添加下面这一行

export PATH=$PATH:/usr/local/apache2/bin

:wq! #保存退出

source /etc/profile #使配置立即生效

cp /usr/local/apache2/conf/httpd.conf /usr/local/apache2/conf/httpd.conf.bak

vi /usr/local/apache2/conf/httpd.conf #编辑配置文件

ServerName www.example.com:80 #取消前面的注释

:wq! #保存退出

配置apache支持php:

有三种方式可以让apache支持php,目前推荐的是第三种方式,前面两种方式可以了解下

1、mod_php(传统方式)

先安装apache,再安装php,编译php时添加--with-apxs2=/usr/local/apache2/bin/apxs 参数,生成 libphp.so 模块,并自动注册到 Apache

vi /usr/local/apache2/conf/httpd.conf #编辑apache配置文件

在AddType application/x-gzip .gz .tgz这一行下面添加、

AddType application/x-httpd-php .php (注意:php .php这个点前面有一个空格)

:wq! #保存退出

systemctl restart httpd #重启apahce

2、‌mod_fcgid

安装mod_fcgid模块

cd /usr/local/src

tar -zxvf mod_fcgid-2.3.9.tar.gz

cd mod_fcgid-2.3.9

APXS=/usr/local/apache2/bin/apxs ./configure.apxs

make

make install

vi /usr/local/apache2/conf/httpd.conf #编辑

#如果配置文件有下面这一行,就不用重复添加,一般安装完mod_fcgid模块后会自动添加

LoadModule fcgid_module modules/mod_fcgid.so

#在最后一行添加以下全局配置信息

<IfModule mod_fcgid.c>

# 设置超时时间

FcgidConnectTimeout 20

FcgidIOTimeout 40

FcgidBusyTimeout 60

FcgidMaxRequestLen 131072

# 最大进程数

FcgidMaxProcesses 10

FcgidMaxRequestsPerProcess 1000

# PHP-CGI 路径

FcgidWrapper "/usr/local/php84/bin/php-cgi" .php

AddHandler fcgid-script .php

</IfModule>

#找到<Directory "/usr/local/apache2/htdocs">这一段,在Options Indexes FollowSymLinks后面添加ExecCGI,支持php解析

Options Indexes FollowSymLinks ExecCGI

:wq! #保存退出

#重启apache

systemctl restart httpd

#也可以使用 Include 文件,添加全局配置

#创建一个公共配置文件

vi /usr/local/apache2/conf/php-shared.conf

# 共享的 PHP 支持配置

<IfModule mod_fcgid.c>

Options Indexes FollowSymLinks ExecCGI

AllowOverride All

Require all granted

</IfModule>

:wq! #保存退出

#然后在每个 虚拟主机 VirtualHost 中引用

<Directory "/var/www/site1">

Include conf/php-shared.conf

</Directory>

#Include这种相对路径写法,Apache 会从安装目录/usr/local/apache2开始查找

3、FastCGI (PHP-FPM)

Apache 不再直接运行 PHP,而是作为一个 反向代理,把 .php 请求转发给独立运行的 PHP-FPM 服务

# 检查模块文件是否存在

ls -l /usr/local/apache2/modules/mod_proxy_fcgi.so

vi /usr/local/apache2/conf/httpd.conf

#在文件中找到 LoadModule 区域,取消以下三行前面的注释

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

LoadModule proxy_http_module modules/mod_proxy_http.so

# 添加到最后一行,共享使用,也可以单独加到每个 <VirtualHost> 内,实现多个php版本共存

# 配置 Apache 将 .php 请求代理到 PHP-FPM

# 启用对 .php 文件的处理

<FilesMatch \.php$>

SetHandler "proxy:fcgi://127.0.0.1:9084"

</FilesMatch>

:wq! #保存退出

#检测配置文件是否正确

/usr/local/apache2/bin/apachectl configtest

systemctl restart httpd #重启apache

systemctl restart php84-fpm #重启php-fpm

apache支持php的三种方式比较:

1、mod_php 已过时,仅推荐用于旧系统维护或极简测试,安全性和性能均不如 FastCGI 方案

2、mod_fcgid进程管理不如 PHP-FPM 灵活,配置较复杂

3、FastCGI (PHP-FPM)是目前最推荐的方式

测试篇

cd /usr/local/apache2/htdocs

vi index.php #输入下面内容

<?php

phpinfo();

?>

:wq! #保存

chown daemon:daemon -R /usr/local/apache2/htdocs

chmod -R 700 /usr/local/apache2/htdocs

在客户端浏览器输入服务器IP地址,可以看到相关的配置信息

至此,Linux下编译安装Apache并支持php完成。

     

  系统运维技术交流QQ群:①185473046 系统运维技术交流□Ⅰ ②190706903 系统运维技术交流™Ⅱ ③203744115 系统运维技术交流™Ⅲ

给我留言

您必须 [ 登录 ] 才能发表留言!



Copyright© 2011-2025 系统运维 All rights reserved
版权声明:本站所有文章均为作者原创内容,如需转载,请注明出处及原文链接
陕ICP备11001040号-3