ChatGPT解决这个技术问题 Extra ChatGPT

安装在 Debian 机器上的 Apache 版本

如何检查 Debian 机器上安装了哪个版本的 Apache?

有执行此操作的命令吗?

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的 What topics can I ask about here。也许 Super UserUnix & Linux Stack Exchange 会是一个更好的提问位置。另见Where do I post questions about Dev Ops?
@jww Apache 的管理是许多开发人员开发的基础。目前此页面已被浏览 473k 次,这表明它很有用。这些观点大部分来自从事编程和开发的人,我希望他们发现它有用。我是他们中的一员。

d
daltonfury42

试试 apachectl -V:

$ apachectl -V
Server version: Apache/2.2.9 (Unix)
Server built:   Sep 18 2008 21:54:05
Server's Module Magic Number: 20051115:15
Server loaded:  APR 1.2.7, APR-Util 1.2.7
Compiled using: APR 1.2.7, APR-Util 1.2.7
... etc ...

如果它不适合您,请使用 sudo 运行该命令。


警告:在 Ubuntu 14 上运行 Apache 2.4 时,如果没有 root 权限,apache2ctl -V 将无法工作(...并且它不会打印版本)。而它适用于带有 Apache 2.2 的 Ubuntu 12。棘手。
它适用于 Ubuntu 12.04,我相信很多人仍在使用 Ubuntu 12.04,就像我一样,他们不想升级到 14,直到各种软件的所有错误都被完全消除。y
适用于 Debian 7.1
apachectl -V 在 suse10.04 上不起作用,我们必须输入 /usr/sbin/apache2ctl -v 才能获得具有 root 权限的正确答案
在 Red Hat Enterprise Linux 6(64 位)上运行良好
E
Elzo Valugi

这适用于我的 Debian:

$ /usr/sbin/apache2 -v

e
eaykin

对于较新的 Debian 或 Ubuntu 发行版,您应该使用 apache2ctl -v 或 apache2 -v。

apache:/etc/apache2# apache2ctl -v
Server version: Apache/2.2.16 (Debian)
Server built:   May 12 2011 11:58:18

或者您可以使用 apache2 -V 获取更多信息。

apache2 -V
Server version: Apache/2.2.16 (Debian)
Server built:   May 12 2011 11:58:18
Server's Module Magic Number: x
Server loaded:  APR 1.4.2, APR-Util 1.3.9
Compiled using: APR 1.2.12, APR-Util 1.3.9
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....

大写 -V 或小写 -v 都可以,但您可能需要使用 sudo,除非您以 root 身份登录。
K
Keshav Dial

该命令根据您的 Linux 版本命名 Apache 服务器的方式而有所不同。

在 Debian 和 Mac 操作系统上:

apachectl -v

在 Red Hat 和 Amazon 的 EC2 Linux 上使用:

httpd -v

在其他版本的 Linux 上尝试:

apache2 -v

您可以使用两种不同的标志:

-v # gives you the version number
-V # gives you the compile settings including version number.

如果您想像 user3786265 那样使用完整目录运行该命令,但不知道您的 apache 所在的位置,请使用 whereis 命令:

whereis httpd

杰出的。您的答案涵盖了可能试图在其中找到 Apache 版本的服务器环境的范围。如果这是我的问题,我会将此标记为答案。也许我建议添加到您的答案中的唯一一件事是通用路径。在某些环境中,该命令可能不在 $PATH 中,因此尝试这些命令的人可能会卡住。例如,在我的 Debian enviro 中,我必须使用 $ /usr/sbin/apache2 -v,因为只有 $ apache2 -v 返回 command not found。如果需要,此命令将帮助用户找到 apache 的路径:ps -ef | grep apache
apache2 -v 也适用于 Debian(至少 Debian 8 (Jessie) 在 Raspberry Pi 上)。
P
Peter Mortensen

我正在使用 Red Hat Linux 并且以下命令有效:

httpd -V

T
Toby Speight

我认为你必须确定你有什么类型的安装二进制或源代码。要检查安装了哪些二进制包:使用 root 权限执行以下命令:

dpkg -l |grep apache2

结果应该是这样的:

dpkg -l |grep apache2
ii  apache2                               2.4.10-10+deb8u8                      amd64        Apache HTTP Server
ii  apache2-bin                           2.4.10-10+deb8u8                      amd64        Apache HTTP Server (modules and other binary files)
ii  apache2-data                          2.4.10-10+deb8u8                      all          Apache HTTP Server (common files)
ii  apache2-doc                           2.4.10-10+deb8u8                      all          Apache HTTP Server (on-site documentation)

要查找版本,您可以运行:

apache2ctl -V |grep -i "Server version"

结果应该类似于: 服务器版本:Apache/2.4.10 (Debian)


重要的是,这个答案还显示了某些 Debian 安装上的 SUB 版本 - 2.4.48 还具有来自 apache 的主要 2.4.51 的反向移植安全修复程序。例如,此方法将版本显示为 2.4.48-3.x,而不仅仅是不完全正确的 2.4.48
Y
Yogesh Yadav

用 sudo 试试

apachectl -V
-bash: apachectl: command not found

sudo apachectl -V
Server version: Apache/2.4.6 (Debian)
Server built:   Aug 12 2013 18:20:23
Server's Module Magic Number: 20120211:24
Server loaded:  APR 1.4.8, APR-UTIL 1.5.3
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   32-bit
Server MPM:     prefork
  threaded:     no
  forked:     yes (variable process count)
Server compiled with....
bla bla....

如果您的配置文件中当前存在语法错误,这将不起作用
P
Peter Mortensen

您也可以直接使用包管理器:

dpkg -l | grep apache

这不仅仅关注版本号,它还会进行更广泛的搜索,这将为您提供其他有用的信息,例如模块版本。


对 apache 的限制可以直接传递给 dpkg。对于自动解释,您还需要一个值而不是列表,并且您不应该显示“已卸载”的 apache2-* 包。另请考虑dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1
R
Raptor

另一种在基于 Debian 的系统上检查软件包(包括 Apache)安装版本的方法,我们可以使用:

apt-cache policy <package_name>

例如对于 Apache

apt-cache policy apache2

这将显示类似(查看 Installed 行):

$ apt-cache policy apache2
apache2:
  Installed: (none)
  Candidate: 2.2.22-1ubuntu1.9
  Version table:
     2.2.22-1ubuntu1.9 0
        500 http://hk.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     2.2.22-1ubuntu1 0
        500 http://hk.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

P
Peter Mortensen

对我来说,这适用于 Debian 6(挤压):

Linux www809 2.6.26-2-xen-686 #1 SMP Wed Sep 21 09:56:47 UTC 2011 i686 GNU/Linux

我必须走正确的道路:

/usr/local/apache/bin** $ **./apachectl -v

./apachectl:第 71 行:ulimit:打开文件:无法修改限制:不允许操作服务器版本:Apache/2.2.21(Unix)服务器构建:2011 年 12 月 17 日 19:57:53


P
Peter Mortensen

我尝试运行命令“httpd -V”和“apachectl -V”,但我无法执行并收到错误:

-ksh: php: not found [没有这样的文件或目录]

然后我尝试了另一种方法。我转到服务器上的 Apache 目录,然后尝试执行命令:

./apachectl -v

这对我有用并返回了输出:

Server version: Apache/2.2.20 (Unix)
Server built:   Sep  6 2012 17:22:16

我希望这有帮助。


P
Peter Mortensen

您可以使用 apachectl -V 或 apachectl -v。两者都会返回 Apache 版本信息! xgqfrms:~/workspace $ apachectl -v 服务器版本:Apache/2.4.7 (Ubuntu) 服务器构建时间:2016 年 7 月 15 日 15:34:04 xgqfrms:~/workspace $ apachectl -V 服务器版本:Apache/2.4.7 (Ubuntu) )服务器构建:2016 年 7 月 15 日 15:34:04 服务器模块幻数:20120211:27 服务器加载:APR 1.5.1-dev,APR-UTIL 1.5.3 编译使用:APR 1.5.1-dev,APR-UTIL 1.5 .3 架构:64 位服务器 MPM:prefork 线程:无分叉:是(可变进程计数)服务器编译时使用.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6(启用 IPv4 映射地址)-D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/apache .pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf" Y你可能更像是使用 apache2 -V 或 apache2 -v。好像更容易记住! xgqfrms:~/workspace $ apache2 -v 服务器版本:Apache/2.4.7 (Ubuntu) 服务器构建:2016 年 7 月 15 日 15:34:04 xgqfrms:~/workspace $ apache2 -V 服务器版本:Apache/2.4.7 (Ubuntu) )服务器构建:2016 年 7 月 15 日 15:34:04 服务器模块幻数:20120211:27 服务器加载:APR 1.5.1-dev,APR-UTIL 1.5.3 编译使用:APR 1.5.1-dev,APR-UTIL 1.5 .3 架构:64 位服务器 MPM:prefork 线程:无分叉:是(可变进程计数)服务器编译时使用.... -D APR_HAS_SENDFILE -D APR_HAS_MMAP -D APR_HAVE_IPV6(启用 IPv4 映射地址)-D APR_USE_SYSVSEM_SERIALIZE -D APR_USE_PTHREAD_SERIALIZE -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT -D APR_HAS_OTHER_CHILD -D AP_HAVE_RELIABLE_PIPED_LOGS -D DYNAMIC_MODULE_LIMIT=256 -D HTTPD_ROOT="/etc/apache2" -D SUEXEC_BIN="/usr/lib/apache2/suexec" -D DEFAULT_PIDLOG="/apache .pid" -D DEFAULT_SCOREBOARD="logs/apache_runtime_status" -D DEFAULT_ERRORLOG="logs/error_log" -D AP_TYPES_CONFIG_FILE="mime.types" -D SERVER_CONFIG_FILE="apache2.conf"


K
Kev

对我来说,apachectl -V 不起作用,但 apachectl fullstatus 给了我我的版本。


'apachectl -v' 适用于 Mac、CentOS 和 Ubuntu。你在哪个发行版上运行? apachectl fullstatus 需要 mod_status 才能完成这项工作。所以它也不是通用的解决方案。
apachectl fullstatus 对我不起作用。我得到了 /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspberry Pi 上的 Raspbian)。但是,apachectl -V 确实有效。
l
luis.espinal

Apache 的某些安装是 fubar(想想 Oracle 对它的打包,OHS)并且不理解 -V 标志,也不能直接调用而不会遇到缺少库的错误。

最简单的方法是在 httpd 二进制文件上使用 strings 命令(binutils 的一部分)并使用 grep 获取可能类似于版本的字符串。例如,假设您的 httpd 二进制文件位于目录 /foo/bar 下:

$ strings /foo/bar/httpd  | grep 2.2
GLIBC_2.2.5
Oracle-HTTP-Server/2.2.22 (Unix)
Success_Accepted_202
202 Accepted

大多数二进制文件(不是全部)都包含它们的版本(至少是它们的主要版本)作为静态字符串。这是我获取版本的首选方式(或证实二进制文件的帮助信息与实际情况相符。)


httpd 是否需要在当前目录中才能正常工作?
这帮助我在新的 Ubuntu 安装中找到了我挂载的旧根目录上的先前版本。值得一提:“strings”是包“binutils”的一部分
@PeterMortensen,是的。我想我的示例假设 httpd 将位于当前目录中(并且读者将从示例中推断并根据需要进行调整。)我现在正在编辑我的答案以反映这一点。
@Zefiro,感谢您的提醒。我将更新我的答案以提及 binutils。
K
Kev

或者,不那么直接:

nmap -A localhost -p 80


如果 apache 配置为不向 HTTP 标头添加版本信息,您将找不到任何东西。
可能未安装 nmap(例如在 Raspberry Pi 上):-bash: nmap: command not found
D
Defrag

当然,在 shell 中键入 /usr/sbin/apache2 -v 是最好和最快的方法,顺便说一下,这是另一种选择,以防万一你的服务器中也有 PHP 并且你有兴趣收集 Apache 版本(以及更多更多信息)在快速编程步骤中。

只需在您的 Apache Web 根文件夹(或任何您喜欢的文件夹)中创建一个 info.php 文件,然后在其中写入以下内容:

<?php
    phpinfo();
?>

现在转到 yoursite.com/info.php(或本地机器的 localhost/info.php)。

您将在 PHP 变量部分看到您的 Apache 版本,这是一个示例:

phpinfo() example dump page

另外,请注意,这些步骤显然适用于任何具有 PHP 集成的 Web 服务器,因此它不仅限于 Apache,一旦创建该页面,在开发时可能会很方便(只是不要忘记在生产环境中将其删除!!)


a
agc
dlocate -s apache2 | grep '^Version:'

M
Mansoor

适用于 Debian 11 靶心

/usr/sbin/apache2 -v