要查看 apache 版本和編譯選項,1. 可在命令行執行 httpd -v 或 apache2 -v 查看主次版本號;2. 通過創建 info.php 文件并訪問網頁獲取運行環境中的版本信息;3. 執行 httpd -v(大寫 v)可查看詳細編譯參數;4. 若系統未保留完整編譯參數,可通過 /usr/sbin/apachectl -v 或 /usr/sbin/apache2ctl -v 獲取;5. 常見編譯選項包括 –prefix=path 指定安裝路徑、–enable-so 啟用動態模塊加載、–enable-rewrite 支持 url 重寫、–enable-ssl 啟用 https、–with-apr 指定 apr 路徑等;6. 判斷是否支持 mod_rewrite 的方法除了查看編譯參數外,還可通過配置測試規則驗證其功能是否生效。了解這些信息有助于排查兼容性問題、適配模塊或進行安全加固。
Apache 是一個廣泛使用的 Web 服務器軟件,查看其版本和編譯選項是日常維護中常見的需求。了解這些信息有助于排查問題、適配模塊或進行安全加固。
查看 Apache 版本
最簡單的方法是使用命令行工具執行以下命令:
httpd -v
或者如果你的系統中 Apache 是通過 apache2 命名的,可以嘗試:
apache2 -v
這兩個命令會顯示當前運行的 Apache 主版本和次版本號,比如:
Server version: Apache/2.4.41 (Unix) Server built: Feb 10 2023 14:30:56
如果 Apache 正在運行,也可以通過訪問網頁的方式來獲取版本信息:在站點根目錄創建一個 php 文件(如 info.php),內容為:
<?php phpinfo(); ?>
然后瀏覽器訪問這個文件,查找“Apache”相關部分就能看到版本號。
查看 Apache 的編譯選項
要查看 Apache 啟動時所使用的編譯參數,可以執行:
httpd -v
注意這里用的是大寫 V。這個命令不僅會顯示版本信息,還會列出所有編譯時指定的選項,比如:
-D APACHE_MPM_DIR="server/mpm/event" -D APR_HAS_SENDFILE -D APR_HAS_MMAP ...
這些參數決定了 Apache 支持哪些功能以及如何與操作系統交互。例如 -enable-mods-shared=all 表示所有的模塊都是以共享模塊的形式加載的,而 –prefix=/usr/local/apache2 指定了安裝路徑。
有些 Linux 發行版(如 Ubuntu)默認安裝的 Apache 可能不會保留完整的編譯參數。這時候可以通過如下方式間接獲取:
- 查看 /usr/sbin/apachectl -V 或者 /usr/sbin/apache2ctl -V
- 或者查看包管理器的構建日志(較復雜)
編譯 Apache 時常見選項有哪些?
如果你是從源碼編譯 Apache,通常會使用類似以下命令:
./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite --enable-ssl --with-included-apr
幾個關鍵選項說明:
- –prefix=PATH:設置 Apache 安裝路徑,默認是 /usr/local/apache2
- –enable-so:啟用動態模塊加載(DSO)支持,非常關鍵,否則無法使用 .so 模塊
- –enable-rewrite:啟用 URL 重寫模塊(mod_rewrite),對 SEO 和偽靜態很重要
- –enable-ssl:啟用 https 支持(mod_ssl)
- –with-apr 和 –with-apr-util:指定 APR(Apache Portable Runtime)路徑,用于跨平臺支持
- –enable-deflate:啟用壓縮輸出,節省帶寬
- –enable-expires:允許設置緩存過期時間,優化前端性能
你可以通過 ./configure –help 查看完整可選配置項列表,里面有很多細節選項可以根據需要開啟或關閉。
小貼士:如何判斷 Apache 是否支持 mod_rewrite?
除了看編譯參數外,還可以臨時創建一個虛擬主機配置,加入如下內容:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^test$ /index.html [L] </IfModule>
保存后重啟 Apache,并測試訪問 /test 是否跳轉到首頁。如果不報錯且正常跳轉,說明 mod_rewrite 已啟用。
基本上就這些。版本和編譯參數雖然看起來不復雜,但在實際排查兼容性或升級問題時特別有用。