Eu recebi esse erro em uma nova instalação ao iniciar o apache2 Ubuntu 12.10.
É um bug no apache2. É pendurado no fundo. Aqui está o meu passo a passo de 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 isso? 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á sendo executado, eu estava tentando iniciar o apache2 uma segunda vez na mesma porta.
O que me confunde é que service
relata que o apache2 NÃO está sendo executado:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
E quando você consulta o status do apache2ctl, ele trava.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Portanto, o Ubuntu parece estar tendo problemas para gerenciar o apache2 na inicialização. 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 a identificação do processo! Portanto, o Ubuntu não pode parar o apache2 porque ele não sabe onde está!
Você pensaria que uma reinicialização iria corrigi-lo, mas não porque o apache2 inicia na inicialização e trava. O processo normal de inicialização do apache2 não está funcionando corretamente.
Então, como consertar isso?
Consegui consertar isso analisando a ps
saída do comando. Observe que o ps
comando nos diz 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 iniciando o apache2 e depois trava. Então, teremos que dizer para não fazer isso.
Então vá dar uma olhada nisso /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 impedir que o apache2 seja iniciado 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
Reinicie o computador para garantir que o apache2 não seja iniciado e travado. Tudo bem. Agora você poderia colocar o apache2 de volta do jeito que estava, mas isso faria com que 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 páginas novamente. Parece haver alguns erros sérios no apache2 / Ubuntu 12.10 que fazem com que o apache2 seja iniciado e travado. Esta é uma solução alternativa, suponho que a correção seja obter versões mais recentes do apache2 e Ubuntu e esperar o melhor.