要查看 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 已启用。
基本上就这些。版本和编译参数虽然看起来不复杂,但在实际排查兼容性或升级问题时特别有用。