Previamente, en Adriania…

MusicLib: Programar una aplicación web

Decidí emprender la programación de una aplicación web que maneje una librería de música, un proyecto relativamente simple, para enseñarme varias cosas:

  • PostGreSQL
  • PostGreSQL con PHP
  • Subversion para control de versiones
  • Trac para bug tracking
  • Creación de aplicaciones con CakePHP y otros frameworks
  • Aplicación de jQuery a esos frameworks, especialmente desarrollando métodos Ajax
  • Creación de plugins para CakePHP y otros frameworks

Es decir, con esto tengo para todos mis fines de semana y ratos libres de los próximos meses. Voy a ir documentando cada paso, y debería ir saliendo una linda serie de tutoriales.

Diseño

La idea es algo relativamente simple: guardar información de canciones, basándome en los datos almacenados por una aplicación de biblioteca musical como Rhythmbox. La estructura inicial de la base de datos es

Album N -> N Tema

Tema N -> N Persona

Tema – Persona N -> 1 Rol

Tema N -> 1 Género

Algo razonable, y que me permite también testear y aprender sobre i18n y l10n en los frameworks que use.

Instalación y configuración inicial

Lo que hice para empezar es basarme en tutoriales para instalar y configurar subversion, trac, cakephp y postgresql. Un tutorial sencillo y bueno para subversion es el de symfony. Tal vez mi setup no sea exactamente el mismo de los tutoriales (por ejemplo, no uso DAV para manejar Subversion vía web). Mi configuración es aceptable para un usuario trabajando solo en una red local, sin plantearse problemas de seguridad a este nivel. Por supuesto, para esto es necesario que esa red sea segura a otro nivel. Estos tutoriales pueden ser ubuntu-céntricos.

Una vez instalados los paquetes necesarios (por ejemplo, además de lo obvio, php5-pgsql para interconexión de PHP con la base de datos, pgadmin3 para administrar gráficamente PostGreSQL), creé el repositorio de la aplicación en Subversion. Creé un directorio, /var/svn, bajo el cual guardo mis repositorios, y otro, /var/trac/, bajo el cual están los proyectos manejados por trac.

Subversion y Trac

Tener los proyectos cargados en un sistema de control de versiones es algo básico hoy en día para un programador, y con subversion es una tarea bastante simple. Lo que hice fue:

  1. crear un repositorio para el proyecto: svnadmin create /var/svn/musiclib
  2. crear el layout del repositorio con  svn mkdir -m "layout creation" file:///var/svn/musiclib/trunk file:///var/svn/musiclib/tags file:///var/svn/musiclib/branches
    La idea es tener la versión en desarrollo en trunk, las releases en tags, y eventuales experimentos en branches.
  3. Borrar los archivos de cache en el directorio /var/www/app/tmp/cache
  4. descargar una versión actualizada de CakePHP en un directorio temporario e importarla al repositorio: svn import -m "Creación del repo de MusicLib" /tmp/cakephp13 file:///var/svn/musiclib/trunk
  5. hacer un checkout del repositorio en el directorio de trabajo: svn checkout file:///var/svn/musiclib/trunk /var/www/musiclib
  6. Una vez hecho esto, puedo agregar una regla para ignorar el contenido del directorio /tmp: cd /var/www/musiclib/app/tmp; svn propedit svn:ignore cache . Se va a abrir un editor de texto, basta agregar un * para ignorar cualquier archivo que se cree en ese directorio.
  7. Al hacer esto, no hay que olvidarse de recrear el directorio en cuestión y volver a darle permisos para todo el mundo.
  8. crear el proyecto en trac: sudo trac-admin /var/trac/sites/musiclib initenv, usando lo básico: sqlite, el path /var/svn/musiclib/trunk, etc.
  9. darle los permisos necesarios al directorio nuevo de trac: sudo chown -R www-data /var/trac/sites/musiclib/

Configuración inicial de la Base de datos y de CakePHP

Visitando http://localhost/musiclib, Cake me pedía varias cosas: darle permisos adecuados al directorio de cache, crear una configuración para la conexión a base de datos, y agregar valores nuevos de salts para encriptación.
Usando pgadmin3, creé una base de datos, “musiclib“, con propietario “adriano“. Le había asignado un password al usuario, así que lo siguiente fue abrir el archivo app/config/database.php.default, agregar los datos correctos para la db, y guardarlo como app/config/database.php.
También edité app/config/core.php y agregué nuevos valores a
Lo siguiente fue agregar los permisos correctos al directorio app/tmp/cache y sus subdirectorios: chown -R a+w app/tmp/cache.
Con esto logré una hermosa visión de mensajes verdes como la siguiente:

a cakephp successful installation

Para la próxima, la creación de las tablas en la base de datos, la creación de los modelos de CakePHP, y el andamiaje inicial.

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>