Por que estou recebendo “Permissão negada: make_sock: não foi possível ligar ao endereço” ao iniciar o Apache2?

22

Eu posso pará-lo usando

/etc/init.d/apache2 stop

Mas quando eu quiser começar de novo usando:

/etc/init.d/apache2 start

Eu recebo este erro:

Starting web server apache2                                                  /usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: 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]
    
por Artisan 28.08.2013 / 07:43

4 respostas

41

Algumas palavras sobre os erros que você recebe que, esperamos, salvarão você de situações semelhantes no futuro.

Nas portas Linux, de 0 a 1024 são reservadas para uso do sistema. Isso significa que, para usar um, você deve ter autoridade para alterar - acessar as configurações básicas do sistema. O usuário root tem tais privilégios e pode realmente usar uma porta do intervalo de 0 a 1024.

No seu problema, como você pode ver, o sistema através da resposta do Apache2 indica a raiz do problema (não [...] poderia ligar ao endereço blá blá 80 ):

(13)Permission denied: make_sock: could not bind to address [::]:80
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80

Quando o daemon http Apache2 é iniciado, ele tenta ligar a porta 80, pois ela é a porta padrão para uso em HTTP veja , que é uma porta dentro das portas designadas pelo sistema e, como tal, só pode ser acessada por root.

Você executou o comando start como um usuário típico sem privilégios de root e levou a uma falha em fazê-lo.

Em palavras simples:

Você:

  

Oi Apache2 eu sou Kongthap e estou lhe dizendo para começar ( /etc/init.d/apache2 start )

Apache2:

  

Ok, estou iniciando (iniciando o servidor da web apache2)

     

Sistema por favor me dê a porta 80 para usar e ouvir conexões

Sistema:

  

OK um momento para verificar

     

ahh desculpe Apache2 mas eu não posso deixar você correr na porta 80, é para uso pessoal

     

e você não tem os privilégios corretos para vinculá-lo. ( Operation not permitted )

Apache2:

  

Oh, Kongthap não consegui começar, o sistema não me deixou fazer isso ((13) Permissão negada: [...])

Conclusão

Existem basicamente duas soluções para esse problema:

  1. Execute o daemon http Apache2 com privilégios de root usando o sudo:

    sudo service apache2 start
    

    ou:

    sudo /etc/init.d/apache2 start
    
  2. Altere a porta padrão de 80 para algo maior que 1024 , digamos 2000 , 2500 , 9000 , etc. Uma porta típica para executar quando em tal situação é 8080

    sudo vi /etc/apache2/ports.conf
    

    procure ou, se não, adicione:

    Listen 8080
    

    ou qualquer outra porta de sua escolha, como a porta > 1024 e a porta selecionada não usada por outro processo.

por Stef K 28.08.2013 / 08:55
6

A seguir estão os comandos para iniciar / parar / reiniciar o servidor apache:

  • Para começar:

    sudo /etc/init.d/apache2 start
    
  • Para parar:

    sudo /etc/init.d/apache2 stop
    
  • Para reiniciar:

    sudo /etc/init.d/apache2 restart
    
por Saurav Kumar 28.08.2013 / 07:50
3

Verifique o contexto da porta do selinux emitindo o comando

semanage port -l | grep http

Se estiver presente na lista http_port_t, tudo bem, caso contrário, adicione sua porta

semanage port -a -t http_port_t -p tcp 80

ou algo que você deseja atribuir.

    
por zahid iqbal 06.02.2014 / 10:57
1

Este é um erro do selinux, ou pelo menos foi no meu caso. Altere o booleano, desative o selinux ou configure-o como permissivo com setenforce 0 .

A alteração booleana exige que você execute getenforce -a | grep http e procure por "allow http connect network". Copie e substitua "on" onde a lista diz "- off"

    
por tru 17.01.2014 / 03:55