在 Ubuntu 上编译(从源码构建)Apache HTTP Server(apache2)通常用于需要自定义模块、特殊版本或深度定制的场景。下面给你一套从源码编译 Apache 2.4 的完整流程,适用于 Ubuntu 20.04 / 22.04 / 24.04。
sudo apt update
sudo apt install -y \
build-essential \
libpcre3 libpcre3-dev \
zlib1g zlib1g-dev \
libssl-dev \
libexpat1-dev \
wget
cd /usr/local/src
sudo wget https://downloads.apache.org/httpd/httpd-2.4.58.tar.gz
sudo tar -xzf httpd-2.4.58.tar.gz
cd httpd-2.4.58
Apache 2.4 依赖 APR 和 APR-Util
cd /usr/local/src
wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
tar -xzf apr-1.7.4.tar.gz
tar -xzf apr-util-1.6.3.tar.gz
mv apr-1.7.4 httpd-2.4.58/srclib/apr
mv apr-util-1.6.3 httpd-2.4.58/srclib/apr-util
cd /usr/local/src/httpd-2.4.58
./configure \
--prefix=/usr/local/apache2 \
--enable-so \
--enable-ssl \
--enable-rewrite \
--with-included-apr \
--with-mpm=prefork
| 参数 | 作用 |
|---|---|
--prefix |
安装目录 |
--enable-so |
启用动态模块 |
--enable-ssl |
启用 HTTPS |
--enable-rewrite |
URL 重写 |
--with-mpm |
多处理模块(prefork / worker / event) |
make
sudo make install
安装完成后:
/usr/local/apache2/bin/httpd -v
sudo /usr/local/apache2/bin/apachectl start
访问:
http://localhost
创建服务文件:
sudo nano /etc/systemd/system/apache2.service
内容示例:
[Unit]
Description=Apache HTTP Server
After=network.target
[Service]
Type=forking
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
Restart=on-failure
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
sudo systemctl daemon-reload
sudo systemctl enable apache2
sudo systemctl start apache2
| 项目 | apt 安装 | 源码编译 |
|---|---|---|
| 路径 | /etc/apache2 |
/usr/local/apache2 |
| 升级 | apt upgrade |
手动重新编译 |
| 稳定性 | 高 | 可控但复杂 |
| 适合 | 生产环境 | 定制开发 |
sudo netstat -tlnp | grep 80
sudo apt remove apache2
sudo apt install libpcre3-dev
✅ 生产环境:直接用 apt
✅ 开发 / 模块开发 / 特殊版本:源码编译
如果你需要:
可以直接告诉我你的具体需求。