Versione di Apache installata su un computer Debian


314

Come posso verificare quale versione di Apache è installata su una macchina Debian?

C'è un comando per farlo?


4
Stack Overflow è un sito per domande di programmazione e sviluppo. Questa domanda sembra fuori tema perché non riguarda la programmazione o lo sviluppo. Consulta quali argomenti posso chiedere qui nel Centro assistenza. Forse Super User o Unix & Linux Stack Exchange sarebbero un posto migliore da chiedere. Vedi anche Dove posso pubblicare domande su Dev Ops? .
jww,

Risposte:


418

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

Se non funziona per te, esegui il comando con sudo.


2
Attenzione: quando si esegue Apache 2.4 su Ubuntu 14, apache2ctl -Vnon funziona senza i privilegi di root (... e non stampa la versione). Considerando che funziona su Ubuntu 12 con Apache 2.2. Difficile.
philippe_b,

Funziona su Ubuntu 12.04 e credo complete.y un sacco di persone sono ancora utilizzando Ubuntu 12.04, come me, che non vogliono effettuare l'aggiornamento a 14 ma fino a quando tutti i bug con vari software vengono eliminati
JohnMerlino

Funziona suDebian 7.1
ciclico

apachectl -V non funziona su suse10.04 invece dobbiamo digitare / usr / sbin / apache2ctl -v per ottenere la risposta corretta con il permesso di root
farzam

1
Ha funzionato bene su Red Hat Enterprise Linux 6 (64 bit)
DemiSheep,


34

Si dovrebbe usare apache2ctl -v o apache2 -v per le nuove distribuzioni Debian o Ubuntu.

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

oppure puoi usare apache2 -V per ottenere maggiori informazioni.

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

-V superiore o minuscola -v è ok ma potrebbe essere necessario utilizzare sudo a meno che non si sia effettuato l'accesso come root.
sdexp,

27

Il comando varia a seconda di come la tua versione di Linux ha chiamato Apache Server.

Su Debian e Mac OS:

apachectl -v

Su Red Hat e Amazon EC2 Linux utilizzare:

httpd -v

Su altre versioni di Linux prova:

apache2 -v

Puoi usare due flag diversi:

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

Se vuoi eseguire il comando con la directory completa come ha fatto user3786265 ma non sai dove si trova il tuo apache, usa il whereiscomando:

whereis httpd

1
Brillante. La tua risposta copre la gamma di ambienti server in cui potresti provare a trovare la versione di Apache. Se fosse la mia domanda, l'avrei contrassegnata come risposta . Forse l'unica cosa che suggerirei di aggiungere alla tua risposta, sono i percorsi comuni. In alcuni ambienti il ​​comando potrebbe non essere nel $ PATH, quindi le persone che provano questi comandi potrebbero rimanere bloccate. ad es. nel mio ambiente Debian, ho dovuto usarlo $ /usr/sbin/apache2 -vperché $ apache2 -vritorna command not found. Questo comando aiuterà gli utenti a individuare il percorso di apache, se necessario:ps -ef | grep apache
inspirednz

apache2 -vfunziona anche su Debian (almeno Debian 8 (Jessie) su Raspberry Pi).
Peter Mortensen,


15

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

Questo non funzionerà se al momento sono presenti errori di sintassi nei file di configurazione
Wolfgang Fahl,

12

Penso che devi essere sicuro di quale tipo di installazione hai binario o sorgente. Per verificare quali pacchetti binari sono installati: con i diritti di root eseguire il comando seguente:

dpkg -l |grep apache2

il risultato dovrebbe essere qualcosa del tipo:

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)

Per trovare la versione è possibile eseguire:

apache2ctl -V |grep -i "Server version"

il risultato dovrebbe essere qualcosa del tipo: Versione server: Apache / 2.4.10 (Debian)


11

Puoi anche utilizzare direttamente il gestore pacchetti:

dpkg -l | grep apache

Questo non si concentra solo sul numero di versione , ma farà una ricerca più ampia, che ti darà altre informazioni utili, come le versioni del modulo.


La restrizione ad apache può essere passata direttamente a dpkg. Per un'interpretazione automatizzata è necessario anche un singolo valore anziché un elenco e non si dovrebbero visualizzare i pacchetti apache2- * "disinstallati". Si prega di considerare anche dpkg -l apache2 | grep ^ii | awk '{print $3}' | cut -f1 -d-o dpkg -l "apache2*" | grep ^ii | awk '{print $3}' | cut -f1 -d- | head -n 1.
smoe

6

Un altro modo per controllare una versione installata di un pacchetto (incluso Apache) sul sistema basato su Debian, possiamo usare:

apt-cache policy <package_name>

ad es. per Apache

apt-cache policy apache2

che mostrerà qualcosa di simile (guarda la Installedlinea):

$ 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

Per me funziona su Debian 6 (Squeeze):

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

Ho dovuto andare sulla strada giusta:

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

./apachectl: linea 71: ulimit: file aperti: impossibile modificare il limite: Operazione non consentita
Versione server: Apache / 2.2.21 (Unix)
Server costruito: 17 dic 2011 19:57:53


5

Ho provato a eseguire il comando "httpd -V" e "apachectl -V", ma non sono riuscito a eseguirlo e ho riscontrato l'errore:

-ksh: php: not found [Nessun file o directory simile]

Poi ho provato in un altro modo. Sono andato nella directory Apache sul mio server e ho provato a eseguire il comando:

./apachectl -v

Questo ha funzionato per me e ha restituito l'output:

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

Spero che aiuti.


5
  1. Puoi usare apachectl -Vo apachectl -v. Entrambi restituiranno le informazioni sulla versione di 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. Potresti essere più come usare apache2 -Vo apache2 -v. Sembra più facile da ricordare!

        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

Per me apachectl -Vnon ha funzionato, ma apachectl fullstatusmi ha dato la mia versione.


'apachectl -v' funziona per me su Mac, CentOS e Ubuntu. Su quale distro stavi correndo? apachectl fullstatus ha bisogno di mod_status per farlo funzionare. Quindi non è nemmeno una soluzione universale.
Konzulic,

apachectl fullstatusNon ha funzionato per me. Ho ottenuto /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian su un Raspberry Pi). Tuttavia, apachectl -Vha funzionato.
Peter Mortensen,

3

Alcune installazioni di Apache sono fubar (si pensi alla confezione di Oracle, OHS) e non comprendono il flag -V, né possono essere invocate direttamente senza incorrere in errori di libreria mancanti.

Il modo più semplice è usare il stringscomando (parte di binutils) sul binario httpd e grep per una stringa che potrebbe assomigliare a una versione. Ad esempio, supponendo che il tuo httpdbinario sia nella directory /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 maggior parte dei binari (non tutti) contengono la loro versione (almeno la loro versione principale) come stringhe statiche. Questo è il mio modo per ottenere versioni (o per confermare ciò che un messaggio di aiuto di un binario corrisponde a ciò che la realtà sul campo è veramente.)


Non è httpdnecessario trovarsi nella directory corrente affinché funzioni?
Peter Mortensen,

1
Questo mi ha aiutato a scoprire la mia versione precedente sul mio vecchio root montato dalla nuova installazione di Ubuntu. Vale la pena ricordare: "stringhe" fa parte del pacchetto "binutils"
Zefiro,

@PeterMortensen, sì. Immagino che il mio esempio supponesse che httpd si trovasse nella directory corrente (e che il lettore lo deducesse dall'esempio e si adeguasse come richiesto.) Sto modificando la mia risposta ora per riflettere questo .
luis.espinal

@Zefiro, grazie per il testa a testa. Aggiornerò la mia risposta per menzionare binutils.
luis.espinal

2

O, meno direttamente:

nmap -A localhost -p 80


Se apache è configurato per non aggiungere informazioni sulla versione alle intestazioni HTTP, non troverai nulla.
Marki555,

nmap potrebbe non essere installato (ad es. su un Raspberry Pi):-bash: nmap: command not found
Peter Mortensen il

2

Sicuramente digitare / usr / sbin / apache2 -v nella shell è il modo migliore e più veloce di procedere, tra l'altro ecco un'altra opzione, nel caso in cui ci sia anche PHP nel tuo server e sei interessato a raccogliere la versione di Apache (e molto più informazioni) in rapidi passaggi programmatici.

Basta creare un file info.php nella cartella principale Web di Apache (o qualunque cosa ti piaccia) e scrivere questi al suo interno:

<?php
    phpinfo();
?>

Ora vai su yoursite.com/info.php (o localhost / info.php per macchine locali).

Vedrai la tua versione di Apache nella sezione Variabili PHP , ecco un esempio:

Pagina di dump di esempio phpinfo ()

Inoltre, tieni presente che questi passaggi ovviamente si applicano a qualsiasi server Web con integrazione PHP, quindi non si limita ad Apache e una volta creata quella pagina potrebbe essere utile durante lo sviluppo (non dimenticare di rimuoverla negli ambienti di produzione !!)


1
dlocate -s apache2 | grep '^Version:'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.