Версия Apache, установленная на компьютере Debian

314

Как я могу проверить, какая версия Apache установлена ​​на компьютере Debian?

Есть ли команда для этого?

pindiwala
источник
4
Stack Overflow - сайт для вопросов программирования и разработки. Этот вопрос кажется не по теме, потому что он не о программировании или разработке. Смотрите, какие темы я могу задать здесь, в Справочном центре. Возможно, лучше спросить Super User или Unix & Linux Stack Exchange . Также см. Где я могу разместить вопросы о Dev Ops? ,
jww

Ответы:

418

Попробуйте 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.

Тодд Гамблин
источник
2
Предупреждение: при работе Apache 2.4 в Ubuntu 14 apache2ctl -Vне работает без привилегий root (... и не печатает версию). Принимая во внимание, что это работает на Ubuntu 12 с Apache 2.2. Tricky.
philippe_b
Она работает на Ubuntu 12.04 , и я считаю, что многие люди до сих пор используют Ubuntu 12.04, как и я, которые не хотят , чтобы обновить до 14 еще пока все ошибки с различным программным обеспечением не устранен complete.y
JohnMerlino
Работает наDebian 7.1
Циклон-код
apachectl -V не работает на suse10.04, вместо этого мы должны набрать / usr / sbin / apache2ctl -v, чтобы получить правильный ответ с правами root
farzam
1
Хорошо
147

Это работает для моего Debian:

$ /usr/sbin/apache2 -v
Эльзо Валуги
источник
34

Вы должны использовать apache2ctl -v или apache2 -v для более новых дистрибутивов Debian или Ubuntu.

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....
eaykin
источник
Можно использовать верхний -V или нижний регистр -v, но вам может потребоваться использовать sudo, если вы не вошли в систему как root.
sdexp
27

Команда зависит от того, как ваша версия Linux назвала сервер Apache.

В Debian и Mac OS:

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.

Если вы хотите выполнить команду с полным каталогом, как пользователь3737265, но не знаете, где находится ваш apache, используйте whereisкоманду:

whereis httpd
Кешав Диал
источник
1
Brilliant. Ваш ответ охватывает диапазон серверных сред, в которых можно пытаться найти версию Apache. Если бы это был мой вопрос, я бы пометил это как ответ . Возможно, единственное, что я бы предложил добавить к вашему ответу, - это общие пути. В некоторых средах команда может отсутствовать в переменной $ PATH, поэтому люди, пробующие эти команды, могут застрять. Например, в моей среде Debian я должен был использовать, $ /usr/sbin/apache2 -vпотому что просто $ apache2 -vвозвращается command not found. Эта команда поможет пользователям найти путь к apache, если требуется:ps -ef | grep apache
inspirednz
apache2 -vтакже работает на Debian (по крайней мере, Debian 8 (Jessie) на Raspberry Pi).
Питер Мортенсен
15

Попробуйте с 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....
Йогеш Ядав
источник
Это не будет работать, если в ваших конфигурационных файлах в настоящее время есть синтаксическая ошибка
Вольфганг Фал
12

Я думаю, вы должны быть уверены, какой тип установки у вас бинарный или исходный. Чтобы проверить, какие двоичные пакеты установлены: с правами 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)

Цветомир Цветков
источник
11

Вы также можете напрямую использовать менеджер пакетов:

dpkg -l | grep apache

Это не просто номер версии , а расширенный поиск, который даст вам другую полезную информацию, например, версии модулей.

Balmipour
источник
Ограничение 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.
Smoe
6

Другой способ проверить версию установленного пакета (включая Apache) в системе на основе Debian, мы можем использовать:

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
Raptor
источник
6

Для меня это работает на Debian 6 (Squeeze):

Linux www809 2.6.26-2-xen-686 # 1 SMP Ср 21 сен 09:56:47 UTC 2011 i686 GNU / Linux

Я должен был пойти по правильному пути:

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

./apachectl: строка 71: ulimit: открыть файлы: невозможно изменить ограничение: операция не разрешена.
Версия сервера: Apache / 2.2.21 (Unix).
Сервер построен: 17 дек. 2011 г. 19:57:53

merlinuwe
источник
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

Надеюсь, это поможет.

RDB
источник
5
  1. Вы можете использовать apachectl -Vили apachectl -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 -Vили 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"

xgqfrms
источник
3

У меня apachectl -Vне сработало, но apachectl fullstatusдал мне мою версию.

pindiwala
источник
'apachectl -v' работает для меня на Mac, CentOS и Ubuntu. В каком дистрибутиве вы работали? Для работы apachectl fullstatus требуется mod_status. Так что это тоже не универсальное решение.
Konzulic
apachectl fullstatusне работал для меня. Я получил /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian на Raspberry Pi). Тем apachectl -Vне менее, сделал работу.
Питер Мортенсен
3

Некоторые установки Apache являются fubar (подумайте, что Oracle упаковывает их, OHS) и не понимают флаг -V, и их нельзя вызывать напрямую, не сталкиваясь с отсутствующими ошибками библиотеки.

Самый простой способ - использовать stringsкоманду (часть binutils) в двоичном файле httpd и 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

Большинство двоичных файлов (не все) содержат свои версии (по крайней мере, их основные версии) в виде статических строк. Это мой способ получить версии (или подтвердить, что справочное сообщение двоичного файла соответствует действительности на местах).

luis.espinal
источник
Не httpdобязательно быть в текущем каталоге, чтобы это работало?
Питер Мортенсен
1
Это помогло мне узнать мою предыдущую версию на моем смонтированном старом корне из новой установки Ubuntu. Стоит упомянуть: «Струны» является частью пакета «binutils»
Zefiro
@PeterMortensen, да. Я предполагаю, что мой пример предполагал, что httpd будет в текущем каталоге (и что читатель выведет это из примера и отрегулирует по мере необходимости). Сейчас я редактирую свой ответ, чтобы отразить это .
luis.espinal
@Zefiro, спасибо за внимание. Я обновлю свой ответ, чтобы упомянуть binutils.
luis.espinal
2

Или, менее прямо:

nmap -A localhost -p 80

Чад
источник
Если apache настроен не добавлять информацию о версии в заголовки HTTP, вы ничего не найдете.
Marki555
Nmap не может быть установлен (например, на Raspberry Pi):-bash: nmap: command not found
Питер Мортенсен
2

Надо просто ввести / usr / sbin / apache2 -v в оболочку - это лучший и самый быстрый способ, кстати, вот еще один вариант, на случай, если на вашем сервере есть и PHP, и вы заинтересованы в сборе версии Apache (и многих других). больше информации) в быстрых программных шагах.

Просто создайте файл info.php в корневой веб-папке Apache (или как вам угодно) и запишите в него:

<?php
    phpinfo();
?>

Теперь перейдите на yoursite.com/info.php (или localhost / info.php для локальных машин).

Вы увидите свою версию Apache в разделе PHP Variables , вот пример:

phpinfo () пример дампа страницы

Также обратите внимание, что эти шаги, очевидно, применимы к любому веб-серверу с интеграцией PHP, поэтому он не ограничивается Apache, и однажды созданная эта страница может пригодиться при разработке (просто не забудьте удалить ее в производственных средах !!)

Defrag
источник