Tiempo estimado de lectura:

Como ya os conté, hace poco he tenido que lidiar con una web en Symfony 1.0. Ponerla a funcionar en NGINX no resultaba trivial, ya que para más inri está enlazada con una aplicación Joomla. Si, lo nunca visto. Así que me vi en la obligación de instalar Apache2 en Mavericks.

Pero no, espera… ¡si OS X ya tiene ese servidor web instalado! Entonces basta con hacer algunas adaptaciones para tenerlo más o menos a mi gusto. Vamos allá.

Si recordáis, instalamos php-fpm para utilizarlo con NGINX como un servicio en el puerto 9000. Vamos a aprovecharlo. Si no habéis instalado PHP aún, podéis seguir las instrucciones correspondientes de ese artículo.

Lo primero que vamos a hacer una vez que tenemos PHP instalado es preparar la configuración no estándar en alguna localización de donde la podamos recuperar si una actualización del sistema nos la chafa, o si hacemos una reinstalación del sistema operativo. Yo he optado por utilizar el directorio que tengo creado para temas de desarrollo en mi directorio de usuario:

$ mkdir -p ~/dev/apache2/sites-available ~/dev/apache2/sites-enabled

De ese modo, puedo crear ahí mis hosts virtuales utilizando la convención de linux de toda la vida para activar y desactivar sitios web en un servidor Apache.

Lo siguiente que necesitaremos es instalar el módulo de FastCGI para Apache2. Para ello utilizaremos nuestro compañero en mil batallas: Homebrew.

$ brew tap homebrew/apache
$ brew install mod_fastcgi

En https://github.com/Homebrew/homebrew-apache podéis encontrar más detalles del módulo.

Ahora podemos crear un fichero de configuración en nuestro directorio ~/dev/apache2:

 1 # ~/dev/apache2/homebrew-php-fpm.conf
 2 LoadModule fastcgi_module /usr/local/Cellar/mod_fastcgi/2.4.6/libexec/mod_fastcgi.so
 3 
 4 <ifmodule mod_php5.c>
 5   php_admin_flag engine off
 6 </ifmodule>
 7 
 8 <ifmodule mod_fastcgi.c>
 9   AddHandler php-fastcgi .php
10   Action php-fastcgi /php-fpm
11   Alias /php-fpm /Users/carlos/dev/apache2/homebrew-php-fpm.fcgi
12 
13   FastCGIExternalServer /Users/carlos/dev/apache2/homebrew-php-fpm.fcgi -host 127.0.0.1:9000
14 
15   <location /php-fpm>
16     Order Deny,Allow
17     Allow from all
18   </location>
19 </ifmodule>

Obviamente, donde pone /Users/carlos/dev/apache2 deberéis poner la ruta que habéis creado.

El fichero homebrew-php-fpm.fcgi puede no existir o incluso estar vacío. El mío contiene:

This is a fake archive that actually doesn't need to exist.

A continuación editamos el fichero de configuración de Apache2: /private/etc/apache2/httpd.conf.

Debajo de la última línea que comienza con LoadModule añadimos:

Include /Users/carlos/dev/apache2/homebrew-php-fpm.conf

Y hacia el final del archivo, donde está comentada la línea por defecto para activar los hosts virtuales, podemos poner:

# Virtual hosts
NameVirtualHost *:80
# NameVirtualHost *:443
Include /Users/carlos/dev/apache2/sites-enabled/*.site

Un ejemplo de host virtual:

# /Users/carlos/dev/apache2/sites-enabled/website.site
<virtualhost *:80>
  ServerName website.127.0.0.1.xip.io
  DocumentRoot /Users/carlos/dev/website/web

  Alias /sf /Users/carlos/dev/website/lib/vendor/symfony/data/web/sf
  <directory /Users/carlos/dev/website/web>
    AllowOverride All
  </directory>
</virtualhost>

Ahora ya solamente nos queda… utilizarlo.

Mi stack Apache2 + PHP + MySQL se pondría en marcha así:

$ brew services start mysql55
$ php.use 53
$ sudo apachectl -k start

Y para detenerlo:

$ sudo apachectl -k stop
$ php.stop
$ brew services stop mysql55

Y a correr.

Blog Logo

Carlos Escribano

Desarrollador Web desde hace 10 años. Me gusta resolver problemas de forma ingeniosa. Saber más.

Artículos de desarrollo web en español

nettoys.es

Volver al Inicio