Preparant l'entorn de desenvolupament: Diferència entre les revisions

De Guifi.net - Wiki Català

(Instalació de la base de dades de desenvolupament de Guifi.net)
Línia 1: Línia 1:
= Introducció =
+
Aquest document documenta com preparar un entorn de desenvolupament per col·laborar en el desenvolupament de la web de guifi.net.  
Aquest document té com finalitat documentar com preparar un entorn de desenvolupament per col·laborar en el desenvolupament de la web de guifi.net.  
+
  
 
Ens centrarem al mòdul "'''drupal-guifi'''", que és el fonamental de tota la gestió a la [[web de guifi.net]], però l'entorn muntat pot fer-se servir per desenvolupar altres mòduls o temes, com per exemple "'''budgets'''" i "'''theme_guifinet2011'''".
 
Ens centrarem al mòdul "'''drupal-guifi'''", que és el fonamental de tota la gestió a la [[web de guifi.net]], però l'entorn muntat pot fer-se servir per desenvolupar altres mòduls o temes, com per exemple "'''budgets'''" i "'''theme_guifinet2011'''".
  
 
= Instalació i configuracó de la base =
 
= Instalació i configuracó de la base =
Per fer funcionar '''Drupal''' a la màquina de desenvolupament cal posar en marxa un servidor web, el mòdul '''PHP''' pel servidor web i un servidor de base de dades ('''MySQL''').
+
Per fer funcionar [[Drupal]] a la màquina de desenvolupament cal posar en marxa un [[servidor web]], el mòdul [[PHP]] pel servidor web i un servidor de base de dades, recomanat [[MySQL]].
  
 
En funció del nostre sistema operatiu i les nostres preferències, la instalació d'aquests serveis es realitzarà d'una manera o d'una altra. A continuació es detalla pels entorns '''Debian/Ubuntu''' amb '''Apache+PHP+Mysql''' i '''Archlinux''' amb '''Nginx+PHP+Mysql'''. Totes dues instalacions són simples.
 
En funció del nostre sistema operatiu i les nostres preferències, la instalació d'aquests serveis es realitzarà d'una manera o d'una altra. A continuació es detalla pels entorns '''Debian/Ubuntu''' amb '''Apache+PHP+Mysql''' i '''Archlinux''' amb '''Nginx+PHP+Mysql'''. Totes dues instalacions són simples.
Línia 32: Línia 31:
 
  ?>
 
  ?>
  
'''Configuració de fitxers'''
+
== Configuració de fitxers ==
 
Per tal de no tenir problemes en la nostra instal·lació de l'entorn de desenvolupament, es necessari realitzar algunes modificacions dins  d'uns fitxers concrets els quals esmentarem per tal de que tot funcioni correctament:
 
Per tal de no tenir problemes en la nostra instal·lació de l'entorn de desenvolupament, es necessari realitzar algunes modificacions dins  d'uns fitxers concrets els quals esmentarem per tal de que tot funcioni correctament:
  
Línia 38: Línia 37:
 
/etc/apache2/sites-enabled/
 
/etc/apache2/sites-enabled/
  
Hi tenim un únic fitxer el qual es diu '000-default'. Bé, mitjançant un editor de text de shell (vi/nano) editarem el fitxer:
+
Hi tenim un únic fitxer el qual es diu '000-default'. Mitjançant un editor de text de shell (vi/nano) editarem el fitxer:
  
 
$ vi 000-default
 
$ vi 000-default
Línia 48: Línia 47:
 
Fem l'edició i sortim desant Ctrl+X
 
Fem l'edició i sortim desant Ctrl+X
  
'''Preparació de les Clena URL'''
+
== Preparació de les Clean URL ==
  
 
La nostra web amb drupal necessita fer servir '''Clean URL''' i per tal que aquestes es puguin aplicar es necessari tenir activat el mòdul '''rewrite'''. Per tal d'activar aquest mòdul, utilitzarem les comandes següents:
 
La nostra web amb drupal necessita fer servir '''Clean URL''' i per tal que aquestes es puguin aplicar es necessari tenir activat el mòdul '''rewrite'''. Per tal d'activar aquest mòdul, utilitzarem les comandes següents:
  
$a2enmod rewrite
+
a2enmod rewrite
  
 
Ens informarà que el mòdul està actiu i que s'haurà de reiniciar el servei, cosa que farem amb la comanda:
 
Ens informarà que el mòdul està actiu i que s'haurà de reiniciar el servei, cosa que farem amb la comanda:
  
$ /etc/init.d/apache2 restart o bé
+
/etc/init.d/apache2 restart
$ service apache2 restart
+
o bé
 +
service apache2 restart
  
 
= Descarregant el codi font =
 
= Descarregant el codi font =
Línia 70: Línia 70:
 
* Crear unes claus SSH (ssh-keygen) sense contrasenya a l'ordinador de treball i s'afegiran al perfil d'usuari de gitorious. Per exemple:
 
* Crear unes claus SSH (ssh-keygen) sense contrasenya a l'ordinador de treball i s'afegiran al perfil d'usuari de gitorious. Per exemple:
  
  $ ssh-keygen  
+
  ssh-keygen  
 
+
 
  Generating public/private rsa key pair.
 
  Generating public/private rsa key pair.
 
  Enter file in which to save the key (/home/dave/.ssh/id_rsa):  
 
  Enter file in which to save the key (/home/dave/.ssh/id_rsa):  
Línia 97: Línia 97:
 
* La darrera versió de Drupal 6.x
 
* La darrera versió de Drupal 6.x
  
$ wget http://ftp.drupal.org/files/projects/drupal-6.29.tar.gz
+
wget http://ftp.drupal.org/files/projects/drupal-6.29.tar.gz
  
 
i habilitar l'accès via web:
 
i habilitar l'accès via web:
  
$ ln -s /usr/share/drupal6/ /var/www/guifi
+
ln -s /usr/share/drupal6/ /var/www/guifi
  
 
* Els Mòduls de Drupal fonamentals:
 
* Els Mòduls de Drupal fonamentals:
Línia 107: Línia 107:
  
 
'''Mòdul WebForm:'''
 
'''Mòdul WebForm:'''
  $ wget http://ftp.drupal.org/files/projects/webform-6.x-3.19.tar.gz
+
  wget http://ftp.drupal.org/files/projects/webform-6.x-3.19.tar.gz
  
 
'''Mòdul Views:'''
 
'''Mòdul Views:'''
  $ wget http://ftp.drupal.org/files/projects/views-6.x-2.16.tar.gz  
+
  wget http://ftp.drupal.org/files/projects/views-6.x-2.16.tar.gz  
  
 
'''Mòdul Views_slideshow:'''  
 
'''Mòdul Views_slideshow:'''  
  $ wget http://ftp.drupal.org/files/projects/views_slideshow-6.x-2.4.tar.gz
+
  wget http://ftp.drupal.org/files/projects/views_slideshow-6.x-2.4.tar.gz
  
 
'''Mòdul i18n <Multi-idioma>:'''
 
'''Mòdul i18n <Multi-idioma>:'''
  $ wget http://ftp.drupal.org/files/projects/i18n-6.x-1.10.tar.gz  
+
  wget http://ftp.drupal.org/files/projects/i18n-6.x-1.10.tar.gz  
  
 
* Els Mòduls de Drupal opcionals:
 
* Els Mòduls de Drupal opcionals:
  
 
'''Mòdul schema:'''
 
'''Mòdul schema:'''
  $ wget http://ftp.drupal.org/files/projects/schema-6.x-1.7.tar.gz
+
  wget http://ftp.drupal.org/files/projects/schema-6.x-1.7.tar.gz
  
 
'''Mòdul devel:'''
 
'''Mòdul devel:'''
  $ wget http://ftp.drupal.org/files/projects/devel-6.x-1.27.tar.gz
+
  wget http://ftp.drupal.org/files/projects/devel-6.x-1.27.tar.gz
  
 
'''Mòdul potx:'''
 
'''Mòdul potx:'''
  $ wget http://ftp.drupal.org/files/projects/potx-6.x-3.3.tar.gz
+
  wget http://ftp.drupal.org/files/projects/potx-6.x-3.3.tar.gz
  
 
'''Mòdul l10n_client:'''
 
'''Mòdul l10n_client:'''
  $ wget http://ftp.drupal.org/files/projects/l10n_client-6.x-2.2.tar.gz
+
  wget http://ftp.drupal.org/files/projects/l10n_client-6.x-2.2.tar.gz
  
 
'''Mòdul language:'''
 
'''Mòdul language:'''
  $ wget  
+
  wget  
  
 
'''Mòdul icons:'''
 
'''Mòdul icons:'''
  $ wget  
+
  wget  
  
 
'''Mòdul language_sections:'''
 
'''Mòdul language_sections:'''
  $ wget http://ftp.drupal.org/files/projects/language_sections-6.x-2.5.tar.gz
+
  wget http://ftp.drupal.org/files/projects/language_sections-6.x-2.5.tar.gz
  
 
'''Mòdul diff:'''
 
'''Mòdul diff:'''
  $ wget http://ftp.drupal.org/files/projects/diff-6.x-2.3.tar.gz
+
  wget http://ftp.drupal.org/files/projects/diff-6.x-2.3.tar.gz
  
 
'''Mòdul captcha:'''
 
'''Mòdul captcha:'''
  $ wget http://ftp.drupal.org/files/projects/captcha-6.x-2.5.tar.gz
+
  wget http://ftp.drupal.org/files/projects/captcha-6.x-2.5.tar.gz
  
 
'''Mòdul captcha_pack:'''
 
'''Mòdul captcha_pack:'''
  $ wget http://ftp.drupal.org/files/projects/captcha_pack-6.x-1.0-beta3.tar.gz
+
  wget http://ftp.drupal.org/files/projects/captcha_pack-6.x-1.0-beta3.tar.gz
  
 
'''Mòdul event:'''
 
'''Mòdul event:'''
  $ wget http://ftp.drupal.org/files/projects/event-6.x-2.x-dev.tar.gz
+
  wget http://ftp.drupal.org/files/projects/event-6.x-2.x-dev.tar.gz
  
 
'''Mòdul cck:'''
 
'''Mòdul cck:'''
  $ wget http://ftp.drupal.org/files/projects/cck-6.x-2.9.tar.gz
+
  wget http://ftp.drupal.org/files/projects/cck-6.x-2.9.tar.gz
  
 
'''Mòdul fckeditor:'''
 
'''Mòdul fckeditor:'''
  $ wget http://ftp.drupal.org/files/projects/fckeditor-6.x-2.3.tar.gz
+
  wget http://ftp.drupal.org/files/projects/fckeditor-6.x-2.3.tar.gz
  
 
'''Mòdul image:'''
 
'''Mòdul image:'''
  $ wget http://ftp.drupal.org/files/projects/image-6.x-1.2.tar.gz
+
  wget http://ftp.drupal.org/files/projects/image-6.x-1.2.tar.gz
  
 
'''Mòdul image_filter:'''
 
'''Mòdul image_filter:'''
  $ wget http://ftp.drupal.org/files/projects/image_filter-6.x-1.0.tar.gz
+
  wget http://ftp.drupal.org/files/projects/image_filter-6.x-1.0.tar.gz
  
 
'''Mòdul fivestar'''
 
'''Mòdul fivestar'''
  $ wget http://ftp.drupal.org/files/projects/fivestar-6.x-1.20.tar.gz
+
  wget http://ftp.drupal.org/files/projects/fivestar-6.x-1.20.tar.gz
  
 
'''Mòdul votingapi'''
 
'''Mòdul votingapi'''
  $ wget http://ftp.drupal.org/files/projects/votingapi-6.x-2.3.tar.gz
+
  wget http://ftp.drupal.org/files/projects/votingapi-6.x-2.3.tar.gz
  
 
* Mòduls desenvolupats per la comunitat Guifi.net:
 
* Mòduls desenvolupats per la comunitat Guifi.net:
Línia 181: Línia 181:
 
* La base de dades actual de desenvolupament de la web de guifi.net:
 
* La base de dades actual de desenvolupament de la web de guifi.net:
  
  $ wget http://www.guifi.net/guifi66_devel.sql.gz
+
  wget http://www.guifi.net/guifi66_devel.sql.gz
  
 
== Instalació de Drupal ==
 
== Instalació de Drupal ==
Línia 191: Línia 191:
 
* Descomprimim el paquet de Drupal que ens hem descarregat i el posem accesible al DOCUMENT_ROOT d'Apache:
 
* Descomprimim el paquet de Drupal que ens hem descarregat i el posem accesible al DOCUMENT_ROOT d'Apache:
  
  $ cd /var/www
+
  cd /var/www
  $ tar zxvf drupal-6.29.tar.gz
+
  tar zxvf drupal-6.29.tar.gz
  $ ln -s drupal-6.29 guifi
+
  ln -s drupal-6.29 guifi
  
 
* Iniciem el procés d'instalació via web de Drupal accedint a http://<ip_del_teu_servidor>/guifi exemples:
 
* Iniciem el procés d'instalació via web de Drupal accedint a http://<ip_del_teu_servidor>/guifi exemples:
Línia 207: Línia 207:
 
exemple:
 
exemple:
  
$ mysql -u root -p <salt de linia>
+
mysql -u root -p <salt de linia>
Enter password: <escritura_de_la_password>
+
Enter password: <escritura_de_la_password>
 
+
Welcome to the MySQL monitor. Commands end with ; or \g.
+
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 525
+
Your MySQL connection id is 525
Server version: 5.5.31-0+wheezy1 (Debian)
+
Server version: 5.5.31-0+wheezy1 (Debian)
 
+
Copyright (c) 2000,2013, Oracle and/or its affiliates. All rights reserved.
+
Copyright (c) 2000,2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
+
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
 
+
 
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
   
 
   
Línia 231: Línia 231:
 
Dins de l'adreça /var/www/drupal-6.29/sites/all/modules, on tindrem descarregats els nostres mòduls, els descomprimirem mitjançant la ordre:
 
Dins de l'adreça /var/www/drupal-6.29/sites/all/modules, on tindrem descarregats els nostres mòduls, els descomprimirem mitjançant la ordre:
  
  $ tar zxvf <nom_del_fitxer_a_descomprimir>
+
  tar zxvf <nom_del_fitxer_a_descomprimir>
  
 
per exemple:
 
per exemple:
  
  $ tar zxvf i18n-6.x-1.10.tar.gz
+
  tar zxvf i18n-6.x-1.10.tar.gz
  
 
'''ATENCIÓ'''. Fixeu-vos que el mòdul "drupal-guifi" que estem clonant no és el repositori principal que hi ha a Gitorious, sinó el que hem creat fent un fork del projecte principal. Així els canvis que fem els podrem pujar a Gitorious al repositori nostre com a desenvolupadors, per a posteriorment, si ho considerem convenient, notificar el canvi als desenvolupadors principals per a que els puguin integrar a la branca principal de desenvolupament, això es fa des del mateix Gitorious amb un ''merge request''.
 
'''ATENCIÓ'''. Fixeu-vos que el mòdul "drupal-guifi" que estem clonant no és el repositori principal que hi ha a Gitorious, sinó el que hem creat fent un fork del projecte principal. Així els canvis que fem els podrem pujar a Gitorious al repositori nostre com a desenvolupadors, per a posteriorment, si ho considerem convenient, notificar el canvi als desenvolupadors principals per a que els puguin integrar a la branca principal de desenvolupament, això es fa des del mateix Gitorious amb un ''merge request''.
  
  $ mkdir drupal-6.29/sites/all/modules
+
  mkdir drupal-6.29/sites/all/modules
  $ cd drupal-6.29/sites/all/modules
+
  cd drupal-6.29/sites/all/modules
  $ git clone git://gitorious.org/guifi/drupal-budgets.git budgets
+
  git clone git://gitorious.org/guifi/drupal-budgets.git budgets
  $ # Clonat del MEU FORK del mòdul "drupal-guifi"  
+
  # Clonat del MEU FORK del mòdul "drupal-guifi"  
  $ git clone git@gitorious.org:~tombatossals/guifi/tombatossalss-drupal-guifi.git guifi (canvia "~tombatossals/guifi/tombatossalss-drupal-guifi.git" pel teu repositori clonat a Gitorious)
+
  git clone git@gitorious.org:~tombatossals/guifi/tombatossalss-drupal-guifi.git guifi (canvia "~tombatossals/guifi/tombatossalss-drupal-guifi.git" pel teu repositori clonat a Gitorious)
  
 
== Instalació de la base de dades de desenvolupament de Guifi.net ==
 
== Instalació de la base de dades de desenvolupament de Guifi.net ==
Línia 249: Línia 249:
 
Tenint una instal·lació neta de Drupal, anem a sobreescriure la base de dades amb la informació de les taules de la base de dades de Guifi.net, el que ens proporcionarà un entorn de desenvolupament similar a la web en producció. Des de la carpeta on anteriorment hem baixat la base de dades cal fer:
 
Tenint una instal·lació neta de Drupal, anem a sobreescriure la base de dades amb la informació de les taules de la base de dades de Guifi.net, el que ens proporcionarà un entorn de desenvolupament similar a la web en producció. Des de la carpeta on anteriorment hem baixat la base de dades cal fer:
  
  $ gunzip guifi66_devel.sql.gz
+
  gunzip guifi66_devel.sql.gz
  
  $ mysql -u root -p guifi_test < guifi66_devel.sql; << recordem que les comandes dins de MySQL s'acaben amb un ';'
+
  mysql -u root -p guifi_test < guifi66_devel.sql; << recordem que les comandes dins de MySQL s'acaben amb un ';'
  
'''== Afinant la instalació =='''
+
== Afinant la instalació ==
  
 
Un cop realitzada la instal·lació, s'ha d'editar el fitxer .htaccess, que es troba dins de la carpeta arrel de drupal :
 
Un cop realitzada la instal·lació, s'ha d'editar el fitxer .htaccess, que es troba dins de la carpeta arrel de drupal :
  
  $ cd /var/www/drupal-6.29
+
  cd /var/www/drupal-6.29
  $ ls -la << per mostrar llistats tots els fitxers inclosos els ocults
+
  ls -la << per mostrar llistats tots els fitxers inclosos els ocults
  
 
Ens mostrarà un arxiu ocult anomenat : .htaccess
 
Ens mostrarà un arxiu ocult anomenat : .htaccess
 
L'editarem mitjançant un editor de text:
 
L'editarem mitjançant un editor de text:
  
  $ vi .htaccess
+
  vi .htaccess
  
 
En una linia buida del fitxer, apretarem la 'i' per escriure-hi i afegirem la següent linia: RewriteBase /drupal-6.29
 
En una linia buida del fitxer, apretarem la 'i' per escriure-hi i afegirem la següent linia: RewriteBase /drupal-6.29
Línia 274: Línia 274:
  
 
* Creeu i comproveu que els directoris "files", "files/nanostation" i "tmp" del directori de instalació de drupal tenen permisos de escriptura per l'usuari del servidor web (o poseu-los a 777):
 
* Creeu i comproveu que els directoris "files", "files/nanostation" i "tmp" del directori de instalació de drupal tenen permisos de escriptura per l'usuari del servidor web (o poseu-los a 777):
  $ mkdir drupal-6.29/{files,files/nanostation,tmp}
+
  mkdir drupal-6.29/{files,files/nanostation,tmp}
  $ chmod 777 drupal-6.29/{files,files/nanostation,tmp}
+
  chmod 777 drupal-6.29/{files,files/nanostation,tmp}
  
 
* La carpeta "files/nanostation" contendrà els arxius "unsolclic" de les antenes Ubiquiti que anem consultant o creant.
 
* La carpeta "files/nanostation" contendrà els arxius "unsolclic" de les antenes Ubiquiti que anem consultant o creant.
Línia 319: Línia 319:
 
== Instalació del tema Guifi.net al Drupal ==
 
== Instalació del tema Guifi.net al Drupal ==
  
  $ mkdir drupal-6.29/sites/all/themes
+
  mkdir drupal-6.29/sites/all/themes
  $ cd drupal-6.29/sites/all/themes
+
  cd drupal-6.29/sites/all/themes
  $ git clone git://gitorious.org/guifi-web/theme_guifinet2011.git  
+
  git clone git://gitorious.org/guifi-web/theme_guifinet2011.git  
  
 
El tema no s'activarà inmediatament, ja que li mancaran els arxius d'estils que Drupal creu que esten cachejats al sistema. Per a aconseguir que el tema s'activi completament, haurem d'accedir a l'"administració de temes", "configuració del tema de guifinet2011" i "desar" sense tocar cap opció. El tema per fi estarà activat.
 
El tema no s'activarà inmediatament, ja que li mancaran els arxius d'estils que Drupal creu que esten cachejats al sistema. Per a aconseguir que el tema s'activi completament, haurem d'accedir a l'"administració de temes", "configuració del tema de guifinet2011" i "desar" sense tocar cap opció. El tema per fi estarà activat.
Línia 331: Línia 331:
 
les següents imatges que es poden descarregar des de la línia de comandes:
 
les següents imatges que es poden descarregar des de la línia de comandes:
  
  $ wget http://guifi.net/files/images/el_molar_v2.jpg
+
  wget http://guifi.net/files/images/el_molar_v2.jpg
  $ wget http://guifi.net/files/images/platadaro_910x454.jpg
+
  wget http://guifi.net/files/images/platadaro_910x454.jpg
  $ wget http://guifi.net/files/images/antenes2.jpg
+
  wget http://guifi.net/files/images/antenes2.jpg
  $ wget http://guifi.net/files/images/dsc07219_910x454_v2.jpg
+
  wget http://guifi.net/files/images/dsc07219_910x454_v2.jpg
  $ wget http://guifi.net/files/images/puigcubell_portada.jpg
+
  wget http://guifi.net/files/images/puigcubell_portada.jpg
  $ wget http://guifi.net/files/images/taller_fibra1.jpg
+
  wget http://guifi.net/files/images/taller_fibra1.jpg
  $ wget http://guifi.net/files/images/DSC08889_910x454_v2.jpg
+
  wget http://guifi.net/files/images/DSC08889_910x454_v2.jpg
  $ wget http://guifi.net/files/images/20246_910x454_v2.jpg
+
  wget http://guifi.net/files/images/20246_910x454_v2.jpg
  $ wget http://guifi.net/files/images/illes_910x454.jpg
+
  wget http://guifi.net/files/images/illes_910x454.jpg
  $ wget http://guifi.net/files/images/cel-bcn-portada.jpg
+
  wget http://guifi.net/files/images/cel-bcn-portada.jpg
  
 
== Instal·lació dels idiomes ==
 
== Instal·lació dels idiomes ==
Línia 360: Línia 360:
 
Per a fer commit dels nostres canvis:
 
Per a fer commit dels nostres canvis:
  
  $ cd drupal-6.29/site/all/modules/guifi
+
  cd drupal-6.29/site/all/modules/guifi
  $ # Fem modificacions a alguns arxius, les enregistrem al nostre repositori de treball i procedirem a pujar-les a Gitorious
+
  # Fem modificacions a alguns arxius, les enregistrem al nostre repositori de treball i procedirem a pujar-les a Gitorious
  $ git commit -a
+
  git commit -a
  $ git push
+
  git push
  
 
Posteriorment, des de la web de Gitorious podrem fer servir un "Merge request" per notificar als desenvolupadors alguna de les nostres modificacions i que valorin la seva incorporació al repositori principal.
 
Posteriorment, des de la web de Gitorious podrem fer servir un "Merge request" per notificar als desenvolupadors alguna de les nostres modificacions i que valorin la seva incorporació al repositori principal.
Línia 372: Línia 372:
  
 
  # Definim com repositori remot anomenat "upstream" el repositori de "drupal-guifi"
 
  # Definim com repositori remot anomenat "upstream" el repositori de "drupal-guifi"
  $ git remote add upstream git://gitorious.org/guifi/drupal-guifi.git
+
  git remote add upstream git://gitorious.org/guifi/drupal-guifi.git
 
   
 
   
 
  # Obtenim els darrers canvis del nostre repositori
 
  # Obtenim els darrers canvis del nostre repositori
  $ git fetch origin -v
+
  git fetch origin -v
 
   
 
   
 
  # Obtenim els darrers canvis del repositori pare
 
  # Obtenim els darrers canvis del repositori pare
  $ git fetch upstream -v
+
  git fetch upstream -v
 
   
 
   
 
  # Fem el merge dels canvis obtinguts
 
  # Fem el merge dels canvis obtinguts
  $ git merge upstream/master
+
  git merge upstream/master
  
 
== Referències ==
 
== Referències ==
Línia 390: Línia 390:
  
 
* http://acacha.org/mediawiki/index.php/Entorn_de_desenvolupament_guifi
 
* http://acacha.org/mediawiki/index.php/Entorn_de_desenvolupament_guifi
 +
 +
[[Categoria:desenvolupament]]

Revisió de 22:59, 21 gen 2014

Aquest document documenta com preparar un entorn de desenvolupament per col·laborar en el desenvolupament de la web de guifi.net.

Ens centrarem al mòdul "drupal-guifi", que és el fonamental de tota la gestió a la web de guifi.net, però l'entorn muntat pot fer-se servir per desenvolupar altres mòduls o temes, com per exemple "budgets" i "theme_guifinet2011".

Instalació i configuracó de la base

Per fer funcionar Drupal a la màquina de desenvolupament cal posar en marxa un servidor web, el mòdul PHP pel servidor web i un servidor de base de dades, recomanat MySQL.

En funció del nostre sistema operatiu i les nostres preferències, la instalació d'aquests serveis es realitzarà d'una manera o d'una altra. A continuació es detalla pels entorns Debian/Ubuntu amb Apache+PHP+Mysql i Archlinux amb Nginx+PHP+Mysql. Totes dues instalacions són 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

Documentació per a Archlinux: Apache, PHP and MySQL, Nginx

La configuració del servidor web (Apache/lighttpd/nginx) per a fer que funcioni el mòdul de PHP a l'arrel del nostre directori web depèn del nostre sistema.

Configuració de l'arxiu php.ini

Cal tenir activats els següents mòduls a l'arxiu php.ini:

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

Cal testejar si el sistema interpreta arxius PHP. Per això, es pot crear un arxiu al DOCUMENT_ROOT (generalment /var/www) del servidor web. Si no funciona reviseu els passos anteriors i consulteu la documentació de la vostra distribució.

<?php
phpinfo();
?>

Configuració de fitxers

Per tal de no tenir problemes en la nostra instal·lació de l'entorn de desenvolupament, es necessari realitzar algunes modificacions dins d'uns fitxers concrets els quals esmentarem per tal de que tot funcioni correctament:

En l'adreça següent: /etc/apache2/sites-enabled/

Hi tenim un únic fitxer el qual es diu '000-default'. Mitjançant un editor de text de shell (vi/nano) editarem el fitxer:

$ vi 000-default

Dins del fitxer, hem de buscar el següent text: 'Allow Override None' en tot el text i substituir-lo per 'Allow Override All'. Per realitzar la modificació, mitjançant les fletxes de direcció ens situarem sobre la línia en qüestió i apretarem la tecla 'i' la qual ens permetrà escriure. Si es presenten problemes, sembre es pot sortir del fitxer sense desar mitjançant la tecla 'ESC' seguit de la comanda ':q!' <quit without saving> << sortir sense guardar.

$ nano 000-default

Fem l'edició i sortim desant Ctrl+X

Preparació de les Clean URL

La nostra web amb drupal necessita fer servir Clean URL i per tal que aquestes es puguin aplicar es necessari tenir activat el mòdul rewrite. Per tal d'activar aquest mòdul, utilitzarem les comandes següents:

a2enmod rewrite

Ens informarà que el mòdul està actiu i que s'haurà de reiniciar el servei, cosa que farem amb la comanda:

/etc/init.d/apache2 restart

o bé

service apache2 restart

Descarregant el codi font

El codi dels mòduls "drupal-guifi", "drupal-bugdets" i "theme_guifinet2011" són programari lliure i estan allotjats als repositoris de Gitorious. Els repositoris són útils pel desenvolupament de programari però nosaltres ens limitarem a clonar-los.

La idea és que hi ha el repositori de cada un dels mòduls i el tema, cada desenvolupador té una còpia del repositori també a Gitorious, d'aquesta manera instal·larà la seva còpia a la seva màquina de desenvolupament, realitzarà el desenvolupament a la seva màquina i un cop el desenvolupament és correcte, enviarà els canvis a la seva còpia de Gitorious i demanarà incloure'ls al repositori principal.

Requisits pel clonatge del repositori drupal-guifi a la còpia del desenvolupador a Gitorious

Haurem de fer un fork del projecte "drupal-guifi" de cara a realitzar alguna modificació sobre el seu codi font.

  • Crear-se un compte a Gitorious.
  • Crear unes claus SSH (ssh-keygen) sense contrasenya a l'ordinador de treball i s'afegiran al perfil d'usuari de gitorious. Per exemple:
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.
  • Accedir a la pàgina del projecte "drupal-guifi".
  • Clonar el projecte. Amb això ja tindrem un fork del projecte sobre el que podem realitzar els nostres canvis.

Pàgines web a Gitorious dels projectes amb les que podem participar en el desenvolupament:

Amb això tindrem una còpia de l'original a l'espai del desenvolupador a Gitorious.

Descàrrega, instalació i configuració de l'entorn Drupal

Al principi hem instal·lats els serveis bàsics a la nostra màquina de desenvolupament i hem clonat els repositoris de codi font amb els que volem treballar, hem de posar en funcionant a la màquina de desenvolupament el Drupal 6.x (amb alguns mòduls adicionals), ja que així podrem veure i testejar els canvis que anem fent al nostre repositori de "drupal-guifi".

Descàrregues des de la línea de comandes

  • La darrera versió de Drupal 6.x
wget http://ftp.drupal.org/files/projects/drupal-6.29.tar.gz

i habilitar l'accès via web:

ln -s /usr/share/drupal6/ /var/www/guifi
  • Els Mòduls de Drupal fonamentals:

Que els descarregarem a /var/www/drupal-6.29/sites/all/modules

Mòdul WebForm:

wget http://ftp.drupal.org/files/projects/webform-6.x-3.19.tar.gz

Mòdul Views:

wget http://ftp.drupal.org/files/projects/views-6.x-2.16.tar.gz 

Mòdul Views_slideshow:

wget http://ftp.drupal.org/files/projects/views_slideshow-6.x-2.4.tar.gz

Mòdul i18n <Multi-idioma>:

wget http://ftp.drupal.org/files/projects/i18n-6.x-1.10.tar.gz 
  • Els Mòduls de Drupal opcionals:

Mòdul schema:

wget http://ftp.drupal.org/files/projects/schema-6.x-1.7.tar.gz

Mòdul devel:

wget http://ftp.drupal.org/files/projects/devel-6.x-1.27.tar.gz

Mòdul potx:

wget http://ftp.drupal.org/files/projects/potx-6.x-3.3.tar.gz

Mòdul l10n_client:

wget http://ftp.drupal.org/files/projects/l10n_client-6.x-2.2.tar.gz

Mòdul language:

wget 

Mòdul icons:

wget 

Mòdul language_sections:

wget http://ftp.drupal.org/files/projects/language_sections-6.x-2.5.tar.gz

Mòdul diff:

wget http://ftp.drupal.org/files/projects/diff-6.x-2.3.tar.gz

Mòdul captcha:

wget http://ftp.drupal.org/files/projects/captcha-6.x-2.5.tar.gz

Mòdul captcha_pack:

wget http://ftp.drupal.org/files/projects/captcha_pack-6.x-1.0-beta3.tar.gz

Mòdul event:

wget http://ftp.drupal.org/files/projects/event-6.x-2.x-dev.tar.gz

Mòdul cck:

wget http://ftp.drupal.org/files/projects/cck-6.x-2.9.tar.gz

Mòdul fckeditor:

wget http://ftp.drupal.org/files/projects/fckeditor-6.x-2.3.tar.gz

Mòdul image:

wget http://ftp.drupal.org/files/projects/image-6.x-1.2.tar.gz

Mòdul image_filter:

wget http://ftp.drupal.org/files/projects/image_filter-6.x-1.0.tar.gz

Mòdul fivestar

wget http://ftp.drupal.org/files/projects/fivestar-6.x-1.20.tar.gz

Mòdul votingapi

wget http://ftp.drupal.org/files/projects/votingapi-6.x-2.3.tar.gz
  • Mòduls desenvolupats per la comunitat Guifi.net:

- Mòdul budgets

- Mòdul guifi

  • El tema oficial "theme_guifinet2011":
  • La base de dades actual de desenvolupament de la web de guifi.net:
wget http://www.guifi.net/guifi66_devel.sql.gz

Instalació de Drupal

Hem de posar en marxa un entorn Drupal bàsic i posteriorment sobreescriurem la base de dades amb la que hem descarregat prèviament de Guifi.net

Aquests són els passos bàsics per a instal·lar i configurar un site Drupal:

  • Descomprimim el paquet de Drupal que ens hem descarregat i el posem accesible al DOCUMENT_ROOT d'Apache:
cd /var/www
tar zxvf drupal-6.29.tar.gz
ln -s drupal-6.29 guifi
  • Iniciem el procés d'instalació via web de Drupal accedint a http://<ip_del_teu_servidor>/guifi exemples:
http://10.138.71.10/guifi
http://localhost/guifi
  • En arribar a l'apartat de configuració de la base de dades, necessitarem tenir creada una base de dades local de MySQL per a desenvolupament:
[dave@inuik http]$ mysql -u <nomusuari> -p <contrassenya> << és possible que amb root no faci falta una password

exemple:

mysql -u root -p <salt de linia>
Enter password: <escritura_de_la_password>

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 525
Server version: 5.5.31-0+wheezy1 (Debian)

Copyright (c) 2000,2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

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)

Ja podem introduir la informació de connexió a la base de dades per a que Drupal creï les taules necessàries.

Instal·lació dels mòduls de Drupal necessaris per a engegar l'entorn

Dins de l'adreça /var/www/drupal-6.29/sites/all/modules, on tindrem descarregats els nostres mòduls, els descomprimirem mitjançant la ordre:

tar zxvf <nom_del_fitxer_a_descomprimir>

per exemple:

tar zxvf i18n-6.x-1.10.tar.gz

ATENCIÓ. Fixeu-vos que el mòdul "drupal-guifi" que estem clonant no és el repositori principal que hi ha a Gitorious, sinó el que hem creat fent un fork del projecte principal. Així els canvis que fem els podrem pujar a Gitorious al repositori nostre com a desenvolupadors, per a posteriorment, si ho considerem convenient, notificar el canvi als desenvolupadors principals per a que els puguin integrar a la branca principal de desenvolupament, això es fa des del mateix Gitorious amb un merge request.

mkdir drupal-6.29/sites/all/modules
cd drupal-6.29/sites/all/modules
git clone git://gitorious.org/guifi/drupal-budgets.git budgets
# Clonat del MEU FORK del mòdul "drupal-guifi" 
git clone git@gitorious.org:~tombatossals/guifi/tombatossalss-drupal-guifi.git guifi (canvia "~tombatossals/guifi/tombatossalss-drupal-guifi.git" pel teu repositori clonat a Gitorious)

Instalació de la base de dades de desenvolupament de Guifi.net

Tenint una instal·lació neta de Drupal, anem a sobreescriure la base de dades amb la informació de les taules de la base de dades de Guifi.net, el que ens proporcionarà un entorn de desenvolupament similar a la web en producció. Des de la carpeta on anteriorment hem baixat la base de dades cal fer:

gunzip guifi66_devel.sql.gz
mysql -u root -p guifi_test < guifi66_devel.sql; << recordem que les comandes dins de MySQL s'acaben amb un ';'

Afinant la instalació

Un cop realitzada la instal·lació, s'ha d'editar el fitxer .htaccess, que es troba dins de la carpeta arrel de drupal :

cd /var/www/drupal-6.29
ls -la << per mostrar llistats tots els fitxers inclosos els ocults

Ens mostrarà un arxiu ocult anomenat : .htaccess L'editarem mitjançant un editor de text:

vi .htaccess

En una linia buida del fitxer, apretarem la 'i' per escriure-hi i afegirem la següent linia: RewriteBase /drupal-6.29

Un cop instalada la base de dades amb tota la informació de la web de Guifi.net, tindrem accés a la informació de qualsevol node o zona de la web principal. Per a loguejar-te com usuari, has de fer servir el nom d'usuari corresponent i la contrasenya genèrica "guifi".

L'usuari administrador serà "webmestre" i la contrasenya "guifi".

Alguns consells per a refinar la instalació:

  • Creeu i comproveu que els directoris "files", "files/nanostation" i "tmp" del directori de instalació de drupal tenen permisos de escriptura per l'usuari del servidor web (o poseu-los a 777):
mkdir drupal-6.29/{files,files/nanostation,tmp}
chmod 777 drupal-6.29/{files,files/nanostation,tmp}
  • La carpeta "files/nanostation" contendrà els arxius "unsolclic" de les antenes Ubiquiti que anem consultant o creant.
  • Protegiu la carpeta "files" i "tmp" amb el seu respectiu fixter .htaccess

A la carpeta "files" el ftixer .htaccess ha de incloure aquest contingut:

# Turn off all options we don't need.
Options None
Options +FollowSymLinks
# Set the catch-all handler to prevent scripts from being executed.
SetHandler Drupal_Security_Do_Not_Remove_See_SA_2006_006
<Files *>
  # Override the handler again if we're run later in the evaluation list.
  SetHandler Drupal_Security_Do_Not_Remove_See_SA_2013_003
</Files>
# If we know how to do it safely, disable the PHP engine entirely.
<IfModule mod_php5.c>
  php_flag engine off
</IfModule>
# PHP 4, Apache 1.
<IfModule mod_php4.c>
  php_flag engine off
</IfModule>
# PHP 4, Apache 2.
<IfModule sapi_apache2.c>
  php_flag engine off
</IfModule>

I a la carpeta "tmp", el fitxer .htaccess ha de ser exactament el mateix que el de "files" pero hi hem d'afegir al final de tot això:

Deny from all
  • Editeu el fitxer robots.txt, elimineu-ne tot el contingut i afegiu únicament aquestes linies, doncs no ens interessa que els robots indexin el nostre entorn local.
User-agent: *
Disallow: /
  • Accediu a la secció de configuració de "Performance" y deshabiliteu tot l'usatge de caché, optimització y compressió. Ens interessa que els canvis que fem sobre els arxius s'actualitzin en temps real. La URL d'accés a aquesta configuració serà de l'estil de: http://localhost/guifi/admin/settings/performance

Instalació del tema Guifi.net al Drupal

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

El tema no s'activarà inmediatament, ja que li mancaran els arxius d'estils que Drupal creu que esten cachejats al sistema. Per a aconseguir que el tema s'activi completament, haurem d'accedir a l'"administració de temes", "configuració del tema de guifinet2011" i "desar" sense tocar cap opció. El tema per fi estarà activat.

Per visualitzar les imatges de la portada cal haver instal·lat els mòduls opcionals d'imatges i descarregar a:

$ cd /var/www/drupal-6.29/files/images

les següents imatges que es poden descarregar des de la línia de comandes:

wget http://guifi.net/files/images/el_molar_v2.jpg
wget http://guifi.net/files/images/platadaro_910x454.jpg
wget http://guifi.net/files/images/antenes2.jpg
wget http://guifi.net/files/images/dsc07219_910x454_v2.jpg
wget http://guifi.net/files/images/puigcubell_portada.jpg
wget http://guifi.net/files/images/taller_fibra1.jpg
wget http://guifi.net/files/images/DSC08889_910x454_v2.jpg
wget http://guifi.net/files/images/20246_910x454_v2.jpg
wget http://guifi.net/files/images/illes_910x454.jpg
wget http://guifi.net/files/images/cel-bcn-portada.jpg

Instal·lació dels idiomes

La base de dades de Guifi.net que hem importat té habilitats varis idiomes per defecte, però les traduccions no estan instalades al sistema. Per a solucionar-ho, seguim aquests passos:

Per exemple: http://ftp.drupal.org/files/translations/6.x/drupal/drupal-6.29.ca.po

  • Aneu a la administració de idiomes de la vostra instalació com webmestre, està localitzada a /admin/settings/language, i fixeu-vos que hi ha un enllaç per a importació manual dels strings de traducció: /admin/build/translate/import
  • Indiqueu-li l'idioma de l'arxiu que heu descarregat e importeu-lo. A partir d'aquí ja tindrem l'interfície traduïda.

Començant a treballar

Ja tenim un entorn preparat per començar a modificar els mòduls de Drupal, pujar-los al nostre propi repositori i, si ho considerem convenient, notificar els nostres commits als desenvolupadors per a que els integrin a la branca principal.

Per a fer commit dels nostres canvis:

cd drupal-6.29/site/all/modules/guifi
# Fem modificacions a alguns arxius, les enregistrem al nostre repositori de treball i procedirem a pujar-les a Gitorious
git commit -a
git push

Posteriorment, des de la web de Gitorious podrem fer servir un "Merge request" per notificar als desenvolupadors alguna de les nostres modificacions i que valorin la seva incorporació al repositori principal.

Actualitzant el nostre repositori amb els canvis del repositori pare

Si volem mantenir el nostre repositori actualitzat amb els darrers canvis que es van produint al repositori pare, haurem de seguir la següent recepta:

# Definim com repositori remot anomenat "upstream" el repositori de "drupal-guifi"
git remote add upstream git://gitorious.org/guifi/drupal-guifi.git

# Obtenim els darrers canvis del nostre repositori
git fetch origin -v

# Obtenim els darrers canvis del repositori pare
git fetch upstream -v

# Fem el merge dels canvis obtinguts
git merge upstream/master

Referències

Aquest article conté informació extreta d'aquest fil de la llista de correu de webdev.

Enllaços externs

Eines de l'usuari