O Apache se recusa a iniciar em qualquer porta

4

Não consigo fazer o Apache iniciar em nenhuma porta. Estou sempre recebendo o erro:

apache2(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80

Eu verifiquei se nada está sendo executado na porta 80 com netstat -plant|grep 80 e até mesmo executei sudo nc -l 80 sem problemas apenas para ter certeza. Eu pensei que talvez fosse uma coisa de permissões (não deveria, pois deveria estar começando de um initscript), então eu mudei a porta de escuta do Apache para 8080, e recebi o mesmo erro, exceto na porta 8080 (e nada está rodando essa porta também). Eu até tentei configurar ports.conf para ter Listen 127.0.0.1:80 e mesmo Listen 127.0.0.1:8080 e ainda mais ou menos o mesmo erro, exceto para mostrar o endereço e a porta correspondentes.

Eu devo notar que estou no Debian Unstable.

Neste ponto, estou sem saber o que mais deve verificar.

    
por supercheetah 18.07.2013 / 05:19

3 respostas

6

Do seu arquivo strace, aqui está o seu problema:

[pid 23020] setsockopt(5, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
[pid 23020] setsockopt(5, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 23020] setsockopt(5, SOL_IPV6, IPV6_V6ONLY, [0], 4) = 0
[pid 23020] setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 23020] bind(5, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
[pid 23020] listen(5, 511)              = 0
[pid 23020] setsockopt(7, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
[pid 23020] setsockopt(7, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 23020] setsockopt(7, SOL_IPV6, IPV6_V6ONLY, [0], 4) = 0
[pid 23020] setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
[pid 23020] bind(7, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 EADDRINUSE (Address already in use)
[pid 23020] write(2, "(98)Address already in use: AH00"..., 82(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
) = 82

Você notará que bind está sendo chamado duas vezes . A primeira vez que funciona. Na segunda vez, ele falha porque o endereço já está em uso - o que é, porque estava ligado.

Eu confirmei na minha configuração do Apache (Apache 2.4 no Debian testing / unstable) que eu posso fazer isso acontecer tendo Listen 80 na configuração duas vezes. Eu suspeito que você tenha feito o mesmo, ou algo muito similar.

    
por 06.08.2013 / 19:58
1

Parece que seu problema pode estar relacionado à tentativa de vincular o endereço IPV6 em vez de IPV4. Exemplo O Apache está tentando ligar-se a: 1 e 127.0.0.1, já que você não tem o IPv6 configurado - ele tenta vincular o 127.0.0.1 duas vezes. Soluções:

  • verifique se localhosts resolve para o IP IPv4 (hosts anfitriões locais)

  • verifique / etc / hosts e remova qualquer endereço IPv6 se você não estiver usando IPv6 (especialmente um localhost)

Se você não conseguir atualizar /etc/hosts - altere httpd.conf ou ports.conf para vincular ao IP, em vez disso, nomeie (Ouça 127.0.0.1:80).

    
por 24.09.2014 / 10:22
0

Parece que a mensagem de erro que o Apache está tentando vincular usando o IPv6. Seu host tem IPv6 ativado?

    
por 06.08.2013 / 17:54