Version d'Apache installée sur une machine Debian

314

Comment puis-je vérifier quelle version d'Apache est installée sur une machine Debian?

Existe-t-il une commande pour ce faire?

pindiwala
la source
4
Stack Overflow est un site pour les questions de programmation et de développement. Cette question semble être hors sujet car elle ne concerne pas la programmation ou le développement. Voir Quels sujets puis-je poser ici dans le centre d'aide. Peut-être que Super User ou Unix & Linux Stack Exchange seraient un meilleur endroit pour demander. Voir aussi Où puis-je poster des questions sur Dev Ops? .
JWW

Réponses:

418

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

Si cela ne fonctionne pas pour vous, exécutez la commande avec sudo.

Todd Gamblin
la source
2
Attention: lors de l'exécution d'Apache 2.4 sur Ubuntu 14, apache2ctl -Vne fonctionne pas sans privilèges root (... et il n'imprime pas la version). Alors que cela fonctionne sur Ubuntu 12 avec Apache 2.2. Rusé.
philippe_b
Cela fonctionne sur Ubuntu 12.04 et je pense que beaucoup de gens utilisent encore Ubuntu 12.04, comme moi, qui ne veulent pas passer à 14 jusqu'à ce que tous les bogues avec divers logiciels soient éliminés.
JohnMerlino
Fonctionne surDebian 7.1
Cyclonecode
apachectl -V ne fonctionne pas sur suse10.04 à la place, nous devons taper / usr / sbin / apache2ctl -v pour obtenir la bonne réponse avec l'autorisation root
farzam
1
A bien fonctionné sur Red Hat Enterprise Linux 6 (64 bits)
DemiSheep
147

Cela fonctionne pour mon Debian:

$ /usr/sbin/apache2 -v
Elzo Valugi
la source
34

Vous devez utiliser apache2ctl -v ou apache2 -v pour les distributions Debian ou Ubuntu plus récentes.

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

ou vous pouvez utiliser apache2 -V pour obtenir plus d'informations.

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
la source
Soit -V supérieur ou minuscule -v est correct mais vous devrez peut-être utiliser sudo à moins que vous ne soyez connecté en tant que root.
sdexp
27

La commande varie en fonction de la façon dont votre version de Linux a nommé le serveur Apache.

Sur Debian et Mac OS:

apachectl -v

Sur Red Hat et Amazon EC2 Linux, utilisez:

httpd -v

Sur d'autres versions de Linux, essayez:

apache2 -v

Vous pouvez utiliser deux drapeaux différents:

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

Si vous souhaitez exécuter la commande avec le répertoire complet comme l'a fait user3786265 mais ne savez pas où se trouve votre apache, utilisez la whereiscommande:

whereis httpd
Keshav Dial
la source
1
Brillant. Votre réponse couvre la gamme d'environnements de serveurs dans lesquels vous pourriez essayer de trouver la version d'Apache. Si c'était ma question, j'aurais marqué cela comme la réponse . Peut-être que la seule chose que je suggérerais d'ajouter à votre réponse, ce sont les chemins communs. Dans certains environnements, la commande peut ne pas être dans $ PATH, donc les personnes qui essaient ces commandes peuvent être bloquées. Par exemple, dans mon environnement Debian, je devais utiliser $ /usr/sbin/apache2 -vparce que $ apache2 -vrevient command not found. Cette commande aidera les utilisateurs à localiser le chemin vers apache, si nécessaire:ps -ef | grep apache
inspirationnz
apache2 -vfonctionne également sur Debian (au moins Debian 8 (Jessie) sur Raspberry Pi).
Peter Mortensen
15

Essayez-le avec 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
la source
Cela ne fonctionnera pas s'il y a actuellement une erreur de syntaxe dans vos fichiers de configuration
Wolfgang Fahl
12

Je pense que vous devez être sûr du type d'installation que vous avez en binaire ou en source. Pour vérifier quels packages binaires sont installés: avec les droits root, exécutez la commande suivante:

dpkg -l |grep apache2

le résultat devrait être quelque chose comme:

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)

Pour trouver la version, vous pouvez exécuter:

apache2ctl -V |grep -i "Server version"

le résultat devrait être quelque chose comme: Version du serveur: Apache / 2.4.10 (Debian)

Tsvetomir Tsvetkov
la source
11

Vous pouvez également utiliser directement le gestionnaire de packages:

dpkg -l | grep apache

Cela ne se concentre pas uniquement sur le numéro de version , mais cela fera une recherche plus large, qui vous donnera d'autres informations utiles, comme les versions de module.

Balmipour
la source
La restriction d'apache peut être directement transmise à dpkg. Pour une interprétation automatisée, vous avez également besoin d'une valeur unique plutôt que d'une liste, et vous ne devriez pas avoir les packages apache2- * «désinstallés» affichés. Veuillez également considérer dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-ou dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1.
smoe
6

Une autre façon de vérifier la version installée d'un paquet (y compris Apache) sur un système basé sur Debian, nous pouvons utiliser:

apt-cache policy <package_name>

par exemple pour Apache

apt-cache policy apache2

qui montrera quelque chose comme (regardez la Installedligne):

$ 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
Raptor
la source
6

Pour moi, cela fonctionne sur Debian 6 (Squeeze):

Linux www809 2.6.26-2-xen-686 # 1 SMP mer 21 sept. 09:56:47 UTC 2011 i686 GNU / Linux

Je devais aller dans le bon sens:

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

./apachectl: ligne 71: ulimit: fichiers ouverts: impossible de modifier la limite: opération non autorisée
Version du serveur: Apache / 2.2.21 (Unix) Version du
serveur: 17 décembre 2011 19:57:53

merlinuwe
la source
5

J'ai essayé d'exécuter la commande "httpd -V" et "apachectl -V", mais je n'ai pas pu l'exécuter et j'obtenais l'erreur:

-ksh: php: introuvable [Aucun fichier ou répertoire de ce type]

Ensuite, j'ai essayé une autre façon. Je suis allé dans le répertoire Apache sur mon serveur, puis j'ai essayé d'exécuter la commande:

./apachectl -v

Cela a fonctionné pour moi et a renvoyé la sortie:

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

J'espère que ça aide.

RDB
la source
5
  1. Vous pouvez utiliser apachectl -Vou apachectl -v. Les deux renverront les informations de version d'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. Vous préférerez peut-être utiliser apache2 -Vou apache2 -v. Cela semble plus facile à retenir!

        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
la source
3

Pour moi apachectl -Vn'a pas fonctionné, mais apachectl fullstatusm'a donné ma version.

pindiwala
la source
'apachectl -v' fonctionne pour moi sur Mac, CentOS et Ubuntu. Sur quelle distribution étiez-vous? apachectl fullstatus a besoin de mod_status pour que cela fonctionne. Ce n'est donc pas une solution universelle non plus.
Konzulic
apachectl fullstatusN'a pas travaillé pour moi. J'ai eu /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian sur un Raspberry Pi). Cependant, apachectl -Va fonctionné.
Peter Mortensen
3

Certaines installations d'Apache sont fubar (pensez à l'emballage de Oracle, OHS) et ne comprennent pas l'indicateur -V, ni ne peuvent être invoquées directement sans se heurter à des erreurs de bibliothèque manquantes.

Le moyen le plus simple consiste à utiliser la stringscommande (partie de binutils) sur le binaire httpd et grep pour une chaîne qui pourrait ressembler à une version. Par exemple, en supposant que votre httpdbinaire se trouve dans le répertoire /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

La plupart des binaires (pas tous) contiennent leur version (au moins leur version principale) sous forme de chaînes statiques. C'est ma façon idéale d'obtenir des versions (ou de corroborer ce que le message d'aide d'un binaire correspond à ce qu'est réellement la réalité sur le terrain.)

luis.espinal
la source
N'est-il pas httpdnécessaire d'être dans le répertoire actuel pour que cela fonctionne?
Peter Mortensen
1
Cela m'a aidé à découvrir ma version précédente sur mon ancienne racine montée à partir de la nouvelle installation d'Ubuntu. À noter: "cordes" fait partie du paquet "binutils"
Zefiro
@PeterMortensen, oui. Je suppose que mon exemple supposait que httpd se trouverait dans le répertoire actuel (et que le lecteur en déduirait l'exemple et l'ajusterait au besoin.) J'édite ma réponse maintenant pour refléter cela .
luis.espinal
@Zefiro, merci pour l'avertissement. Je mettrai à jour ma réponse pour mentionner les binutils.
luis.espinal
2

Ou, moins directement:

nmap -A localhost -p 80

Tchad
la source
Si apache est configuré pour ne pas ajouter d'informations de version aux en-têtes HTTP, vous ne trouverez rien.
Marki555
nmap peut ne pas être installé (par exemple sur un Raspberry Pi):-bash: nmap: command not found
Peter Mortensen
2

Sûrement, taper / usr / sbin / apache2 -v dans le shell est le moyen le plus rapide et le plus rapide, en passant, voici une autre option, juste au cas où il y aurait aussi PHP sur votre serveur et que vous souhaitez rassembler la version Apache (et bien plus plus d'infos) en étapes programmatiques rapides.

Créez simplement un fichier info.php dans votre dossier racine Web Apache (ou ce que vous voulez) et écrivez-les à l'intérieur:

<?php
    phpinfo();
?>

Allez maintenant sur votresite.com/info.php (ou localhost / info.php pour les machines locales).

Vous verrez votre version Apache dans la section Variables PHP , voici un exemple:

Exemple de page de vidage de phpinfo ()

De plus, veuillez noter que ces étapes s'appliquent évidemment à tout serveur Web avec intégration PHP, donc ce n'est pas limité à Apache et une fois créée, cette page pourrait être pratique lors du développement (n'oubliez pas de la supprimer dans les environnements de production !!)

Défragmenter
la source
1
dlocate -s apache2 | grep '^Version:'
agc
la source