324

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

有执行此操作的命令吗?

4

18 回答 18

421

试试 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.

于 2008-11-14T09:23:19.080 回答
153

这适用于我的 Debian:

$ /usr/sbin/apache2 -v
于 2012-01-23T13:03:05.597 回答
34

对于较新的 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....
于 2011-08-05T12:48:13.537 回答
28

该命令根据您的 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
于 2016-03-05T01:07:25.977 回答
25

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

httpd -V
于 2014-09-24T08:25:44.773 回答
17

我认为你必须确定你有什么类型的安装二进制或源代码。要检查安装了哪些二进制包:使用 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)

于 2017-04-24T19:36:04.667 回答
16

用 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....
于 2014-09-17T15:34:40.523 回答
11

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

dpkg -l | grep apache

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

于 2015-04-09T09:28:37.520 回答
6

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

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

于 2014-06-28T16:01:17.030 回答
6

另一种在基于 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
于 2015-06-23T06:12:08.313 回答
5

我尝试运行命令“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

我希望这有帮助。

于 2015-11-12T03:52:40.847 回答
5
  1. 您可以使用apachectl -Vapachectl -v。两者都会返回 Apache 版本信息!

        xgqfrms:~/workspace $ apachectl -v
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
    
    
        xgqfrms:~/workspace $ apachectl -V
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
        Server's Module Magic Number: 20120211:27
        Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
        Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
        Architecture:   64-bit
        Server MPM:     prefork
          threaded:     no
            forked:     yes (variable process count)
        Server compiled with....
         -D APR_HAS_SENDFILE
         -D APR_HAS_MMAP
         -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
         -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="/var/run/apache2.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"

  2. 您可能更喜欢使用apache2 -Vor apache2 -v。好像更容易记住!

        xgqfrms:~/workspace $ apache2 -v
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
    
    
        xgqfrms:~/workspace $ apache2 -V
    
        Server version: Apache/2.4.7 (Ubuntu)
        Server built:   Jul 15 2016 15:34:04
        Server's Module Magic Number: 20120211:27
        Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
        Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
        Architecture:   64-bit
        Server MPM:     prefork
          threaded:     no
            forked:     yes (variable process count)
        Server compiled with....
         -D APR_HAS_SENDFILE
         -D APR_HAS_MMAP
         -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
         -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="/var/run/apache2.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"

于 2016-11-07T09:25:51.980 回答
3

对我来说apachectl -V没有用,但apachectl fullstatus给了我我的版本。

于 2008-11-14T09:33:06.627 回答
3

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

最简单的方法是对 httpd 二进制文件和 grep 使用strings命令(部分binutils)来获取可能类似于版本的字符串。例如,假设您的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

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

于 2016-09-09T12:22:17.570 回答
2

或者,不那么直接:

nmap -A localhost -p 80

于 2008-11-14T09:24:41.760 回答
2

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

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

<?php
    phpinfo();
?>

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

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

phpinfo() 示例转储页面

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

于 2017-02-17T01:04:55.093 回答
1
dlocate -s apache2 | grep '^Version:'
于 2016-08-05T19:58:10.173 回答
0

适用于 Debian 11 靶心

/usr/sbin/apache2 -v
于 2022-02-16T20:52:54.840 回答