Configuración de un entorno AMP para Drupal en Mac OS X con soporte GD

Ayer le tocó el turno a la configuración de la librería GD para PHP en Ubuntu y Windows, y hoy le dedico una entrada a la configuración de un entorno de desarrollo AMP en Drupal (Apache + MySQL + PHP) en Mac OS X, probado para Leopard.

Aviso importante, si tenéis Snow Leopard, esta solución no os servirá porque el paquete entropy para php no es compatible, podéis encontrar una alternativa aquí.

Primer paso, activación del servidor web Apache

Mac OS X lleva un servidor Apache instalado por defecto, solamente es necesario activarlo para poder trabajar con él. En el caso de Leopard, la versión de apache es la 2, por lo que ya está actualizado. Para activarlo, deberemos ir a Preferencias de Sistema y allí seleccionamos "Compartir web". Imagen_2_0.png

Segundo paso, instalación y configuración de PHP

Los siguientes pasos son un poco más complejos, si no necesitamos soporte GD para nuestro sitio web, podemos seguir los pasos que recomienda Asier y activar la extensión por defecto de PHP que viene con el sistema operativo, editamos con un sudo el fichero /etc/apache2/httpd.conf y descomentamos la línea referente a la extensión de PHP.

sudo nano /etc/apache2/httpd.conf

La línea

#LoadModule php5_module libexec/apache2/libphp5.so

Debe quedar así

LoadModule php5_module libexec/apache2/libphp5.so

Si necesitamos soporte GD, el paquete de Mac no viene compilado por defecto, por lo que la instalación será un poco diferente. No es necesario modificar el fichero anterior, sino que nos podemos descargar una versión ya compilada con este soporte desde entropy.ch y ejecutar el fichero .dpkg que ya configurará el entorno de apache para tener soporte de PHP con soporte de GD. En ambos casos deberemos reiniciar el servidor de apache:

sudo apachectl restart

Tercer paso, MySQL

Una vez que tenemos Apache+PHP, solamente nos queda añadir la base de datos, para este ejemplo, MySQL; será necesario descargar la versión de Mac OS X desde la página oficial de MySQL, al ser un .dmg se puede instalar haciendo doble click en el fichero descargado en un proceso muy sencillo, instalaremos el fichero mysql-VERSION-pkg y también el fichero MySQLStartupItem.pkg para poder reiniciar la base de datos facilmente. La configuración la he sacado de este artículo de John VanDyk, que he resumido en cuatro pasos:

  • Configurar la base de datos para que se arranque al iniciar la máquina, para ello añadiremos el código de abajo en el fichero /Library/LaunchDaemons/com.mysql.mysqld.plist (que deberemos crear)
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>Program</key>
    <string>/usr/local/mysql/bin/mysqld_safe</string>
    <key>RunAtLoad</key>
    <true/>
    </dict>
    </plist>
  • Añadir el ejecutable mysql al PATH, para facilitar la ejecución, para ello se añade la siguiente línea en el fichero /etc/paths.d/mysql (que deberemos crear)

    /usr/local/mysql/bin
  • Generaremos el fichero my.cnf de parámetros en /etc con alguno de los disponibles en el directorio /usr/local/mysql/support-files yo he utilizado my-small.cnf ya que es un servidor local de desarrollo.

    sudo cp /usr/local/mysql/support-files/my-small.cnf /etc/my.cnf
  • En este fichero, haremos las modificaciones de los parámetros según nuestros requerimientos.
    Es muy importante cambiar el socket de conexión para MySQL, ya que si no lo hacemos, nos dará este error en la conexión de PHP: Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (2)

    sudo mkdir /var/mysql
    sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
    

Para arrancar y parar el servidor MySQL, podemos usar estos comandos, en caso de que hayamos instalado el paquete MySQLStartupItem.

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start 
sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop 

Añadiendo configuración específica para Drupal

En Apache

  • Modificación del fichero /etc/hosts, para que la dirección que configuremos resuelva en local, deberemos añadir la url de nuestro sitio apuntando a local, por ejemplo:
    127.0.0.1 miweb.dev

    Para que nuestro sitio resuelva, podemos crear un link simbólico en el subdirectorio sites de nuestra web, por ejemplo, si tenemos un proyecto miweb.com, deberíamos tener, dentro de sites, un subdirectorio miweb.com donde tenemos el settings.php y los módulos y themes propios de ese sitio, entonces podemos generar un link simbólico llamado miweb.dev para que esa dirección nos lleve a nuestra web en el entorno de desarrollo:

    ln -s miweb.com/sites/miweb.com miweb.com/sites/miweb.dev

    De esta forma, podemos mantener la misma estructura en el servidor de desarrollo y el de producción, siempre que la base de datos y el usuario también tengan el mismo nombre y password.

  • Creación de Virtual Hosts, debemos modificar el fichero /private/etc/apache2/httpd.conf y cambiarle los siguientes valores:
    • DocumentRoot: Deberemos apuntar, tanto el DocumentRoot como el Directory al directorio del filesystem donde tengamos las webs, por ejemplo /miswebs
    • # Virtual hosts: Deberemos descomentar el Include para poder añadir nuestros sitios, por defecto en /private/etc/apache2/extra/httpd-vhosts.conf

    También será necesario modificar el fichero de virtual hosts (por defecto /private/etc/apache2/extra/httpd-vhosts.conf) para añadir nuestros sitios, por ejemplo:

    <virtualhost :80="">
      ServerAdmin me@myserver 
      DocumentRoot /webs/miweb.com 
      ServerName miweb.dev 
      RewriteEngine On 
      RewriteOptions inherit 
    </virtualhost>
    
  • Soporte de URLs limpias, o clean URLs, para que Drupal pueda soportar las clean URLs, es necesario especificar la cláusula AllowOverride All en el Directory del fichero /private/etc/apache2/extra/httpd-vhosts.conf (más información)

Para confirmar todos estos cambios, será necesario reiniciar el servidor Apache:

sudo apachectl restart

En MySQL Para crear la base de datos en Drupal que usaremos en el settings.php, podemos usar la sentencia CREATE DATABASE nombre_bbdd; y para crear el usuario, podemos usar una de las tres formas de crear usuarios en MySQL que publiqué hace unos meses.

Otras opciones

Hay dos paquetes de software que instalan este servidor, pero no son todo lo modificables que a mí me gustaría, pero el tiempo de instalación es mucho menor, XAMPP es una buena opción y es software libre, la otra opción es MAMP, que tiene una versión gratuita, y otra MAMP PRO, de pago. Otra alternativa es usar Fink para instalar todos los paquetes necesarios, en este tutorial se explica cómo hacerlo con Fink Commander. No os perdáis el listado de herramientas que ofrecen en Work Habits para el desarrollo con Drupal.

Comentarios

[...] Debemos tener soporte para las librerías GD o ImageMagik en nuestra instalación de php. He hablado con anterioridad de cómo lidiar con las librerías GD en Ubuntu y también como configurar un entorno web de desarrollo con GD habilitado en Mac OS X. [...]

Excelente blog y muy interesantes post's, la verdad llegué a tú blog por casualidad pero he leido algunos post's tuyos y realmente me han parecido muy interesantes, te seguire leyendo frecuentemente.

Un saludo.

Gracias Gustavo!

Olé!

Añadir nuevo comentario