PHP y PostgreSQL en Mac OS X 10.6

Junto a las críticas, burlas, y (envidia) aplausos de amigos geeks, hace ya varios meses, llegó a mi vida un MacBook Pro 13”. Siempre había sostenido que comprar un Mac era un lujo y que no gastaría tanto dinero en una computadora. Sin embargo, al estar en Estados Unidos era imposible resistir la tentación ante el descuento por ser alumno de la University of Illinois y el (iPad Nano) iPod Touch 8GB que venía de regalo.

Durante estos meses que he usado la laptop, no había sido necesario usarla para desarrollar sitios o aplicaciones Web. Hasta ahora sólo había programado en C, C++, Java. Para estos 3 lenguajes Mac OS X está preparador out of the box. Sin embargo, desde algunas semanas atrás estoy desarrollando un sistema Web como parte de mi Proyecto de Título y, como (me robaron) no tengo un computador de escritorio, he tenido que desarrollar usando el notebook. Hasta ahora lo hacía todo en la nube, pero como el tiempo apremia, y no tengo Internet 3G, he tenido la necesitad de preparar un ambiente de desarrollo en la laptop.

Mac OS X 10.6 viene con Apache 2 (HTTP) instalado y listo para ejecutar (apachectl start o desde System Preferences->Sharing). Entonces sólo era necesario instalar PostgreSQL y PHP 5 con los respectivos drivers. Si bien es cierto existen packages de PostgreSQL para Mac OS X, es mucho más “lindo” compilar el código fuente.

Instalando PostgreSQL

Antes de compilar PostgreSQL necesitamos un paquete llamado readline. Para instalar esta utilidad de GNU podemos usar fink o MacPorts.

$ sudo /sw/bin/fink install readline

Una vez instalado readline, descargamos el código fuente de PostgreSQL. Nota que el siguiente enlace corresponde a la última versión estable de Postgres al momento de escribir este post, y el mirror es para Chile.

$ sudo bash
 
# cd /usr/local/src
 
# curl -O http://wwwmaster.postgresql.org/redir/394/h/source/v8.4.2/postgresql-8.4.2.tar.gz
 
# tar xvfz postgresql-8.4.2.tar.gz
 
# cd postgresql-8.4.2/

Ahora ejecutamos el script configure con los argumentos del path donde se encuentra readline.

# ./configure --with-includes=/sw/include/ --with-libraries=/sw/lib
 
# make
 
# make install

Ahora que PostgreSQL está instalado, sólo resta configurarlo. El primer paso será crear una cuenta de usuario llamado postgres. Esa cuenta la podemos crear utilizando System Preferences->Accounts. Una vez creado el usuario, debemos crear un directorio donde PostgreSQL pueda escribir datos:

# mkdir /usr/local/pgsql/data
 
# chown postgres /usr/local/pgsql/data

Ahora en otra consola, usando el usuario postgres configuramos PostgreSQL:

$ su -l postgres
 
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

Listo, ya podemos iniciar el servidor. Pero antes, algo muy útil será configurar el PATH de ejecución, agregando el directorio que contiene los binarios de PostgreSQL (como psql):

$ export PATH=$PATH:/usr/local/pgsql/bin

Para no tener que escribir lo anterior cada vez que hagamos login, lo mejor será ponerlo en nuestro ~/.profile (el de nuestro usuario regular, no postgres).

Iniciemos el servidor, usando el usuario postgres:

$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start

Instalando PHP 5 y los drivers para PostgreSQL

Necesitamos recompilar PHP con la opción adecuada para usar PostgreSQL. Como es habitual, descargamos el código fuente desde el sitio oficial php.net. Al momento de escribir este post, la última versión estable es la 5.3.1. Una vez descargada en /usr/local/src, procedemos a configurar y compilar:

# tar xvfz php-5.3.1.tar.gz
 
# cd php-5.3.1/
 
# ./configure --with-pgsql --with-apxs2
 
# make
 
# make install

En el paso de compilación (make), en mi sistema arrojó un error relacionado a la biblioteca ICONV. Buscando en la Web encontré que se trababa de un bug (o al menos así está reportado en el bugtracker de PHP). El workaround que funcionó para mi fue hackear iconv en las fuentes de PHP (ext/iconv/iconv.c); eliminar las líneas 185-187.

Finalmente, copiar php.ini al directorio adecuado

# cp php.ini-development /usr/local/lib/php.ini

Instalando PDO para PostgreSQL

Otra cosa que necesitamos quienes usamos frameworks como PRADO o Symfony, es instalar el driver PDO. El proceso es simple:

$ pecl download pdo_pgsql
 
$ tar xzf PDO_PGSQL-1.0.2.tgz

Ahora necesitamos compilar e instalar la extensión:

$ cd PDO_PGSQL-1.0.2
 
$ phpize
 
$ ./configure --with-pdo-pgsql=/usr/local/pgsql/
 
$ make && sudo make install

Sólo resta editar la configuracion en php.ini:

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20090626/"
 
extension = pdo_pgsql.so

Reiniciamos apache (apachectl restart) y listo, ya tenemos nuestro sistema preparado para desarrollar aplicaciones y sistemas con PHP & PostgreSQL.

Publicado en Español,Mac,PHP 5,Programación | 2 Comentarios

2 Comentarios hasta ahora

Suscribirse a Comentarios RSS

  1. mar 2, 2010 at 6:39 pm

    elre87 dice,

    Buenas!

    tengo una duda, quiero instalar la última versión de PHP en mi Mac oS 10.6, pero ya viene instalado por defecto. La cuestión es que necesito activarle unas extensiones, por lo que me toca compilarlo e instalarlo.
    La duda es… necesito desinstalar la versión que tengo de PHP? y la carpeta src dentro de local la creo yo supongo no? porque por defecto no existe!

    Gracias y buena explicación!

  2. mar 5, 2010 at 12:56 pm

    gacevedo dice,

    Estimado,

    Gracias por visitar el blog. No necesitas desinstalar la versión de PHP que viene por defecto. Y sí, en efecto debes crear los directorios que no existen.

    Saludos.

Dejar un Comentario

Por favor, se cortés y comenta sobre el tema. Tu e-mail nunca será publicado.

*

Sitios de interés