Eu recebi este erro em uma nova instalação ao iniciar o apache2 Ubuntu 12.10.
É um bug no apache2. Fica pendurado no fundo. Aqui está o meu passo a passo para onde os erros podem estar no software.
Aqui está o erro que recebi:
el@titan:~$ sudo service apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
[fail]
Endereço já em uso? O que poderia estar usando? Confira:
el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:# supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf: Listen 443
/etc/apache2/ports.conf: Listen 443
Isso significa que o apache2 está impedindo que o apache2 seja iniciado. Bizarro. Isso confirmará:
el@titan:~$ ps -ef | grep apache2
root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl start
root 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k start
root 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
Sim, neste caso o apache2 está em execução, eu estava tentando iniciar o apache2 uma segunda vez na mesma porta.
O que me confunde é que service
informa que o apache2 NÃO está em execução:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
E quando você consulta o apache2ctl para seu status, ele trava.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Então, o Ubuntu parece estar tendo problemas para gerenciar o apache2 no boot. Hora de parar o apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Uma grande pista! Você tenta parar o apache2 e ele perdeu o ID do processo! Então o Ubuntu não pode parar o apache2 porque ele não sabe onde está!
Você poderia pensar que uma reinicialização iria consertá-lo, mas isso não acontece porque o apache2 inicia na inicialização e trava. O processo de inicialização normal do apache2 não está funcionando corretamente.
Então, como consertar isso?
Consegui corrigir isso analisando a saída do comando ps
. Observe que o comando ps
nos informa que esse processo foi iniciado por "/etc/rc2.d/S91apache2 start".
Esse é o programa ofensivo que precisa de um chute rápido.
/etc/rc2.d/S91apache2
é o link simbólico usado para iniciar o apache2 quando o computador é iniciado. Por alguma razão, parece estar começando o apache2 e depois trava. Então teremos que dizer para não fazer isso.
Então, dê uma olhada nesse /etc/rc2.d/S91apache2
.
el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
É um link simbólico que não queremos que esteja lá. Faça isso para evitar que o apache2 inicie na inicialização:
root@titan:~# sudo update-rc.d -f apache2 remove
Removing any system startup links for /etc/init.d/apache2 ...
/etc/rc0.d/K09apache2
/etc/rc1.d/K09apache2
/etc/rc2.d/S91apache2
/etc/rc3.d/S91apache2
/etc/rc4.d/S91apache2
/etc/rc5.d/S91apache2
/etc/rc6.d/K09apache2
Reinicialize o computador para ter certeza de que o apache2 não inicia e trava. Tudo bem. Agora você poderia colocar o apache2 de volta do jeito que era, mas isso faria com que ele falhasse novamente.
root@titan:~$ sudo update-rc.d apache2 defaults //(don't do this)
Adding system startup for /etc/init.d/apache2 ...
/etc/rc0.d/K20apache2 -> ../init.d/apache2
/etc/rc1.d/K20apache2 -> ../init.d/apache2
/etc/rc6.d/K20apache2 -> ../init.d/apache2
/etc/rc2.d/S20apache2 -> ../init.d/apache2
/etc/rc3.d/S20apache2 -> ../init.d/apache2
/etc/rc4.d/S20apache2 -> ../init.d/apache2
/etc/rc5.d/S20apache2 -> ../init.d/apache2
Em vez disso, inicie o apache2 assim:
sudo service apache2 start
E o apache2 está de volta e servindo as páginas novamente. Parece haver alguns bugs sérios com o apache2 / Ubuntu 12.10 que fazem com que o apache2 seja iniciado e interrompido. Esta é uma solução alternativa, suponho que a correção seja obter versões mais recentes do apache2 e do Ubuntu e esperar o melhor.