OSX cómo mostrar el estado de apache en la terminal?

11

Me di cuenta de que en mi servidor Linux cuando escribo apachectl restart, me da pocos pero útiles comentarios como restartingy luego [ok]o [fail]al final de la línea. No mucho, pero al menos sé lo que está pasando, y puedo ir a revisar los registros.

En mi OS X no obtengo nada. solo la siguiente línea de inmediato:

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

¿Cómo puedo habilitar esas funciones de 'depuración'?

mgPePe
fuente
No estoy familiarizado con OS X, pero puede editar el guión de inicio para agregar una echolínea.
quanta
¿Dónde está ese guión? ¿Y a qué línea debo agregar echo? Lo siento, soy nuevo y necesito detalles: \
mgPePe
No soy un chico de OS X, pero tal vez solo sigue la filosofía de Unix de "no hay noticias son buenas noticias", y comienza a molestarte solo si hay algo mal.
Janne Pikkarainen
hmm errores silenciosos no ayudan, así que no soy un fan de verdad
mgPePe
Por favor, publique el contenido de /usr/sbin/apachectl.
quanta

Respuestas:

5

¿Qué tal en el script apachectl wrapper pegas algo como esto al final?

tail -5 /var/log/httpd/error_log

deberías ver algo como esto en un inicio normal

  • [Vie 22 de abril 23:39:20 2011] [aviso] Resumen: generación de secreto para la
    autenticación de resumen ...
  • [Vie 22 de abril 23:39:20 2011] [aviso] Resumen: hecho
  • [Vie 22 de abril 23:39:20 2011] [advertir] archivo pid
    /mlk/apache/pid/httpd.pid sobrescrito - ¿Cierre impuro de la ejecución anterior de Apache?
  • [Vie 22 de abril 23:39:20 2011] [aviso] Apache / 2.0.63 (Unix) DAV / 2 configurado - reanudando las operaciones normales

De lo contrario, cualquier error debe mostrarse aquí, al menos en parte. La frase clave se destaca arriba.

Adicional: / usr / sbin / apachectl es propiedad de root, debe ser un usuario privilegiado para hacer esto. sudo vi / usr / sbin / apachectl

muévase al final del archivo e insértelo entre las líneas "esac" y "exit $ ERROR". es decir.

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

Tenga en cuenta que esto imprimirá las últimas líneas sin importar la acción que realice con el script, detenga el inicio, reinicie. es posible que solo desee ponerlo en la parte inicial de la declaración del caso.

Michael Henry
fuente
Eso suena como una posible solución. ¿Y cómo podría adjuntarlo para que se ejecute automáticamente con cada comando de reinicio?
mgPePe
Tuve que ingresar a mi servidor Macos en casa para ver / usr / bin / apachectl. En la respuesta anterior, agregué los comandos para editar el archivo.
Michael Henry
30

Tengo el mismo problema en mi mac. Cuando intento iniciar Apache y no pasa nada, inmediatamente ejecuto este comando. En mi caso, el problema siempre parece estar en los archivos de configuración de apache.

apachectl configtest
Randy Findley
fuente
Gracias por esto. Me encontré con este problema yo mismo, y resultó que una actualización de homebrew SQLite estaba causando que PHP homebrew activara un error de Apache que no apareció en ninguna parte excepto en configtest.
AlexMax
¡¡¡Gracias, gracias, gracias!!! ¡Esto acaba de salvar mi cordura!
Y finalmente el
1
versión corta de este comando esapachectl -t
equiman
Este comando le indicará si la configuración httpd de Apache (httpd.conf) está libre de errores de sintaxis. Para ver si el proceso se está ejecutando, puede ejecutar "htop" y luego F4 para filtrar en "httpd" para ver todos los procesos generados por httpd.
Puneet Lamba
8

apachectlen la Mac hay una envoltura alrededor de algunos launchctlcomandos (solo mira el archivo). Desafortunadamente, launchctl no sale con un código de error cuando algo sale mal al comenzar httpd, por lo que el script no tiene una manera fácil de mostrar nada, incluso si lo intenta.

Una comprobación básica que puede realizar usted mismo es verificar la existencia de procesos de Apache después del apachectl startcomando.

ps aux | grep httpd
Sven
fuente
de alguna manera, usted está diciendo, "no existe tal información de depuración que pueda configurar en macosx, pero así es como puede verificar si el servidor apache se está ejecutando" ¿es así?
mgPePe
Sí, eso es todo.
Sven
0

En macOS con netstatcomando, muestra toda la conexión de red. Puede filtrar solo las conexiones de "escucha" y ver los servidores http.

Puede crear un archivo bash con 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

El resultado cuando se detiene el servidor sudo apachectl -k stopserá:

Apache server is not running

El resultado cuando el servidor se está ejecutando sudo apachectl -k stopserá:

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

En este ejemplo, tengo dos servidores en ejecución, uno con https y otro con http.

equiman
fuente