Instalar y configurar Apache en MacOS 12 (Monterey)

Author
By Darío Rivera
Posted on 2021-12-09 in MacOS

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!".

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

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.