Preparando el entorno de desarrollo

De Guifi.net - Wiki Hispano

Introducción

Este documento tiene como propósito documentar algunos consejos sobre cómo adecuar un entorno de desarrollo para colaborar en el desarrollo de la web de guifi.net. Nos centraremos en el módulo "drupal-guifi", que es el pilar fundamental de toda la gestión de la web de guifi.net, pero el entorno montado puede utilizarse también para desarrollar otros módulos o temas, como por ejemplo "theme_guifinet2011".

Instalación de servicios

Para hacer funcionar Drupal en nuestra máquina es fundamental arrancar un servidor web, el módulo PHP para el servidor web, y un servidor de base de datos (MySQL).

Dependiendo de nuestro sistema operativo y nuestras preferencias, la instalación de estos servicios se realizará de una manera u otra. A continuación se detalla para los entornos Debian/Ubuntu con Apache+PHP+Mysql y Archlinux con Nginx+PHP+Mysql. Ambas instalaciones son muy simples.

  • Debian/Ubuntu:
$ sudo apt-get install mysql-server libapache2-mod-php5 php5-gd php5-mysql
  • Archlinux:
$ pacman -S nginx mysql php-fpm php-gd

Aqui sugiero instalar phpmyadmin para acceder a la gestion de la BBDD via web Este es un buen lugar para ver como se hace http://www.debianhelp.co.uk/phpmyadmin.htm, pero básicamente se hace mediante

 $ apt-get install phpmyadmin

Para acceder asi

 $ http://localhost/phpmyadmin


Documentación para Archlinux: Apache, PHP and MySQL, Nginx

La configuración del servidor web (Apache/lighttpd/nginx) para hacer que funcione el módulo de PHP en la raiz de nuestro directorio web depende de nuestro sistema. En Google puedes encontrar varios tutoriales si no tienes claro cómo hacerlo. Si encuentras uno bueno, por favor, enlázalo en este documento.

Configuración de php.ini

Debemos tener activados los siguientes módulos en el archivo php.ini:

extension=mysql.so
extension=iconv.so
extension=gd.so

Ahora debes probar si tu sistema interpreta archivos PHP. Aquí tienes un ejemplo que puedes crear en el DOCUMENT_ROOT de tu servidor web. Si no te funciona revisa los pasos anteriores y consulta la documentación de tu distribución.

<?php
phpinfo();
?>

Phpinfo01.png

Descargando el código fuente

El código de los módulos "drupal-guifi", "drupal-bugdets" y "theme_guifinet2011" son software libre, y están alojados en los repositorios de Gitorious. Los repositorios son útiles para desarrollo de software pero nosotros nos limitaremos a clonarlos.

Requisitos para el clonado del repositorio drupal-guifi

Veamos como deberíamos proceder para hacer un fork del proyecto "drupal-guifi" de cara a realizar alguna modificación sobre su código fuente.

  • Crearse una cuenta en Gitorious.
  • Crear unas llaves SSH (ssh-keygen) sin contraseña, y añadirlas en nuestro perfil de usuario de gitorious. Por ejemplo:
$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/dave/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/dave/.ssh/id_rsa.
Your public key has been saved in /home/dave/.ssh/id_rsa.pub.

Gitorious001.png

  • Acceder a la página del proyecto "drupal-guifi".
  • Clonar el proyecto. Con eso ya tenemos un fork del proyecto sobre el que podemos realizar nuestros cambios.


Páginas web en Gitorious de los proyectos con los que vamos a trabajar:

Descarga, instalación y configuración de un entorno Drupal

Ahora que ya tenemos los servicios necesarios instalados en nuestra máquina de desarrollo y sabemos cómo clonar los repositorios de código fuente con los que queremos trabajar, vamos a proceder a tener funcionando en nuestra máquina un Drupal 6.x (con varios módulos adicionales), ya que así podremos ver y probar los cambios que vamos haciendo a nuestro repositorio de "drupal-guifi".

Descargas

  • La última versión de Drupal 6.x, actualmente la 6.26, desde su página oficial
$ wget http://ftp.drupal.org/files/projects/drupal-6.26.tar.gz
  • Módulos de Drupal fundamentales: webform, views
  • Módulos de Drupal opcionales: schema, devel, potx, i18n, l10n_client, languageicons, language_sections, diff, captcha, captcha_pack, event, views_slideshow, cck, fckeditor, image, image_filter
  • Módulos desarrollados por la comunidad Guifi.net: budgets, guifi
  • El tema oficial "theme_guifinet2011"
  • La base de datos actual de desarrollo de la web de guifi.net:
$ wget http://www.guifi.net/guifi66_devel.sql.gz

Instalación de Drupal

Si en algun momento, os quedais atascados porque no carga la pagina como queréis, mirado el log de Apache que os puede dar pistas así

 $ tail -f /var/log/apache2/*.log

Ahora continuemos


Vamos a poner en marcha un entorno Drupal básico y posteriormente sobrescribiremos la base de datos con la que hemos descargado previamente de Guifi.net.

Estos son los pasos básicos para instalar y configurar un site Drupal:

  • Descomprimimos el paquete de Drupal que nos hemos descargado y la ponemos accesible en el DOCUMENT_ROOT de Apache:
$ cd /var/www/html
$ tar zxvf drupal-6.26.tar.gz
$ ln -s drupal-6.26 guifi

Si queréis instalar en cualquier otro idioma, seguid los pasos de aqui http://www.andymalaga.com/instalar-drupal-6-en-espanol Básicamente es descargar archivo .po, cambiar nombre a ca.po, almacenarlo en /profiles/default/translations Si no lo haces ahora, no pasa nada porque luego peudes cambiar el idioma en un entorno gráfico. Yo he tenido a veces problemas con otros idiomas y otras veces me ha ido a la primera


Drupal001.png

  • Al llegar al apartado de configuración de la base de datos, necesitaremos tener creada una base de datos local de MySQL para desarrollo:
[dave@inuik http]$ mysql -u root -p
...
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database guifi_test;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on guifi_test.* to guifi@localhost identified by 'guifinet';
Query OK, 0 rows affected (0.00 sec)

Ya podemos introducir la información de conexión a la base de datos para que Drupal cree las tablas necesarias. En esta imagen pone ueusrio guifi. Para acceder, tienes que resetear la contraseña del usuario desde el entorno gráfico. Desde comandos seguro que se puede pero no quiero buscarlo ahora. En el entorno gráfico de mysqladmin escoges la BBDD y en privilegios escoges al usuario, y cambias la contraseña, o mas bien, le pones una. Si no lo haces, no accederá y te dara un error como este



Site off-line The site is currently not available due to technical problems. Please try again later. Thank you for your understanding.


Mas opcioens de ayuda aqui http://drupal.org/node/856894

Texto de encabezado

Drupal002.png


Cuando te da un mensaje como este

Configure site All necessary changes to ./sites/default and ./sites/default/settings.php have been made, so you should remove write permissions to them now in order to avoid security risks. If you are unsure how to do so, please consult the on-line handbook.

Es para que cambies los permisos de settings.php. Yo lo he hecho asi

chmod 644 settings.php

Instalación de los módulos de Drupal necesarios para arrancar el entorno

Descargar los módulos absolutamente necesarios para arrancar nuestro site de Guifi.net

ATENCIÓN. Fíjate que el módulo "drupal-guifi" que estamos clonando no es el repositorio principal sino el que hemos creado haciendo un fork del proyecto principal. Así los cambios que hagamos los podremos subir a Gitorious, para posteriormente, si consideramos conveniente, notificar a los desarrolladores principales que los integren en la rama principal de desarrollo (merge request).

$ mkdir drupal-6.26/sites/all/modules
$ cd drupal-6.26/sites/all/modules
$ git clone git://gitorious.org/guifi/drupal-budgets.git budgets
$ # Clonado de MI FORK del módulo "drupal-guifi" 
$ git clone git@gitorious.org:~tombatossals/guifi/tombatossalss-drupal-guifi.git guifi

Módulo WebForm (http://drupal.org/project/webform):

$ wget -q -O - http://ftp.drupal.org/files/projects/webform-6.x-3.14.tar.gz | tar zxv

Si por cualquier motivo, os descargáis los archivos en local,lo colocais en la carpeta sites/all/modules y los descomprimís así. A mi me ocurrió que no encontraba el paquete de origen.

$ sudo tar -zxvf webform-6.x-3.14.tar.gz 

Módulo Views (http://drupal.org/project/views):

$ wget -q -O - http://ftp.drupal.org/files/projects/views-6.x-2.12.tar.gz | tar zxv

Si por cualquier motivo, os descargáis los archivos en local,lo colocais en la carpeta sites/all/modules y los descomprimís así. A mi me ocurrió que no encontraba el paquete de origen.

$ sudo tar -zxvf views-6.x-2.12.tar.gz

Instalación de la base de datos de desarrollo de Guifi.net

Ya tenemos una instalación limpia de Drupal. Ahora vamos a sobrescribir la base de datos con la información de tablas de la base de datos de Guifi.net, lo que nos proporcionará un entorno de desarrollo similar a la web en producción. Vamos a ello:


Obtener la BBDD de desarrollo: Ya la descargamos mas atrás, pero agrego de nuevo el paso aquí. La podéis obtener con

$ sudo wget http://www.guifi.net/guifi66_devel.sql.gz

Instalar la base de datos

Una vez tenéis la base de datos, hace falta instalarla:

$ sudo gunzip guifi66_devel.sql.gz
$ mysql -u root -p guifi_test < guifi66_devel.sql

Copia de seguridad

Quizás es una tontería y sobra este paso, pero me he encontrado que tras la instalación, algo falla y deja de funcionarte el sistema. No hay manera de volver atrás. Yo me hago una copia de seguridad de /var/www con el sistema recién instalado y al menos, puedo volver atrás. Te evitara horas de trabajo, desinstalar, reinstalar, buscar errores extraños...

Yo lo he hecho así

$ root@webserver:/var# tar cvzpf www_20121016 www/

El backup me ocupa 57M que no es mucho y me aseguro la marcha atrás.

Para descomprimir con

$root@webserver:/var#tar -zxvf www_20121016

Afinando la instalación

Una vez instalada la base de datos con toda la informacón de la web de Guifi.net, tendremos acceso a la información de cualquier nodo o zona de la web principal. Para logearte como usuario, debes utilizar el nombre de usuario correspondiente y la contraseña genérica "guifi".

El usuario administrador será "webmestre" y la contraseña "guifi".

Algunos consejos para refinar la instalación:

  • Comprueba que los directorios "files", "files/nanostation" y "tmp" del directorio de instalación de drupal tienen permisos de escritura para el usuario del servidor web (o ponlos a 777):
$ mkdir drupal-6.26/{files,files/nanostation,tmp}
$ chmod 777 drupal-6.26/{files,files/nanostation,tmp}
  • La carpeta "files/nanostation" contendrá los archivos "unsoloclic" de las antenas Ubiquiti que vayamos consultando o creando.
  • Comprueba los posibles errores de instalación de Drupal accediendo como usuario "webmestre" a la página de administración, y desde ahí a la página de "Report Status". Ej: http://localhost/guifi/ca/admin/reports/status
  • Accede a la sección de configuración de "Performance" y deshabilita todo el uso de caché, optimización y compresión. Nos interesa que los cambios que hagamos sobre los archivos se actualicen en tiempo real. La URL de acceso a esta configuración será del estilo: http://localhost/guifi/admin/settings/performance

Instalación del tema Guifi.net en Drupal

$ mkdir drupal-6.26/sites/all/themes
$ cd drupal-6.26/sites/all/themes
$ git clone git://gitorious.org/guifi-web/theme_guifinet2011.git theme_guifinet2011

El tema no se activará inmediatamente, ya que le faltarán los archivos de estilos que Drupal cree que están cacheados en el sistema. Para conseguir que el tema se active completamente, deberemos acceder a la "administración de temas", "configuración del tema de guifinet2011" y "grabar" sin tocar ninguna opcion. El tema por fin estará activado.

Instalación de los idiomas

La base de datos de Guifi.net que hemos importado tiene habilitados varios idiomas por defecto, pero las traducciones no están instaladas en el sistema. Para solucionarlo, seguimos estos pasos:

Por ejemplo: http://ftp.drupal.org/files/translations/6.x/drupal/drupal-6.26.ca.po

  • Ve a la administración de idiomas de tu instalación como webmestre, está localizado en /admin/settings/language, y fíjate que hay un enlace para importación manual de los strings de traducción: /admin/build/translate/import
  • Indícale el idioma del archivo que has descargado e impórtalo. A partir de aquí ya tenemos la interfaz traducida.

Empezando a trabajar

Ya tenemos un entorno preparado para comenzar a modificar los módulos de Drupal, subirlos a nuestro propio repositorio, y si lo consideramos conveniente, notificar nuestros commits a los desarrolladores para que los integren en la rama principal.

Para hacer commit de nuestros cambios:

$ cd drupal-6.26/site/all/modules/drupal-guifi
$ # Hacemos modificaciones a algunos archivos, las registramos en nuestro repositorio y procedemos a subirlas a gitorious
$ git commit -a
$ git push

Posteriormente, desde la web de Gitorious podremos utilizar un "Merge request" para notificar a los desarrolladores alguna de nuestras modificaciones y que valoren el incorporarlo al repositorio principal.

Actualizando nuestro repositorio con los cambios del repositorio padre

Si queremos mantener nuestro repositorio actualizado con los últimos cambios que se van produciendo en el repositorio padre, deberemos seguir la siguiente receta:

# Definimos como repositorio remoto llamado "upstream" el repositorio de "drupal-guifi"
$ git remote add upstream git://gitorious.org/guifi/drupal-guifi.git

# Obtenemos los últimos cambios de nuestro repositorio
$ git fetch origin -v

# Obtenemos los últimos cambios del repositorio padre
$ git fetch upstream -v

# Hacemos el merge de los cambios obtenidos
$ git merge upstream/master

Referencias

Este artículo contiene información extraída de este hilo de la lista de correo de webdev.

Enlaces externos

Herramientas personales