Versão do Apache instalada em uma máquina Debian


314

Como posso verificar qual versão do Apache está instalada em uma máquina Debian?

Existe um comando para fazer isso?


4
Stack Overflow é um site para perguntas sobre programação e desenvolvimento. Esta questão parece estar fora de tópico, porque não se trata de programação ou desenvolvimento. Consulte Quais tópicos posso perguntar aqui na Central de Ajuda. Talvez o Superusuário ou o Unix e Linux Stack Exchange sejam um lugar melhor para perguntar. Consulte também Onde postar perguntas sobre Dev Ops? .
JWW

Respostas:


418

Tente 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 não funcionar, execute o comando com sudo.


2
Aviso: ao executar o Apache 2.4 no Ubuntu 14, apache2ctl -Vnão funciona sem privilégios de root (... e não imprime a versão). Considerando que funciona no Ubuntu 12 com Apache 2.2. Complicado.
Philippe_b

Ele funciona no Ubuntu 12.04 e acredito complete.y muitas pessoas ainda estão usando o Ubuntu 12.04, como eu, que não deseja atualizar para 14 ainda até que todos os bugs com diversos softwares são eliminados
JohnMerlino

Works onDebian 7.1
Cyclonecode

apachectl -V trabalho dosen't em suse10.04 em vez disso, tem que digitar / usr / sbin / apache2ctl -v para obter resposta certa com permissão raiz
Farzam

1
Funcionou bem no Red Hat Enterprise Linux 6 (64 bits)
DemiSheep 26/01


34

Você deve usar apache2ctl -v ou apache2 -v para novas distribuições Debian ou Ubuntu.

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

ou você pode usar o apache2 -V para obter mais informações.

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 ou minúsculo -v está ok, mas pode ser necessário usar o sudo, a menos que você esteja logado como root.
Sdexp

27

O comando varia dependendo de como sua versão do Linux nomeou o Apache Server.

No Debian e Mac OS:

apachectl -v

No Red Hat e no EC2 Linux da Amazon, use:

httpd -v

Em outras versões do Linux, tente:

apache2 -v

Você pode usar dois sinalizadores diferentes:

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

Se você deseja executar o comando com o diretório completo, como o user3786265, mas não sabe onde está localizado o seu apache, use o whereiscomando:

whereis httpd

1
Brilhante. Sua resposta abrange a variedade de ambientes de servidor em que alguém pode estar tentando encontrar a versão do Apache. Se fosse minha pergunta, eu teria marcado isso como a resposta . Talvez a única coisa que sugiro acrescentar à sua resposta sejam os caminhos comuns. Em alguns ambientes, o comando pode não estar no $ PATH, portanto, as pessoas que tentam esses comandos podem ficar paralisadas. Por exemplo, no meu ambiente Debian, eu tive que usar $ /usr/sbin/apache2 -vporque apenas $ apache2 -vretorna command not found. Este comando irá ajudar os usuários a localizar caminho para apache, se necessário:ps -ef | grep apache
inspirednz

apache2 -vtambém trabalha no Debian (pelo menos Debian 8 (Jessie) no Raspberry Pi).
Peter Mortensen


15

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

Isso não funcionará se houver atualmente erro de sintaxe nos seus arquivos de configuração
Wolfgang Fahl 28/11

12

Eu acho que você precisa ter certeza de que tipo de instalação você possui, binário ou fonte. Para verificar quais pacotes binários estão instalados: com direitos de root, execute o seguinte comando:

dpkg -l |grep apache2

O resultado deve 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 a versão, você pode executar:

apache2ctl -V |grep -i "Server version"

O resultado deve ser algo como: Versão do servidor: Apache / 2.4.10 (Debian)


11

Você também pode usar o gerenciador de pacotes diretamente:

dpkg -l | grep apache

Isso não está focado apenas no número da versão , mas fará uma pesquisa mais ampla, que fornecerá outras informações úteis, como as versões dos módulos.


A restrição ao apache pode ser passada diretamente para o dpkg. Para uma interpretação automatizada, você também precisa de um único valor, em vez de uma lista, e não deve exibir os pacotes apache2- * "desinstalados". Por favor, considere também 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

Outra maneira de verificar uma versão instalada do pacote (incluindo o Apache) no sistema baseado em Debian, podemos usar:

apt-cache policy <package_name>

por exemplo, para Apache

apt-cache policy apache2

que mostrará algo como (veja a Installedlinha):

$ 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 mim, isso funciona no Debian 6 (Squeeze):

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

Eu tive que ir no caminho certo:

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

./apachectl: linha 71: ulimit: arquivos abertos: não é possível modificar o limite: Operação não permitida
Versão do servidor: Apache / 2.2.21 (Unix)
Servidor criado: 17 de dezembro de 2011 19:57:53


5

Tentei executar o comando "httpd -V" e "apachectl -V", mas não consegui executar e estava recebendo o erro:

-ksh: php: não encontrado [Esse arquivo ou diretório não existe]

Então eu tentei de outra maneira. Eu fui ao diretório Apache no meu servidor e tentei executar o comando:

./apachectl -v

Isso funcionou para mim e retornou a saída:

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

Eu espero que isso ajude.


5
  1. Você pode usar apachectl -Vou apachectl -v. Ambos retornarão as informações da versão do 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. Você pode gostar mais de usar apache2 -Vou apache2 -v. Parece mais fácil lembrar!

        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 mim apachectl -Vnão funcionou, mas apachectl fullstatusme deu a minha versão.


'apachectl -v' funciona para mim no Mac, CentOS e Ubuntu. Em qual distro você estava executando? O apachectl fullstatus precisa de mod_status para fazer isso funcionar. Portanto, também não é uma solução universal.
5609 Konzulic

apachectl fullstatusnão funcionou para mim. Eu peguei /usr/sbin/apachectl: 101: /usr/sbin/apachectl: www-browser: not found 'www-browser -dump http://localhost:80/server-status' failed.(Debian 8 - Raspbian em um Raspberry Pi). No entanto, apachectl -Vfuncionou.
Peter Mortensen

3

Algumas instalações do Apache são fubar (pense no empacotamento da Oracle, OHS) e não entendem o sinalizador -V, nem podem ser chamadas diretamente sem ocorrer erros de biblioteca ausentes.

A maneira mais fácil é usar o stringscomando (parte de binutils) no binário httpd e grep para uma string que possa se parecer com uma versão. Por exemplo, supondo que seu httpdbinário esteja no diretório /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

A maioria dos binários (nem todos) contém sua versão (pelo menos a versão principal) como seqüências estáticas. Este é o meu caminho para obter versões (ou corroborar o que a mensagem de ajuda de um binário corresponde ao que realmente é a realidade no terreno).


Não é httpdnecessário estar no diretório atual para que isso funcione?
Peter Mortensen

1
Isso me ajudou a descobrir minha versão anterior na minha raiz antiga montada na nova instalação do Ubuntu. Vale ressaltar: "strings" faz parte do pacote "binutils"
Zefiro 26/03

@PeterMortensen, sim. Acho que meu exemplo assumiu que o httpd estaria no diretório atual (e que o leitor inferiria isso do exemplo e ajustaria conforme necessário.) Estou editando minha resposta agora para refletir isso .
Luis.espinal 27/03

@ Zefiro, obrigado pelo aviso. Vou atualizar minha resposta para mencionar binutils.
Luis.espinal 27/03

2

Ou, menos diretamente:

nmap -A localhost -p 80


Se o apache estiver configurado para não adicionar informações de versão aos cabeçalhos HTTP, você não encontrará nada.
Marki555

O nmap pode não estar instalado (por exemplo, em um Raspberry Pi):-bash: nmap: command not found
Peter Mortensen

2

Certamente digitar / usr / sbin / apache2 -v no shell é o melhor e mais rápido caminho, a propósito, aqui está outra opção, caso haja PHP também no seu servidor e você esteja interessado em coletar a versão do Apache (e muito mais mais informações) em etapas programáticas rápidas.

Basta criar um arquivo info.php na sua pasta raiz do Apache (ou o que você quiser) e escrever dentro dela:

<?php
    phpinfo();
?>

Agora vá para yoursite.com/info.php (ou localhost / info.php para máquinas locais).

Você verá sua versão do Apache na seção Variáveis ​​do PHP , aqui está um exemplo:

página de despejo de exemplo phpinfo ()

Além disso, observe que essas etapas obviamente se aplicam a qualquer servidor Web com integração ao PHP, portanto não se limita ao Apache e, uma vez criada, essa página pode ser útil durante o desenvolvimento (apenas não se esqueça de removê-la nos ambientes de produção !!)


1
dlocate -s apache2 | grep '^Version:'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.