
SO: macOS Mojave 10.14.6
Servidor HTTP: Apache 2.4.55
Al intentar reiniciar el servidor Apache, aparece el mensaje "La dirección ya está en uso...". Hm, entonces debe haber un proceso que escuche ese puerto, ¿verdad? Con esta línea (de otro lugar) en Terminal para ver qué pasa:
ps auxw | grep httpd
da
_www 1317 0.0 0.1 4361716 7452 ?? S 12:39AM 0:00.10 /usr/sbin/httpd -D FOREGROUND
_www 1303 0.0 0.1 4361716 7364 ?? S 12:39AM 0:00.23 /usr/sbin/httpd -D FOREGROUND
root 104 0.0 0.1 4359628 5956 ?? Ss 12:20AM 0:01.07 /usr/sbin/httpd -D FOREGROUND
ausername 7671 0.0 0.0 4277256 804 s003 S+ 12:21PM 0:00.00 grep httpd
_www 7654 0.0 0.0 4359604 1004 ?? S 12:21PM 0:00.00 /usr/sbin/httpd -D FOREGROUND
Bien, ahora trato de detenerlo.
httpd -k stop
lo que da
httpd (no pid file) not running
Ok, entonces lo intento con
/usr/sbin/httpd -k stop
httpd (pid 104?) not running
Mmm... tal vez:
apachectl -k stop
httpd (no pid file) not running
Entonces, ¿qué se está ejecutando? ¿Y cómo lo reinicio? Esta es la primera vez que me enfrento a este tipo de errores con respecto a Apache en OSX.
He comprobadoeste hilopero nada funcionó para mí. Al usarlo, grep -ri listen /etc/apache2
tengo una lista de varios Listen: 80
, pero todos estaban en archivos httpd.conf con .bak, .original, ~previous, .pre-update. Todos excepto uno que se usa para httpd. ¿Cómo puedo saber? httpd -V
lo que da:
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_SYSVSEM_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/opt/local"
-D SUEXEC_BIN="/opt/local/bin/suexec"
-D DEFAULT_PIDLOG="var/run/apache2/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="etc/apache2/mime.types"
-D SERVER_CONFIG_FILE="etc/apache2/httpd.conf"
y ese último archivo tiene estas líneas:
Listen 8080
Listen 80
Así que ahora me quedé sin ideas.
PD: Después de profundizar en los registros, esto ahora es una señal reveladora de que tengo varias instalaciones de Apache (probablemente restos de instalaciones de Homebrew). Estas dos líneas:
[Fri Feb 17 00:22:56.067511 2023] [mpm_prefork:notice] [pid 104] AH00163: Apache/2.4.46 (Unix) PHP/7.3.33 LibreSSL/2.5.5 configured -- resuming normal operations
[Fri Feb 17 00:22:56.067613 2023] [core:notice] [pid 104] AH00094: Command line: '/usr/sbin/httpd -D FOREGROUND'
La primera línea dice que está ejecutando Apache/2.4.46 pero no es la versión que obtengo cuando ejecuto. httpd -v
La segunda línea parece registrar el comando de inicio para el proceso de Apache. ¿Dónde podría ubicarse esta línea de comando? Tiene que ver con el proceso de inicio, ¿verdad?