標準安裝路徑(源碼編譯默認)
| 類別 | 路徑 | 說明 |
| 程序主目錄 | /usr/local/httpd | 二進制、模組、默認文檔根目錄 |
| 主配置文件 | /usr/local/httpd/conf/httpd.conf | 核心配置入口 |
| 虛擬主機配置目錄 | /usr/local/httpd/conf/vhost/ | 建議每站點一個 .conf 文件 |
| 單站點配置 | /usr/local/httpd/conf/vhost/域名.conf | 如 example.com.conf |
| 模組目錄 | /usr/local/httpd/modules/ | .so 動態模組 |
| 日誌目錄 | /usr/local/httpd/logs/ | access_log、error_log |
| PID 文件 | /usr/local/httpd/logs/httpd.pid | 主進程 ID |
| 運行時目錄 | /usr/local/httpd/run/ | Unix Socket、鎖文件 |
關鍵文件結構示例
/usr/local/httpd/
├── bin/
│ ├── httpd # 主程序
│ ├── apachectl # 控制腳本
│ ├── htpasswd # 密碼生成工具
│ ├── htdigest # 摘要認證工具
│ ├── rotatelogs # 日誌輪轉工具
│ └── ab # 壓力測試工具
├── conf/
│ ├── httpd.conf # 主配置
│ ├── mime.types # MIME 類型
│ ├── magic # 文件類型識別
│ ├── extra/ # 額外配置模板
│ │ ├── httpd-autoindex.conf
│ │ ├── httpd-dav.conf
│ │ ├── httpd-default.conf
│ │ ├── httpd-info.conf
│ │ ├── httpd-languages.conf
│ │ ├── httpd-manual.conf
│ │ ├── httpd-mpm.conf
│ │ ├── httpd-multilang-errordoc.conf
│ │ ├── httpd-ssl.conf
│ │ └── httpd-vhosts.conf
│ ├── vhost/ # 虛擬主機配置
│ │ ├── example.com.conf
│ │ └── default.conf
│ └── ssl/ # SSL 證書
├── modules/ # 動態模組
├── htdocs/ # 默認站點根目錄
├── logs/
│ ├── access_log
│ ├── error_log
│ └── httpd.pid
└── run/ # 運行時文件
├── httpd.pid
└── *.mutex
常用操作命令
| 操作 | 命令 |
| 語法檢查 | /usr/local/httpd/bin/apachectl configtest |
| 啟動 | /usr/local/httpd/bin/apachectl start |
| 重啟 | /usr/local/httpd/bin/apachectl restart |
| 優雅重啟 | /usr/local/httpd/bin/apachectl graceful |
| 停止 | /usr/local/httpd/bin/apachectl stop |
| 查看編譯參數 | /usr/local/httpd/bin/httpd -V |
| 查看載入模組 | /usr/local/httpd/bin/httpd -M |
| 查看虛擬主機 | /usr/local/httpd/bin/httpd -S |
包管理器安裝路徑差異
| 發行版/來源 | 配置目錄 | 二進制/控制腳本 | 站點配置目錄 |
| CentOS/RHEL (yum httpd) | /etc/httpd/ | /usr/sbin/httpd /usr/sbin/apachectl | /etc/httpd/conf.d/ |
| Ubuntu/Debian (apache2) | /etc/apache2/ | /usr/sbin/apache2 /usr/sbin/apache2ctl | /etc/apache2/sites-enabled/ |
| FreeBSD (pkg apache24) | /usr/local/etc/apache24/ | /usr/local/sbin/httpd /usr/local/sbin/apachectl | /usr/local/etc/apache24/Includes/ |
Ubuntu/Debian 特有結構說明
/etc/apache2/
├── apache2.conf # 主配置(引用下級)
├── ports.conf # 端口監聽配置
├── mods-available/ # 可用模組配置
├── mods-enabled/ # 啟用模組(軟鏈接)
├── conf-available/ # 可用通用配置
├── conf-enabled/ # 啟用通用配置
├── sites-available/ # 可用站點配置
├── sites-enabled/ # 啟用站點(軟鏈接)
├── envvars # 環境變量
└── magic # 文件類型識別
管理命令:a2enmod/a2dismod(模組)、a2ensite/a2dissite(站點)、a2enconf/a2disconf(通用配置)。
最佳實踐建議
- 配置模組化:主配置引用
IncludeOptional conf/vhost/*.conf
- MPM 選型:預 fork 兼容性好、event 高併發、worker 折中;PHP-FPM 建議 event
- 版本控制:
/usr/local/httpd/conf/ 或 /etc/httpd/ 納入 Git
- 日誌輪轉:使用
rotatelogs 或 logrotate,按天切割、壓縮、保留
- 安全基線:
ServerTokens Prod、ServerSignature Off、禁用 TRACE、啟用 mod_security
總結
Apache 源碼編譯固定在 /usr/local/httpd,包管理器遵循發行版 FHS 標準。核心差異在於配置組織方式:源碼編譯扁平化、包管理器採用 *-available/-enabled 雙目錄軟鏈接機制。理解目錄結構、掌握控制腳本、建立模組化配置管理體系,是 Apache 高效穩定運維的基石。