Jak mogę sprawdzić, która wersja Apache jest zainstalowana na maszynie Debiana?
Czy jest na to polecenie?
Jak mogę sprawdzić, która wersja Apache jest zainstalowana na maszynie Debiana?
Czy jest na to polecenie?
Odpowiedzi:
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
.
apache2ctl -V
nie działa bez uprawnień roota (... i nie drukuje wersji). Podczas gdy działa na Ubuntu 12 z Apache 2.2. Zdradliwy.
Debian 7.1
Działa to dla mojego Debiana:
$ /usr/sbin/apache2 -v
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....
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 whereis
polecenia:
whereis httpd
$ /usr/sbin/apache2 -v
ponieważ właśnie $ apache2 -v
powraca command not found
. Polecenie to pomoże użytkownikom zlokalizować ścieżkę do apache, jeśli wymagane:ps -ef | grep apache
apache2 -v
działa również na Debianie (przynajmniej Debian 8 (Jessie) na Raspberry Pi).
Używam Red Hat Linux i działa następująca komenda:
httpd -V
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....
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)
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.
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
.
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 Installed
linię):
$ 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
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
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.
Możesz użyć apachectl -V
lub 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"
Możesz być bardziej jak za pomocą apache2 -V
lub 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"
Dla mnie apachectl -V
nie działał, ale apachectl fullstatus
dał mi moją wersję.
apachectl fullstatus
nie 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 -V
działało.
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 strings
polecenia (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 httpd
plik 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).
httpd
musi być w bieżącym katalogu, aby to działało?
Lub mniej bezpośrednio:
nmap -A localhost -p 80
-bash: nmap: command not found
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 !!)