Версія Apache, встановлена ​​на машині Debian


314

Як я можу перевірити, яка версія Apache встановлена ​​на машині Debian?

Чи є команда для цього?


4
Переповнення стека - це сайт для програмування та питань розробки. Це питання видається поза темою, оскільки мова не йде про програмування чи розробку. Дивіться, які теми я можу запитати тут, у довідковому центрі. Можливо, краще користуватися питаннями 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. Хитрий.
philippe_b

Він працює на Ubuntu 12.04, і я вважаю, що багато людей все ще використовують Ubuntu 12.04, як я, які ще не хочуть оновити до 14, поки всі помилки з різним програмним забезпеченням не будуть усунені завершеними.y
JohnMerlino

Працює надDebian 7.1
Cyclonecode

apachectl -V не працює на suse10.04, замість цього нам потрібно набрати / usr / sbin / apache2ctl -v, щоб отримати правильну відповідь з дозволом root
farzam



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

Або верхній або нижній регістр -v нормально, але вам може знадобитися використовувати sudo, якщо ви не ввійшли як root.
sdexp

27

Команда змінюється залежно від того, як ваша версія Linux назвала Apache Server.

На 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.

Якщо ви хочете запустити команду з повним каталогом, як користувач3786265, але не знаєте, де знаходиться ваш apache, скористайтеся whereisкомандою:

whereis httpd

1
Блискуча. Ваша відповідь охоплює діапазон серверних середовищ, які, можливо, намагаються знайти версію Apache. Якби це було моє запитання, я би позначив це як відповідь . Мабуть, єдине, що я б запропонував додати до вашої відповіді, - це загальні шляхи. У деяких середовищах команда може бути не в $ PATH, тому люди, які намагаються ці команди, можуть застрягнути. напр., у своєму Debian enviro мені довелося використовувати, $ /usr/sbin/apache2 -vтому що просто $ apache2 -vповертається command not found. Ця команда допоможе користувачам знайти шлях до Apache, якщо потрібно:ps -ef | grep apache
inspirednz

apache2 -vтакож працює над Debian (принаймні, Debian 8 (Jessie) на Raspberry Pi).
Пітер Мортенсен


15

Спробуйте це з судо

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

Це не спрацює, якщо у ваших файлах конфігурації є синтаксична помилка
Wolfgang Fahl

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

Це не орієнтоване лише на номер версії , але це зробить більш широкий пошук, який надасть вам іншу корисну інформацію, наприклад версії модулів.


Обмеження на апаш може бути передано безпосередньо на 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

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


5

Я спробував запустити команди "httpd -V" і "apachectl -V", але я не міг виконати і отримував помилку:

-ksh: php: не знайдено [Немає такого файлу чи каталогу]

Тоді я спробував інший спосіб. Я зайшов до каталогу Apache на своєму сервері, а потім спробував виконати команду:

./apachectl -v

Це працювало для мене і повертало вихід:

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

Я сподіваюся, що це допомагає.


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"


3

Для мене 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 - Raspbian on Raspberry Pi). Однак apachectl -Vсправились.
Пітер Мортенсен

3

Деякі установки Apache є фубарами (подумайте, що 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

Більшість бінарних файлів (не всі) містять свою версію (принаймні їх основну версію) у вигляді статичних рядків. Це мій шлях до отримання версій (або для підтвердження того, що бінарне повідомлення про допомогу відповідає дійсності на місцях.)


Не httpdпотрібно знаходитись у поточному каталозі, щоб це працювало?
Пітер Мортенсен

1
Це допомогло мені дізнатися мою попередню версію на моєму старому кореневому файлі з нової установки Ubuntu. Варто згадати: "stringings" є частиною пакету "binutils"
Zefiro

@PeterMortensen, так. Я припускаю, що мій приклад передбачає, що httpd буде в поточному каталозі (і що читач може зробити висновок про це з прикладу і коригувати відповідно до необхідності.) Я редагую свою відповідь зараз, щоб це відобразити .
luis.espinal

@Zefiro, дякую за голову вгору. Я оновлю свою відповідь, щоб згадати бінутили.
luis.espinal

2

Або, менш прямо:

nmap -A localhost -p 80


Якщо apache налаштований не додавати інформацію про версії до заголовків HTTP, ви нічого не знайдете.
Marki555

nmap не може бути встановлений (наприклад, на Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

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

Просто створіть файл info.php у вашій кореневій папці Apache (або що завгодно) та запишіть їх усередину:

<?php
    phpinfo();
?>

Тепер перейдіть на сайт yourite.com/info.php (або localhost / info.php для місцевих машин).

Ви побачите свою версію Apache у розділі змінних PHP , ось приклад:

Приклад дамп-сторінки phpinfo ()

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


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.