Wie kann ich überprüfen, welche Version von Apache auf einem Debian-Computer installiert ist?
Gibt es dafür einen Befehl?
Wie kann ich überprüfen, welche Version von Apache auf einem Debian-Computer installiert ist?
Gibt es dafür einen Befehl?
Antworten:
Versuchen Sie es mit 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 ...
Wenn es bei Ihnen nicht funktioniert, führen Sie den Befehl mit aus sudo
.
apache2ctl -V
funktioniert dies nicht ohne Root-Rechte (... und die Version wird nicht gedruckt). Während es unter Ubuntu 12 mit Apache 2.2 funktioniert. Tricky.
Debian 7.1
Das funktioniert bei meinem Debian:
$ /usr/sbin/apache2 -v
Sie sollten apache2ctl -v oder apache2 -v für neuere Debian- oder Ubuntu-Distributionen verwenden.
apache:/etc/apache2# apache2ctl -v
Server version: Apache/2.2.16 (Debian)
Server built: May 12 2011 11:58:18
oder Sie können apache2 -V verwenden , um weitere Informationen zu erhalten.
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....
Der Befehl hängt davon ab, wie Ihre Linux-Version den Apache-Server benannt hat.
Unter Debian und Mac OS:
apachectl -v
Unter Red Hat und Amazon EC2 Linux verwenden Sie:
httpd -v
Versuchen Sie auf anderen Linux-Versionen:
apache2 -v
Sie können zwei verschiedene Flags verwenden:
-v # gives you the version number
-V # gives you the compile settings including version number.
Wenn Sie den Befehl wie user3786265 mit dem vollständigen Verzeichnis ausführen möchten, aber nicht wissen, wo sich Ihr Apache befindet, verwenden Sie den folgenden whereis
Befehl:
whereis httpd
$ /usr/sbin/apache2 -v
weil nur $ apache2 -v
zurückkehrt command not found
. Dieser Befehl hilft Benutzern, den Pfad zu Apache zu finden, falls erforderlich:ps -ef | grep apache
apache2 -v
funktioniert auch auf Debian (mindestens Debian 8 (Jessie) auf Raspberry Pi).
Ich verwende Red Hat Linux und der folgende Befehl funktioniert:
httpd -V
Probieren Sie es mit 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....
Ich denke, Sie müssen sicher sein, welche Art von Installation Sie Binär oder Quelle haben. So überprüfen Sie, welche Binärpakete installiert sind: Führen Sie mit Root-Rechten den folgenden Befehl aus:
dpkg -l |grep apache2
Ergebnis sollte so etwas sein wie:
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)
So finden Sie die Version, die Sie ausführen können:
apache2ctl -V |grep -i "Server version"
Ergebnis sollte ungefähr so aussehen: Serverversion: Apache / 2.4.10 (Debian)
Sie können den Paketmanager auch direkt verwenden:
dpkg -l | grep apache
Dies konzentriert sich nicht nur auf die Versionsnummer , sondern führt eine breitere Suche durch, die Ihnen andere nützliche Informationen wie Modulversionen liefert.
dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-
oder dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1
.
Eine andere Möglichkeit, eine auf einem Debian-basierten System installierte Paketversion (einschließlich Apache) zu überprüfen, können wir verwenden:
apt-cache policy <package_name>
zB für Apache
apt-cache policy apache2
was so etwas wie zeigt (siehe Installed
Zeile):
$ 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
Für mich funktioniert das unter Debian 6 (Squeeze):
Linux www809 2.6.26-2-xen-686 # 1 SMP Mi Sep 21 09:56:47 UTC 2011 i686 GNU / Linux
Ich musste den richtigen Weg gehen:
/usr/local/apache/bin** $ **./apachectl -v
./apachectl: Zeile 71: ulimit: Dateien öffnen: Limit kann nicht geändert werden: Vorgang nicht zulässig Serverversion
: Apache / 2.2.21 (Unix)
Server erstellt: 17. Dezember 2011 19:57:53
Ich habe versucht, die Befehle "httpd -V" und "apachectl -V" auszuführen, konnte sie jedoch nicht ausführen und erhielt den Fehler:
-ksh: php: nicht gefunden [Keine solche Datei oder kein solches Verzeichnis]
Dann habe ich es anders versucht. Ich ging in das Apache-Verzeichnis auf meinem Server und versuchte dann, den folgenden Befehl auszuführen:
./apachectl -v
Dies funktionierte für mich und gab die Ausgabe zurück:
Server version: Apache/2.2.20 (Unix)
Server built: Sep 6 2012 17:22:16
Ich hoffe das hilft.
Sie können apachectl -V
oder verwenden apachectl -v
. Beide geben die Apache-Versionsinformationen zurück!
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"
Möglicherweise verwenden Sie eher apache2 -V
oder apache2 -v
. Es scheint leichter zu merken!
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"
Für mich apachectl -V
hat das nicht funktioniert, aber apachectl fullstatus
mir meine Version gegeben.
apachectl fullstatus
hat bei mir nicht funktioniert. Ich habe /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.
(Debian 8 - Raspbian auf einem Raspberry Pi). Hat apachectl -V
aber funktioniert.
Einige Installationen von Apache sind fubar (denken Sie an Oracle's Packaging, OHS) und verstehen das -V-Flag nicht und können auch nicht direkt aufgerufen werden, ohne dass fehlende Bibliotheksfehler auftreten.
Am einfachsten ist es, den strings
Befehl (Teil von binutils
) in der httpd-Binärdatei und grep für eine Zeichenfolge zu verwenden, die möglicherweise einer Version ähnelt. Angenommen, Ihre httpd
Binärdatei befindet sich im Verzeichnis /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
Die meisten Binärdateien (nicht alle) enthalten ihre Version (zumindest ihre Hauptversion) als statische Zeichenfolgen. Dies ist mein Weg, um Versionen zu erhalten (oder um zu bestätigen, welche Hilfemeldung einer Binärdatei mit der Realität vor Ort wirklich übereinstimmt).
httpd
im aktuellen Verzeichnis sein, damit dies funktioniert?
Oder weniger direkt:
nmap -A localhost -p 80
-bash: nmap: command not found
Sicherlich ist die Eingabe von / usr / sbin / apache2 -v in die Shell der beste und schnellste Weg. Übrigens, hier ist eine weitere Option, nur für den Fall, dass sich auch PHP auf Ihrem Server befindet und Sie daran interessiert sind, die Apache-Version (und vieles mehr) zu sammeln mehr Infos) in schnellen programmatischen Schritten.
Erstellen Sie einfach eine info.php- Datei in Ihrem Apache- Webstammordner (oder was auch immer Sie möchten ) und schreiben Sie diese hinein:
<?php
phpinfo();
?>
Gehen Sie jetzt zu yoursite.com/info.php (oder localhost / info.php für lokale Computer).
Sie sehen Ihre Apache-Version im Abschnitt PHP-Variablen . Hier ein Beispiel:
Beispiel-Dump-Seite für phpinfo ()
Beachten Sie außerdem, dass diese Schritte offensichtlich für jeden Webserver mit PHP-Integration gelten. Sie sind also nicht auf Apache beschränkt. Sobald diese Seite erstellt wurde, kann sie bei der Entwicklung hilfreich sein (vergessen Sie nur nicht, sie in Produktionsumgebungen zu entfernen !!).