Version von Apache auf einem Debian-Computer installiert

314

Wie kann ich überprüfen, welche Version von Apache auf einem Debian-Computer installiert ist?

Gibt es dafür einen Befehl?

pindiwala
quelle
4
Stack Overflow ist eine Site für Programmier- und Entwicklungsfragen. Diese Frage scheint nicht zum Thema zu gehören, da es nicht um Programmierung oder Entwicklung geht. Siehe Welche Themen kann ich hier in der Hilfe erfragen? Vielleicht ist Super User oder Unix & Linux Stack Exchange ein besserer Ort, um zu fragen. Siehe auch Wo poste ich Fragen zu Dev Ops? .
JWW

Antworten:

418

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.

Todd Gamblin
quelle
2
Warnung: Wenn Sie Apache 2.4 unter Ubuntu 14 ausführen, apache2ctl -Vfunktioniert dies nicht ohne Root-Rechte (... und die Version wird nicht gedruckt). Während es unter Ubuntu 12 mit Apache 2.2 funktioniert. Tricky.
philippe_b
Es funktioniert unter Ubuntu 12.04 und ich glaube, dass viele Leute immer noch Ubuntu 12.04 verwenden, wie ich, die noch kein Upgrade auf 14 durchführen möchten, bis alle Fehler mit verschiedener Software vollständig beseitigt
sind.y
Funktioniert amDebian 7.1
Cyclonecode
apachectl -V funktioniert nicht mit suse10.04, stattdessen müssen wir / usr / sbin / apache2ctl -v eingeben, um die richtige Antwort mit Root-Erlaubnis zu erhalten
farzam
1
Funktionierte gut unter Red Hat Enterprise Linux 6 (64-Bit)
DemiSheep
147

Das funktioniert bei meinem Debian:

$ /usr/sbin/apache2 -v
Elzo Valugi
quelle
34

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....
eaykin
quelle
Entweder -V oder Kleinbuchstaben -v ist in Ordnung, aber Sie müssen möglicherweise sudo verwenden, es sei denn, Sie sind als root angemeldet.
Sdexp
27

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 whereisBefehl:

whereis httpd
Keshav Dial
quelle
1
Brillant. Ihre Antwort deckt den Bereich der Serverumgebungen ab, in denen möglicherweise versucht wird, die Apache-Version zu finden. Wenn es meine Frage wäre, hätte ich dies als Antwort markiert . Vielleicht ist das einzige, was ich vorschlagen würde, um Ihre Antwort zu ergänzen, die gemeinsamen Wege. In einigen Umgebungen befindet sich der Befehl möglicherweise nicht im $ PATH, sodass Personen, die diese Befehle ausprobieren, möglicherweise stecken bleiben. zB In meinem Debian-Umfeld musste ich verwenden, $ /usr/sbin/apache2 -vweil nur $ apache2 -vzurückkehrt command not found. Dieser Befehl hilft Benutzern, den Pfad zu Apache zu finden, falls erforderlich:ps -ef | grep apache
inspiriert
apache2 -vfunktioniert auch auf Debian (mindestens Debian 8 (Jessie) auf Raspberry Pi).
Peter Mortensen
15

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....
Yogesh Yadav
quelle
Dies wird nicht funktionieren, wenn es derzeit Syntaxfehler in Ihren Konfigurationsdateien gibt
Wolfgang Fahl
12

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)

Tsvetomir Tsvetkov
quelle
11

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.

Balmipour
quelle
Die Beschränkung auf Apache kann direkt an dpkg übergeben werden. Für eine automatisierte Interpretation benötigen Sie anstelle einer Liste auch einen einzelnen Wert, und die "deinstallierten" apache2- * -Pakete sollten nicht angezeigt werden. Bitte beachten Sie auch 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.
Smoe
6

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 InstalledZeile):

$ 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
Raubvogel
quelle
6

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

Merlinuwe
quelle
5

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.

RDB
quelle
5
  1. Sie können apachectl -Voder 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"

  2. Möglicherweise verwenden Sie eher apache2 -Voder 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"

xgqfrms
quelle
3

Für mich apachectl -Vhat das nicht funktioniert, aber apachectl fullstatusmir meine Version gegeben.

pindiwala
quelle
'apachectl -v' funktioniert für mich unter Mac, CentOS und Ubuntu. Auf welcher Distribution liefen Sie? apachectl fullstatus benötigt mod_status, damit dies funktioniert. Es ist also auch keine universelle Lösung.
Konzulic
apachectl fullstatushat 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 -Vaber funktioniert.
Peter Mortensen
3

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 stringsBefehl (Teil von binutils) in der httpd-Binärdatei und grep für eine Zeichenfolge zu verwenden, die möglicherweise einer Version ähnelt. Angenommen, Ihre httpdBinä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).

luis.espinal
quelle
Muss es nicht httpdim aktuellen Verzeichnis sein, damit dies funktioniert?
Peter Mortensen
1
Dies hat mir geholfen, meine vorherige Version auf meinem gemounteten alten Root aus der neuen Ubuntu-Installation herauszufinden. Erwähnenswert: "Strings" ist Teil des Pakets "binutils"
Zefiro
@ PeterMortensen, yep. Ich denke, mein Beispiel geht davon aus, dass sich httpd im aktuellen Verzeichnis befindet (und dass der Leser dies aus dem Beispiel ableiten und nach Bedarf anpassen würde). Ich bearbeite meine Antwort jetzt, um dies widerzuspiegeln .
Luis.espinal
@ Zefiro, danke für das Heads Up. Ich werde meine Antwort aktualisieren, um binutils zu erwähnen.
Luis.espinal
2

Oder weniger direkt:

nmap -A localhost -p 80

Tschad
quelle
Wenn Apache so konfiguriert ist, dass HTTP-Headern keine Versionsinformationen hinzugefügt werden, werden Sie nichts finden.
Marki555
nmap darf nicht installiert werden (zB auf einem Raspberry Pi):-bash: nmap: command not found
Peter Mortensen
2

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

Defragmentieren
quelle
1
dlocate -s apache2 | grep '^Version:'
agc
quelle