Eu tenho um problema em que o Apache não inicia após a atualização para o High Sierra 10.13.1. Não há nada aparecendo nos logs de erro, mas quando tento apachectl start
nada acontece. Se eu executar apachectl configtest
, recebo "Sintaxe OK
Eu usei comandos como sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sem sucesso. O Apache não será iniciado. Eu posso correr sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plist
e isso também não está funcionando.
Dei uma olhada na lista de serviços de preparação e o httpd aparece na lista junto com outro processo (mysql), mas o status do httpd está mostrando um amarelo "iniciado" em vez de um verde.
Eu tentei muitas coisas diferentes, e o que estou descobrindo é que, se eu olhar para o arquivo system.log, encontro com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1
Se eu executar o apachectl start, o comando parece funcionar, mas quando executo o comando stop, recebo "httpd (sem arquivo pid) não executando.
Também estou recebendo a saída de com.; Apple.xpc.launchd [1] ( org.apache.httpd): mude do OnDemand para o KeepAlive.
Existe algo com High Sierra que está impedindo o Apache de funcionar quando correu bem no Sierra?
fonte
brew services list' I receive a yellow indicator, I checked with all of the available users and ran
serviços de brew` e todos eles mostram o mesmo indicador. Quanto ao guia de configuração, o Ansible foi usado para configurar o apache. Isso foi feito em outros 5 MacBooks, eles ainda estão executando o Sierra. Este MacBook teve um problema e uma Apple executou um diagnóstico e redefiniu o sistema operacional, enquanto atualizava o sistema operacional para High Sierraapachectl start
). O mesmo com... configtest
!httpd
fórmula Homebrew , e agora o apache não responde. Quando eu façobrew services list
, eu também obter ostarted
para httpd em amarelo, e quando eu corrosudo apachectl stop
, ele me diz quehttpd (pid 87?) not responding.
Respostas:
Na minha opinião, você organizou seus vários mecanismos de inicialização / daemons httpd executando muitos comandos relacionados a httpd.
Com o homebrew e o apache-httpd do homebrew instalado e o PATH padrão, você tem seis maneiras de iniciar o httpd.
Apache da Apple:
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo /usr/sbin/apachectl start
Apache de Homebrew:
sudo apachectl start
apachectl start
sudo brew services start httpd
brew services start httpd
Se você copiou o arquivo homebrew.mxcl.httpd.plist manualmente para ~ / Library / LaunchAgents / ou / Library / LaunchDaemons /, você tem mais duas opções para iniciá-lo carregando-as
(sudo) launchctl load ...
.Se você não modificou os arquivos de configuração httpd ou os scripts apachectl, a filial da Apple utilizará o arquivo httpd.conf da Apple em / var e o DocumentRoot na pasta / Library.
O ramo homebrew usa subpastas em / usr / local /.
Alguns métodos de inicialização não funcionarão se você vincular as portas httpd a portas inferiores a 1024!
Se você usa
(sudo) brew services ...
para iniciar o httpd, precisa usar o(sudo) brew services list
comando apropriado para verificar o status:Se você iniciá-lo como root, liste-o com root privs:
sudo brew services start httpd
>sudo brew services list
ou com privs do usuário:
brew services start httpd
>brew services list
.Para resolver seu problema, descarregue o httpd da Apple:
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
(sudo) brew services stop httpd
pare qualquer httpd iniciado por apachectl:
Agora - supondo que você queira usar o httpd do homebrew em portas privilegiadas - digite:
Verifique o início bem-sucedido com
sudo brew services list
.fonte
apachectl stop
fornece a saída dehttpd (no pid file) not running
e quando eu executosudo brew services httpd start
sudo brew services list
indica apache2 (httpd)started
em uma cor amarela. Quando tento acessar qualquer página da Web relacionada, não consigo acessar. Gostaria de saber se a atualização para 10.13 alterou algo no apache, impedindo-o de iniciar.Em relação ao httpd do homebrew, um problema que eu tive recentemente foi um arquivo httpd.pid antigo que estava impedindo o início do httpd. O sintoma foi
apachectl start
dito que o httpd já está sendo executado, mas não estava.A causa era um arquivo antigo aqui:
A solução foi excluir esse arquivo pid e o httpd foi iniciado.
fonte
httpd
monitor de atividades. Isso consertou.brew services list
, estava obtendo o status amarelo de 'iniciado', o que significava que havia algo errado com o status ativo do servidor. A remoção do pid corrigiu isso e agora a lista de serviços mostra o status ativo como um verde 'iniciado' agora. Obrigado por isso!Eu enfrentei o mesmo depois que atualizei para High Sierra hoje cedo. Descobri que os seguintes arquivos apache foram substituídos por novas versões. Felizmente para todos esses arquivos, havia um arquivo FILE ~ anterior na mesma pasta. Eu apenas copiei a versão anterior para a original, reiniciei o apache e estava tudo bem.
Na pasta
/etc/apache2
:Exemplo:
fonte
/etc/apache2/extra/
existem cerca de 10 arquivos com ~ anterior anexado a eles, deve tudo isso ser mudado, ou apenas os dois que você menciona na/etc/apache2/extra/
pastaEu tive o mesmo problema
Isso significa que o httpd saiu anormalmente.
Comecei manualmente o httpd para ver qual era o problema
Olhando para as permissões, ficou bastante claro
Acho que iniciei o httpd como root, o que causou esse problema. Eu removi os arquivos e depois
tudo estava bem.
fonte
Eu me deparei com isso recentemente. A causa é que o homebrew instala o apache2 / httpd em pastas acessíveis ao usuário e é executado como um usuário (executando o comando: brew services start httpd).
Não funcionar como um usuário comum significa que o httpd não pode escutar em portas privilegiadas (1024 e abaixo).
Portanto, mesmo se o httpd.conf estiver configurado para ouvir 80 e 443, o httpd não poderá receber solicitações por essas portas.
A peculiaridade é quando você inicia o httpd executando o comando: sudo apachectl start. Este comando inicia o httpd como usuário root. O usuário root tem permissão para escutar nas portas 80 e 443. O httpd, em seguida, retira os privilégios de volta como usuário _www.
Portanto, a resposta curta é executar o httpd de homebrew nas portas 80 e 443, iniciá-lo usando: sudo apachectl start. Você também pode iniciá-lo com: sudo brew services start httpd. O Brew lhe dirá que está reivindicando certas pastas para o root, o que suponho que seja bom, mas não necessário, pois o sudo apachectl start não requer permissões de arquivo e / ou alterações de proprietário.
fonte
Eu sugeriria, ao contrário, o que o HomeBrew diz que sempre execute o httpd pelo sudo. Lá, se você fizer o ps-aef | grep httpd, você o verá listado como em execução. Ficar sem o sudo não produz saída ps, o que pode dar uma impressão errada de que o httpd não está sendo executado.
Também não tenho certeza se há configurações diferentes ou iguais carregadas nos dois casos. Instalei o PHP e criei o arquivo test.php com o phpinfo no diretório DocumentRoot. Se você iniciar o apache com o sudo, poderá ver o phpinfo com o localhost / test.php enquanto estiver usando o brew services, o start httpd causará erro se o DocumentRoot estiver na área onde o acesso root é necessário.
fonte