Windows - O servidor da Web não pode ligar à porta 80, mas nenhum processo conhecido está usando a porta

1

Há muito tempo, criei um script Powershell que interrompe o serviço Apache, exclui os logs do servidor da Web e inicia o serviço novamente. Não teve problemas até recentemente, quando o processo de parada começou a expirar, o erro conhecido "O serviço não respondeu em tempo hábil ..".

Bem, para contornar isso, atualizei o script. Então, basicamente, explicou agora:

stop-service webserverservice
# Check if process is stil alive, and if found using the PID
stop-process -id $processPid -force

Isso deve tomar conta disso, se parar o serviço expirar, bem, vamos apenas matar o processo. E, na verdade, fazer a última verificação duas vezes para garantir que nenhum processo filho seja gerado antes de matar o processo principal.

MAS - em alguns servidores, nem todos, nem sempre, os passos acima não são impermeabilizados. Ao iniciar o servidor, ele diz

(OS 10048)Only one usage of each socket address (protocol/network 
address/port) is normally permitted.  
: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

E aqui está a coisa que não consigo explicar. Ainda usando Powershell e o equivalente netstat Get-NetTCPConnection

PS C:\temp> Get-NetTCPConnection -LocalPort 80
Get-NetTCPConnection : No MSFT_NetTCPConnection objects found with 
property 'LocalPort' equal to '80'.  
Verify the value of the property and retry.

Isso me deixa com apenas uma opção, reinicie o servidor e, em seguida, tudo está bem novamente.

Alguém está vendo algo que eu não sei, o que poderia explicar por que recebo esse problema?

    
por rhellem 10.08.2018 / 08:46

1 resposta

0

Parece que o apache está configurado para se ligar a 0.0.0.0:80

Isso significa que ele se liga a todos os IPs do sistema, na porta 80.

Portanto, se o host for, por exemplo, 192.168.10.55, no mínimo, o apache tentará se ligar a:

127.0.0.1:80 // localhost 192.168.10.55:80 // o IP disponível

Se qualquer um dos itens acima tiver algo ligado a 80, o apache não será iniciado, com o erro que você anotou no OP

Existem algumas maneiras de abordar isso.

Primeiro : modifique a configuração do apache para vincular somente aos IPs realmente necessários. Evite localhost. Evite interfaces IPv6 ou de gerenciamento desconhecidas ou não usadas.

Segundo : Use o netstat para ver o que está na porta 80.

netstat -a |findstr :80
    
por 12.08.2018 / 22:39