OSX como mostrar o status do apache no terminal?


11

Percebi que no meu servidor linux, quando digito apachectl restart, me dá um feedback pouco, mas útil, como restartinge então [ok]ou [fail]no final da linha. Não muito, mas pelo menos eu sei o que está acontecendo e posso verificar os logs.

No meu OS X, não recebo nada. apenas a próxima linha imediatamente:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

Como posso ativar esses recursos de 'depuração'?


Não estou familiarizado com o OS X, mas você pode editar o script init para adicionar uma echolinha.
quanta

onde está esse script? e qual linha devo adicionar echo? Desculpe, eu sou novo por aí e preciso de detalhes: \
mgPePe

Eu não sou um cara do OS X, mas talvez apenas siga a filosofia do Unix de "nenhuma notícia é boa notícia" e comece a incomodá-lo apenas se houver algo errado?
Janne Pikkarainen

hmm erros silenciosas não ajuda, então eu não sou um fã realmente
mgPePe

Por favor, poste o conteúdo de /usr/sbin/apachectl.
quanta

Respostas:


5

Que tal no script do apachectl wrapper você coloca algo assim no final.

tail -5 /var/log/httpd/error_log

você deve ver algo assim em uma inicialização normal

  • [Sex Apr 22 23:39:20 2011] [aviso] Digest: gerando segredo para
    autenticação de digestão ...
  • [Sex, 22 de abril, 23:39:20 2011] [aviso] Resumo: concluído
  • [Fri Apr 22 23:39:20 2011] [avisar] arquivo pid
    /mlk/apache/pid/httpd.pid substituído - Desligamento impuro da execução anterior do Apache?
  • [Sex Apr 22 23:39:20 2011] [aviso] Apache / 2.0.63 (Unix) DAV / 2 configurado - retomando as operações normais

Caso contrário, qualquer erro deve, pelo menos em parte, ser mostrado aqui. A frase-chave está oculta acima.

Adicional: / usr / sbin / apachectl pertence à raiz, você deve ser um usuário privilegiado para fazer isso. sudo vi / usr / sbin / apachectl

vá para o final do arquivo e insira-o entre as linhas "esac" e "exit $ ERROR". ie

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

Observe que isso imprimirá as últimas linhas, independentemente da ação que você executar com o script, pare de iniciar, reinicie. você pode colocá-lo apenas na parte inicial da instrução do caso.


Isso soa como uma solução possível. E como eu poderia anexá-lo para que ele seja executado automaticamente a cada comando de reinicialização?
mgPePe 5/08

Tive que ssh no meu servidor macos em casa para ver / usr / bin / apachectl. Na resposta acima, adicionei os comandos para editar o arquivo.
Michael Henry

30

Eu tenho o mesmo problema no meu mac. Sempre que tento iniciar o apache e nada acontece, eu imediatamente executo esse comando. No meu caso, o problema sempre parece estar nos arquivos de configuração do apache.

apachectl configtest

Obrigado por isso. Eu mesmo estava enfrentando esse problema e descobri que uma atualização no homebrew SQLite estava fazendo com que o homebrew PHP iniciasse um erro do Apache que não aparecia em nenhum lugar, exceto no configtest.
AlexMax

Obrigado, obrigado, obrigado!!! Isso acabou de salvar minha sanidade !!!
E finalmente

1
versão curta deste comando éapachectl -t
equiman

Este comando informa se a configuração httpd do Apache (httpd.conf) está livre de erros de sintaxe. Para ver se o processo está em execução, você pode executar "htop" e depois F4 para filtrar "httpd" para ver todos os processos gerados pelo httpd.
Puneet Lamba

8

apachectlno Mac é um invólucro em torno de alguns launchctlcomandos (basta olhar para o arquivo). Infelizmente, o launchctl não sai com um código de erro quando algo dá errado na inicialização httpd, portanto, o script não tem uma maneira fácil de exibir nada, mesmo que tente.

Uma verificação básica que você pode executar é verificar a existência dos processos Apache após o apachectl startcomando.

ps aux | grep httpd

de certa forma, você está dizendo: "não existe essa informação de depuração que você possa definir no macosx, mas é assim que você pode verificar se o servidor apache está em execução" está correto?
mgPePe 5/08

Sim, é isso.
Sven

0

No macOS com netstatcomando, exiba toda a conexão de rede. Você pode filtrar apenas as conexões de 'escuta' e ver os servidores http (s).

Você pode criar um arquivo bash com este código:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

O resultado quando o servidor for parado sudo apachectl -k stopserá:

Apache server is not running

O resultado quando o servidor estiver em execução sudo apachectl -k stopserá:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

Neste exemplo, tenho dois servidores em execução, um com https e outro com http.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.