Versión de Apache instalada en una máquina Debian


314

¿Cómo puedo verificar qué versión de Apache está instalada en una máquina Debian?

¿Hay un comando para hacer esto?


44
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Vea qué temas puedo preguntar aquí en el Centro de ayuda. Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar. Consulte también ¿Dónde publico preguntas sobre Dev Ops? .
jww

Respuestas:


418

Prueba 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 no funciona para usted, ejecute el comando con sudo.


2
Advertencia: cuando ejecuta Apache 2.4 en Ubuntu 14, apache2ctl -Vno funciona sin privilegios de root (... y no imprime la versión). Mientras que funciona en Ubuntu 12 con Apache 2.2. Difícil.
philippe_b

Funciona en Ubuntu 12.04 y creo que muchas personas todavía usan Ubuntu 12.04, como yo, que no quieren actualizar a 14 todavía hasta que se eliminen todos los errores con varios programas
Y

Funciona enDebian 7.1
Cyclonecode

apachectl -V no funciona en suse10.04 sino que tenemos que escribir / usr / sbin / apache2ctl -v para obtener la respuesta correcta con permiso de root
farzam

1
Funcionó bien en Red Hat Enterprise Linux 6 (64 bits)
DemiSheep


34

Debería usar apache2ctl -v o apache2 -v para distribuciones más recientes de Debian o Ubuntu.

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

o puede usar apache2 -V para obtener más información.

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

Bien -V o minúscula -v está bien, pero es posible que necesite usar sudo a menos que haya iniciado sesión como root.
sdexp

27

El comando varía según cómo su versión de Linux haya nombrado al servidor Apache.

En Debian y Mac OS:

apachectl -v

En el uso de Red Hat y Amazon EC2 Linux:

httpd -v

En otras versiones de Linux intente:

apache2 -v

Puedes usar dos banderas diferentes:

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

Si desea ejecutar el comando con el directorio completo como lo hizo el usuario3786265 pero no sabe dónde se encuentra su apache, use el whereiscomando:

whereis httpd

1
Brillante. Su respuesta cubre el rango de entornos de servidor en los que uno podría estar tratando de encontrar la versión de Apache. Si fuera mi pregunta, lo habría marcado como la respuesta . Quizás lo único que sugeriría agregar a su respuesta, son los caminos comunes. En algunos entornos, el comando puede no estar en $ PATH, por lo que las personas que prueban estos comandos pueden quedarse atascados. Por ejemplo, en mi entorno Debian, tuve que usar $ /usr/sbin/apache2 -vporque solo $ apache2 -vregresa command not found. Este comando ayudará a los usuarios a localizar camino a Apache, si es necesario:ps -ef | grep apache
inspirednz

apache2 -vTambién funciona en Debian (al menos Debian 8 (Jessie) en Raspberry Pi).
Peter Mortensen


15

Pruébalo 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....

Esto no funcionará si actualmente hay un error de sintaxis en sus archivos de configuración
Wolfgang Fahl

12

Creo que debe estar seguro de qué tipo de instalación tiene binario o fuente. Para verificar qué paquetes binarios están instalados: con derechos de root, ejecute el siguiente comando:

dpkg -l |grep apache2

El resultado debería ser algo como:

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)

Para encontrar la versión, puede ejecutar:

apache2ctl -V |grep -i "Server version"

El resultado debería ser algo como: Versión del servidor: Apache / 2.4.10 (Debian)


11

También puede usar el administrador de paquetes directamente:

dpkg -l | grep apache

Esto no se centra solo en el número de versión , sino que hará una búsqueda más amplia, que le dará otra información útil, como las versiones de los módulos.


La restricción a apache se puede pasar a dpkg directamente. Para una interpretación automatizada, también necesita un valor único en lugar de una lista, y no debe mostrar los paquetes apache2- * "desinstalados". Por favor también considere 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

Otra forma de verificar la versión instalada de un paquete (incluido Apache) en un sistema basado en Debian, podemos usar:

apt-cache policy <package_name>

por ejemplo para Apache

apt-cache policy apache2

que mostrará algo como (mira la Installedlínea):

$ 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

Para mí esto funciona en Debian 6 (Squeeze):

Linux www809 2.6.26-2-xen-686 # 1 SMP mié 21 de septiembre 09:56:47 UTC 2011 i686 GNU / Linux

Tuve que ir por el camino correcto:

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

./apachectl: línea 71: ulimit: archivos abiertos: no se puede modificar el límite: Operación no permitida
Versión del servidor: Apache / 2.2.21 (Unix)
Servidor construido: 17 de diciembre de 2011 19:57:53


5

Intenté ejecutar el comando "httpd -V" y "apachectl -V", pero no pude ejecutar y recibí el error:

-ksh: php: no encontrado [No existe tal archivo o directorio]

Luego intenté de otra manera. Fui al directorio de Apache en mi servidor y luego intenté ejecutar el comando:

./apachectl -v

Esto funcionó para mí y devolvió el resultado:

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

Espero que esto ayude.


5
  1. Puedes usar apachectl -Vo apachectl -v. ¡Ambos devolverán la información de la versión de 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. Puede ser más como usar apache2 -Vo apache2 -v. ¡Parece más fácil de recordar!

        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

Para mí apachectl -Vno funcionó, pero apachectl fullstatusme dio mi versión.


'apachectl -v' funciona para mí en Mac, CentOS y Ubuntu. ¿En qué distribución estabas corriendo? apachectl fullstatus necesita mod_status para que esto funcione. Entonces tampoco es una solución universal.
Konzulic

apachectl fullstatusno funciono para mi Tengo /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian en una Raspberry Pi). Sin embargo, apachectl -Vfuncionó.
Peter Mortensen

3

Algunas instalaciones de Apache son fubar (piense en el empaquetado de Oracle, OHS) y no entienden el indicador -V, ni se pueden invocar directamente sin encontrarse con errores de biblioteca faltantes.

La forma más fácil es usar el stringscomando (parte de binutils) en el binario httpd y grep para una cadena que pueda parecerse a una versión. Por ejemplo, suponiendo que su httpdbinario está en el directorio /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 mayoría de los binarios (no todos) contienen su versión (al menos su versión principal) como cadenas estáticas. Esta es mi manera de obtener versiones (o corroborar lo que el mensaje de ayuda de un binario coincide con lo que realmente es la realidad en el terreno).


¿No es httpdnecesario estar en el directorio actual para que esto funcione?
Peter Mortensen

1
Esto me ayudó a encontrar mi versión anterior en mi raíz vieja montada desde la nueva instalación de Ubuntu. Vale la pena mencionar: "cadenas" es parte del paquete "binutils"
Zefiro

@PeterMortensen, sí. Supongo que mi ejemplo suponía que httpd estaría en el directorio actual (y que el lector inferiría eso del ejemplo y lo ajustaría según sea necesario). Estoy editando mi respuesta ahora para reflejar eso .
luis.espinal

@ Zefiro, gracias por el aviso. Actualizaré mi respuesta para mencionar binutils.
luis.espinal

2

O, menos directamente:

nmap -A localhost -p 80


Si apache está configurado para no agregar información de versión a los encabezados HTTP, no encontrará nada.
Marki555

nmap puede no estar instalado (por ejemplo, en una Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

Seguramente escribir / usr / sbin / apache2 -v en el shell es la mejor y más rápida forma de hacerlo, por cierto aquí hay otra opción, en caso de que también haya PHP en su servidor y esté interesado en recopilar la versión de Apache (y mucho más información) en pasos programáticos rápidos.

Simplemente haga un archivo info.php en su carpeta raíz web Apache (o lo que quiera) y escríbalos dentro de él:

<?php
    phpinfo();
?>

Ahora vaya a yoursite.com/info.php (o localhost / info.php para máquinas locales).

Verá su versión de Apache en la sección Variables de PHP , aquí hay un ejemplo:

Página de volcado de ejemplo de phpinfo ()

Además, tenga en cuenta que estos pasos obviamente se aplican a cualquier servidor web con integración PHP, por lo que no se limita a Apache y, una vez creada, esa página podría ser útil durante el desarrollo (¡simplemente no olvide eliminarla en entornos de producción!)


1
dlocate -s apache2 | grep '^Version:'
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.