Instalar y configurar Apache en MacOS 12 (Monterey)
En un post anterior vimos cómo Instalar varias versiones de PHP en MacOS. Probablemente necesites ahora instalar y configurar apache para que corra en tu máquina con MacOS y puedas correr tus aplicaciones desarrolladas en PHP. En este post veremos cómo hace esto posible.
Lo primero que hay que tener en cuenta es que en MacOS 12 Monterrey ya viene preinstalado Apache 2.4 Sin embargo, no es mediante brew. Esto lo puedes comprobar si puedes ver la configuración pero no los paquetes en brew.
~ apachectl -t -D DUMP_INCLUDES
Included configuration files:
(*) /private/etc/apache2/httpd.conf
(509) /private/etc/apache2/extra/httpd-mpm.conf
(515) /private/etc/apache2/extra/httpd-autoindex.conf
(555) /private/etc/apache2/other/mpm.conf
(555) /private/etc/apache2/other/php7.conf
☁ ~ brew search apache
==> Formulae
apache-activemq apache-arrow-glib apache-drill apache-forrest apache-opennlp apache2
apache-archiva apache-brooklyn-cli apache-flink apache-geode apache-pulsar apachetop
apache-arrow apache-ctakes apache-fop apache-httpd apache-spark
==> Casks
apache-couchdb apache-directory-studio
Lo más recomendable en este caso es prescindir de la versión por defecto si es el caso, e instalar todo nuevamente desde brew.
sudo apachectl stop
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null
Instalar Apache con Brew
Lo primero que debemos instalar es el servicio http.
brew install httpd
Ahora bien para que apache se inicie con el sistema debermos configurarlo como servicio.
brew services start httpd
En este punto ya debes ver el popular "It works!".
Configuración de Apache
La configuración de Apache con brew se encuentra en /opt/homebrew/etc/httpd/httpd.conf
. Lo primero que puedes hacer en este caso es cambiar el puerto por defecto (8080) hacia el 80. Para esto debes cambiar la línea
Listen 8080
Por
Listen 80
También puedes cambiar el directorio desde donde se toman los archivos web con la directiva DocumentRoot
.
DocumentRoot "/opt/homebrew/var/www"
Por algo como
DocumentRoot "/Users/my_user/www"
Con esto también deberás cambiar el tag <Directory>
de
<Directory "/opt/homebrew/var/www">
Por algo como
<Directory "/Users/my_user/www">
Finalmente si deseas utilizar archivos .htaccess (lo más común) deberás permitir la sobreescritura en el mismo bloque con.
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# AllowOverride FileInfo AuthConfig Limit
#
AllowOverride All
También deberás activar el módulo de apache mod_rewrite.
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so
De manera opcional puedes cambiar el ServerName
de apache, tus sitios seguirán funcionando aún si no haces esto, sin embargo, cuando estés verificando que todo está ok en la config de apache puedes encontrarte con este error.
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using P2P-TEC-MED-009.local. Set the 'ServerName' directive globally to suppress this message
Para esto debes configurar la directiva como localhost.
ServerName localhost
Una vez hecho esto puedes reiniciar el servicio de apache.
brew services restart httpd
Solución de problemas
A continuación te dejo unos comandos muy útiles que te servirán para detectar problemas en la configuración.
Verificar la configuración de apache después de un cambio.
/opt/homebrew/bin/apachectl configtest
Reiniciar el servicio httpd de apache.
/opt/homebrew/bin/httpd -k restart