Wersja Apache zainstalowana na maszynie Debiana


314

Jak mogę sprawdzić, która wersja Apache jest zainstalowana na maszynie Debiana?

Czy jest na to polecenie?


4
Stack Overflow to strona z pytaniami dotyczącymi programowania i programowania. To pytanie wydaje się nie na temat, ponieważ nie dotyczy programowania ani programowania. Zobacz o jakie tematy mogę pytać tutaj w Centrum pomocy. Być może lepiej byłoby zapytać Super User lub Unix & Linux Stack Exchange . Zobacz także Gdzie mogę zadawać pytania dotyczące deweloperów? .
jww

Odpowiedzi:


418

Spróbuj 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 ...

Jeśli to nie działa, uruchom polecenie za pomocą sudo.


2
Ostrzeżenie: podczas uruchamiania Apache 2.4 na Ubuntu 14 apache2ctl -Vnie działa bez uprawnień roota (... i nie drukuje wersji). Podczas gdy działa na Ubuntu 12 z Apache 2.2. Zdradliwy.
philippe_b

Działa na Ubuntu 12.04 i uważam, że wiele osób nadal używa Ubuntu 12.04, takich jak ja, którzy nie chcą jeszcze aktualizacji do 14, dopóki wszystkie błędy związane z różnymi programami nie zostaną całkowicie wyeliminowane.
Y

Działa naDebian 7.1
Cyclonecode

apachectl -V nie działa na suse10.04, zamiast tego musimy wpisać / usr / sbin / apache2ctl -v, aby uzyskać właściwą odpowiedź z uprawnieniami roota
farzam

1
Działa dobrze na Red Hat Enterprise Linux 6 (64-bit)
DemiSheep


34

Powinieneś użyć apache2ctl -v lub apache2 -v dla nowszych dystrybucji Debiana lub Ubuntu.

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

lub możesz użyć apache2 -V, aby uzyskać więcej informacji.

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

Zarówno wielka-V, jak i mała -v jest w porządku, ale może być konieczne użycie sudo, chyba że jesteś zalogowany jako root.
sdexp,

27

Polecenie różni się w zależności od tego, jak Twoja wersja systemu Linux nazwała serwer Apache.

W systemach Debian i Mac OS:

apachectl -v

W systemach Red Hat i Amazon EC2 Linux:

httpd -v

W innych wersjach systemu Linux spróbuj:

apache2 -v

Możesz użyć dwóch różnych flag:

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

Jeśli chcesz uruchomić polecenie z pełnym katalogiem, tak jak zrobił to użytkownik 3786265, ale nie wiesz, gdzie znajduje się twój apache, użyj whereispolecenia:

whereis httpd

1
Znakomity. Twoja odpowiedź obejmuje zakres środowisk serwerowych, w których można próbować znaleźć wersję Apache. Gdyby to było moje pytanie, zaznaczyłbym to jako odpowiedź . Być może jedyną rzeczą, którą sugerowałbym dodanie do twojej odpowiedzi, są wspólne ścieżki. W niektórych środowiskach polecenie może nie znajdować się w zmiennej $ PATH, więc ludzie próbujący je wykonać mogą utknąć. np. W moim środowisku Debiana musiałem użyć, $ /usr/sbin/apache2 -vponieważ właśnie $ apache2 -vpowraca command not found. Polecenie to pomoże użytkownikom zlokalizować ścieżkę do apache, jeśli wymagane:ps -ef | grep apache
inspirednz

apache2 -vdziała również na Debianie (przynajmniej Debian 8 (Jessie) na Raspberry Pi).
Peter Mortensen


15

Wypróbuj z 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....

To nie zadziała, jeśli w twoich plikach konfiguracyjnych występuje błąd składniowy
Wolfgang Fahl

12

Myślę, że musisz mieć pewność, jaki typ instalacji posiadasz w wersji binarnej lub źródłowej. Aby sprawdzić, które pakiety binarne są zainstalowane: z uprawnieniami administratora wykonaj następujące polecenie:

dpkg -l |grep apache2

wynikiem powinno być coś takiego:

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)

Aby znaleźć wersję, możesz uruchomić:

apache2ctl -V |grep -i "Server version"

wynik powinien być mniej więcej taki: Wersja serwera: Apache / 2.4.10 (Debian)


11

Możesz także użyć menedżera pakietów bezpośrednio:

dpkg -l | grep apache

Nie dotyczy to tylko numeru wersji , ale spowoduje szersze wyszukiwanie, które dostarczy Ci innych przydatnych informacji, takich jak wersje modułów.


Ograniczenie do apache można przekazać bezpośrednio do dpkg. Do automatycznej interpretacji potrzebujesz także pojedynczej wartości zamiast listy i nie powinieneś pokazywać „odinstalowanych” pakietów apache2- *. Proszę również rozważyć dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-lub dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1.
smoe

6

Innym sposobem na sprawdzenie wersji zainstalowanej pakietu (w tym Apache) w systemie opartym na Debianie, możemy użyć:

apt-cache policy <package_name>

np. dla Apache

apt-cache policy apache2

który pokaże coś w rodzaju (spójrz na Installedlinię):

$ 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

Dla mnie działa to na Debianie 6 (Squeeze):

Linux www809 2.6.26-2-xen-686 # 1 SMP Środa 21 września 09:56:47 UTC 2011 i686 GNU / Linux

Musiałem iść właściwą ścieżką:

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

./apachectl: linia 71: ulimit: otwarte pliki: nie można modyfikować limitu: Operacja niedozwolona
Wersja serwera: Apache / 2.2.21 (Unix)
Zbudowany serwer: 17 grudnia 2011 19:57:53


5

Próbowałem uruchomić polecenie „httpd -V” i „apachectl -V”, ale nie mogłem wykonać i pojawiał się błąd:

-ksh: php: nie znaleziono [Brak takiego pliku lub katalogu]

Potem spróbowałem w inny sposób. Poszedłem do katalogu Apache na moim serwerze, a następnie spróbowałem wykonać polecenie:

./apachectl -v

To zadziałało dla mnie i zwróciło wynik:

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

Mam nadzieję, że to pomoże.


5
  1. Możesz użyć apachectl -Vlub apachectl -v. Oba zwrócą informacje o wersji 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. Możesz być bardziej jak za pomocą apache2 -Vlub apache2 -v. Łatwiej zapamiętać!

        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

Dla mnie apachectl -Vnie działał, ale apachectl fullstatusdał mi moją wersję.


„apachectl -v” działa dla mnie na komputerach Mac, CentOS i Ubuntu. Na której dystrybucji działałeś? apachectl fullstatus wymaga mod_status, aby to działało. Więc to nie jest uniwersalne rozwiązanie.
Konzulic,

apachectl fullstatusnie działało dla mnie. Mam /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian on a Raspberry Pi). Jednak apachectl -Vdziałało.
Peter Mortensen

3

Niektóre instalacje Apache są fubarowe (pomyślmy o pakiecie Oracle, OHS) i nie rozumieją flagi -V, ani nie mogą być wywoływane bezpośrednio bez błędów w bibliotece.

Najłatwiejszym sposobem jest użycie stringspolecenia (części binutils) w pliku binarnym httpd i grep dla ciągu, który może przypominać wersję. Na przykład zakładając, że Twój httpdplik binarny znajduje się w katalogu /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

Większość plików binarnych (nie wszystkie) zawiera ich wersję (przynajmniej wersję główną) jako ciągi statyczne. Jest to mój sposób na uzyskanie wersji (lub potwierdzenie, że komunikat pomocy binarnego pasuje do rzeczywistej rzeczywistości w terenie).


Czy to nie httpdmusi być w bieżącym katalogu, aby to działało?
Peter Mortensen

1
To pomogło mi znaleźć moją poprzednią wersję na moim zamontowanym starym katalogu głównym z nowej instalacji Ubuntu. Warto wspomnieć: „ciągi” są częścią pakietu „binutils”
Zefiro

@PeterMortensen, tak. Wydaje mi się, że mój przykład zakłada, że ​​httpd będzie w bieżącym katalogu (i że czytelnik wywnioskuje to z przykładu i odpowiednio dostosuje). Teraz edytuję odpowiedź, aby to odzwierciedlić .
luis.spinal

@Zefiro, dziękuję za zgłoszenie się. Zaktualizuję moją odpowiedź, aby wspomnieć binutils.
luis.espinal

2

Lub mniej bezpośrednio:

nmap -A localhost -p 80


Jeśli apache jest skonfigurowany tak, aby nie dodawał informacji o wersji do nagłówków HTTP, niczego nie znajdziesz.
Marki555

nmap nie może być zainstalowany (np. na Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

Na pewno wpisanie / usr / sbin / apache2 -v w powłoce jest najlepszym i najszybszym sposobem, aby przejść, przy okazji, oto inna opcja, na wypadek, gdyby na serwerze był również PHP i jesteś zainteresowany zbieraniem wersji Apache (i wiele innych więcej informacji) w szybkich krokach programistycznych.

Po prostu stwórz plik info.php w swoim głównym folderze internetowym Apache (lub cokolwiek chcesz) i zapisz w nim:

<?php
    phpinfo();
?>

Teraz przejdź do yoursite.com/info.php (lub localhost / info.php dla lokalnych komputerów).

Zobaczysz swoją wersję Apache w sekcji Zmienne PHP , oto przykład:

przykładowa strona zrzutu phpinfo ()

Zauważ też, że te kroki oczywiście dotyczą każdego serwera WWW z integracją PHP, więc nie ogranicza się to do Apache, a raz utworzona strona może być przydatna podczas tworzenia (nie zapomnij usunąć jej w środowiskach produkcyjnych !!)


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.