------------------------------------------- | MANUAL DE INSTALACIÓN DE GONG-GOR v2.x | ------------------------------------------- ################################################################################ Copyright 2010-2013 Free Software's Seed (Semilla de Software Libre), CENATIC y IEPALA Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la «Licencia»); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL», SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia. ################################################################################ La instalación descrita fue efectuada sobre Debian 6.0 (Squeeze) y Ubuntu 11.04 (Natty). Es posible realizar los mismos pasos en cualquier otro sistema operativo, aunque algunos detalles es posible que sean distintos. NOTAS: - Sobre la versión de GONG-GOR El presente documento está realizado para la instalación de GONG-GOR en versiones 2.30 en adelante. Si desea instalar una versión anterior, diríjase al documento de instalación: https://gong.org.es/svn/gong/tags/gong-gor-2.19/INSTALL Si desea actualizar GONG-GOR desde una versión < 2.30, póngase en contacto con la comunidad de desarrollo de GONG en: gong@gong.org.es - Sobre el gestor de BBDD Aunque el proceso es similar utilizando una BBDD sqlite o postgress, este documento se refiere a la instalación sobre un motor de BBDD MySQL y no incluye los pasos específicos para otros gestores de BBDD. Se asume que MySQL está correctamente instalado y configurado, así como el cliente local de MySQL desde línea de comandos. En la siguiente URL se describe el proceso de instalación: http://www.debianadmin.com/mysql-database-server-installation-and-configuration-in-debian-2.html - Sobre el servidor web Aunque el uso de otro servidor web es posible, en este manual se utiliza Apache2. Se asume que Apache2 está correctamente instalado y configurado. En caso de no ser así, siga la siguiente guía: https://help.ubuntu.com/12.04/serverguide/httpd.html Convenciones * Una linea que empieza por "$" indica el prompt bash en consola. A no ser que se especifique lo contrario, los comandos se ejecutarán como el usuario root. * Una linea que empieza por "mysql>" indica el prompt en la consola de mysql. ********************************************************************************************* Indice 1.- Instalación 1.1.- Instalación de dependencias 1.2.- Instalación de GONG-GOR 1.3.- Instalación del entorno de ejecución 1.4.- Instalación del generador de PDFs 1.5.- Instalación de módulos de Apache 2.- Configuración 2.1.- Configuración de Apache 2.2.- Creación de la BBDD de GONG-GOR 2.3.- Configuración de la BBDD en GONG-GOR 2.4.- Migración inicial 2.5.- Permisos 2.6.- Listo para empezar 3.- Multisitio 4.- Problemas conocidos 4.1.- Passenger y multisitio ********************************************************************************************* 1.- Instalación 1.1.- Instalación de dependencias Instalaremos las dependencias necesarias: $ apt-get install bash curl git build-essential openssl libreadline6 libreadline6-dev \ curl git-core zlib1g zlib1g-dev libgnutls-dev libyaml-dev libsqlite3-0 libsqlite3-dev \ sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool \ libssl-dev bison subversion libmysqlclient-dev subversion imagemagick libmagickwand-dev y las que necesitaremos para configurar el servidor web: $ apt-get install libcurl4-gnutls-dev apache2-prefork-dev libapr1-dev libaprutil1-dev 1.2.- Instalación de GONG-GOR El directorio de instalación recomendado para GONG-GOR es bajo /usr/share/gong, aunque es posible otro path de instalación. En primer lugar lo crearemos: $ mkdir -p /usr/share/gong $ cd /usr/share/gong y descargaremos la copia del último tag estable (el indicado aquí puede cambiar desde la realización de este manual, asegúrese de seleccionar la última versión disponible): $ svn export https://gong.org.es/svn/gong/tags/gong-gor-2.30 y renombrándolo a: $ mv /usr/share/gong/gong-gor-2.30 /usr/share/gong/gor 1.3.- Instalación del entorno de ejecución La instalación del entorno de ejecución podemos realizarla para que afecte a todo nuestro sistema en el caso de vayamos a instalar un servidor dedicado a GONG, o unicamente a un usuario particular en el caso de que no dispongamos de un servidor dedicado para GONG o queramos desarrollar sobre GONG. Para la instalación de un servidor dedicado ejecutaremos los siguientes comandos como el usuario root, y si queremos una instalación personal, como el usuario que elijamos. En primer lugar instalaremos RVM (Ruby Version Manager) para gestionar las versiones de ruby y rails: $ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3 $ curl -sSL https://get.rvm.io | bash -s stable --ruby si la instalación del entorno es para todo el sistema, además ejecutaremos: $ source /etc/profile.d/rvm.sh y si no lo es, incluimos en el entorno del usuario (fichero ~/.bashrc) las siguientes dos líneas: # This loads RVM into a shell session. [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" Ejecutaremos el siguiente comando para probar que la instalación de RVM funciona y revisar las dependencias que nos indique la salida de pantalla: $ rvm notes Instalar y configurar ruby: $ rvm install 1.9.2 $ rvm --default ruby-1.9.2 $ rvm gemset create gor $ rvm use 1.9.2@gor --default y desde el directorio donde hayamos descargado GONG (/usr/share/gong/gor) las gemas necesarias para GONG-GOR: $ gem install bundle $ RAILS_ENV=production bundle install 1.4.- Instalación del generador de PDFs Para la generación de algunos informes en PDF, es necesario instalar un generador de PDFs. En primer lugar, instalaremos los paquetes de fuentes: $ apt-get install fontconfig Luego, si nuestro sistema es de 64bits, el proceso sería $ wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-x86_64.tar.bz2 $ tar xvjf phantomjs-1.9.2-linux-x86_64.tar.bz2 $ mv phantomjs-1.9.2-linux-x86_64/bin/phantomjs /usr/local/bin y si es de 32bits, el siguiente: $ wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2 $ tar xvjf phantomjs-1.9.2-linux-i686.tar.bz2 $ mv phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/bin Finalmente, comprobamos que la instalación ha sido correcta: $ /usr/local/bin/phantomjs --version 1.5.- Instalación del entorno de ejecución para Apache Si queremos instalar GONG para utilizarlo y no sólo para desarrollar sobre él, instalaremos el módulo de Apache: $ gem install passenger -v=3.0.18 lo compilaremos siguiendo las instrucciones del comando: $ passenger-install-apache2-module -a y lo configuraremos en apache, creando como root el fichero /etc/apache2/mods-available/passenger.load con el contenido: LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18/ext/apache2/mod_passenger.so PassengerRoot /usr/local/rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18 PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.2-p320@gor/ruby si estábamos instalándolo en todo el sistema, o con el contenido: LoadModule passenger_module /home/USUARIO/.rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18/ext/apache2/mod_passenger.so PassengerRoot /home/USUARIO/.rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18 PassengerRuby /home/USUARIO/.rvm/wrappers/ruby-1.9.2-p320@gor/ruby si estábamos instalando el entorno de ejecución anterior sólo para el usuario USUARIO (sustituya en las líneas anteriores esa cadena por el nombre real del usuario). Por último, como usuario root, active el módulo y reinicie Apache: $ a2enmod passenger && /etc/init.d/apache2 restart 2.- Configuración 2.1.- Configuración de Apache Generamos un nuevo virtual-host en apache copiando el siguiente contenido en el fichero /etc/apache2/sites-available/gong-gor : ServerName gong.miong.org DocumentRoot /usr/share/gong/gor/public AllowOverride all Options -MultiViews PassengerDefaultUser www-data RailsEnv production Y lo activamos: $ a2ensite gong-gor NB: hay que reemplazar el nombre del servidor ("ServerName gong.miong.org") bien por "ServerName localhost" si se trata de una instalación para testear (entonces la aplicación será visible en "http://localhost") o bien por un nombre internet válido y entonces la aplicación será visible en "http://gong.miong.org" por ejemplo. 2.2.- Creación de la BBDD de GONG-GOR. Crearemos la BBDD 'gong_gor' y el usuario 'gong_gor_user' con password 'gong_gor_user_pass' (todos estos valores se pueden cambiar por los que elijamos para nuestra instalación): mysql> create DATABASE gong_gor DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; mysql> grant ALL ON gong_gor.* TO gong_gor_user@'localhost' IDENTIFIED BY 'gong_gor_user_pass'; mysql> grant CREATE VIEW ON gong_gor.* to gong_gor_user@'localhost'; 2.3.- Configuración de la BBDD en GONG-GOR Copiamos el fichero de ejemplo de definición de conexiones a BBDD: $ cp /usr/share/gong/gor/config/database.yml.example /usr/share/gong/gor/config/database.yml Editaremos en el fichero recién copiado (/usr/share/gong/gor/config/database.yml) los parámetros correctos de BBDD para el entorno de producción (production) según los definidos en el punto anterior anterior de forma que quede algo similar a: production: adapter: mysql2 socket: /var/run/mysqld/mysqld.sock database: gong_gor username: gong_gor_user password: gong_gor_user_pass encoding: utf8 2.4.- Migración de Datos inicial Hacemos la carga inicial de la BBDD ejecutando: $ LANG=es_ES RAILS_ENV=production rake db:migrate cargamos los datos preeliminares de BBDD: $ LANG=es_ES RAILS_ENV=production rake db:seed Cambiando el idioma definido en LANG los datos iniciales cargados en BBDD estarán en el idioma elegido. Actualmente, sólo están disponibles español (es) y portugués (pt). 2.5.- Permisos Cambiamos el propietario de los directorios escribibles por el navegador web según el indicado en el punto 2.1 : $ chown -R www-data.www-data /usr/share/gong/gor/files $ chown -R www-data.www-data /usr/share/gong/gor/logs $ chown -R www-data.www-data /usr/share/gong/gor/tmp 2.6.- Listo para comenzar Rearrancamos apache: $ /etc/init.d/apache2 restart y probamos la instalación accediendo con el usuario "admin" y la password "admin". 3.- Multisitio GONG-GOR permite la ejecución multisitio (varias instancias corriendo en la misma máquina) de dos formas: A.- Instalando GONG-GOR en distintos paths como si fueran aplicaciones distintas y configurándolos adecuadamente en los hosts virtuales de apache B.- Configurando la variable de entorno GOR_SITEID Para la segunda posibilidad y suponiendo que queramos instalar las instancias ONG1 y ONG2: Seguir el paso 1 del manual integramente. Crear para cada instancia a instalar una BBDD (con nombre de usuario y password distinta para cada BBDD) tal y como se indica en el punto 2.2. Crear los directorios de logs y configuración: $ mkdir -p /etc/gong $ mkdir -p /var/log/gong Crear el directorio de cache y asignar permisos: $ mkdir -p /var/cache/gong/ong1 && chown www-data.www-data /var/cache/gong/ong1 $ mkdir -p /var/cache/gong/ong2 && chown www-data.www-data /var/cache/gong/ong2 Crear los directorios de datos y asignar permisos: $ mkdir -p /var/lib/gong/ong1 && chown www-data.www-data /var/lib/gong/ong1 $ mkdir -p /var/lib/gong/ong2 && chown www-data.www-data /var/lib/gong/ong1 y hacer enlaces simbólicos del código compartido en ellos (ver punto 4.1): $ ln -s /usr/share/gong/gor /var/lib/gong/ong1/passenger $ ln -s /usr/share/gong/gor /var/lib/gong/ong2/passenger Configurar en apache cada host virtual. En /etc/apache2/sites-available/ong1.miong.org : ServerName ong1.miong.org DocumentRoot /usr/share/gong/gor/public AllowOverride all Options -MultiViews SetEnv GOR_SITEID "ong1" PassengerAppRoot /var/lib/gong/ong2/passenger PassengerDefaultUser www-data RailsEnv production y en /etc/apache2/sites-available/ong2.miong.org : ServerName ong1.miong.org DocumentRoot /usr/share/gong/gor/public AllowOverride all Options -MultiViews SetEnv GOR_SITEID "ong2" PassengerAppRoot /var/lib/gong/ong2/passenger PassengerDefaultUser www-data RailsEnv production Creamos los ficheros de configuración de BBDD tal y como se describe en el punto 2.3 pero cambiando sus ubicaciones por /etc/gong/ong1.database.yml y /etc/gong/ong2.database.yml Hacemos la carga inicial de cada BBDD ejecutando: $ cd /usr/share/gong/gor $ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong1 rake db:migrate $ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong2 rake db:migrate cargamos los datos preeliminares de BBDD: $ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong1 rake db:seed $ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong2 rake db:seed activamos las instancias de apache y rearrancamos: $ a2ensite ong1.miong.org $ a2ensite ong2.miong.org $ /etc/init.d/apache2 restart 4.- Problemas conocidos: 4.1 Passenger y multisitio Passenger interpreta una instancia de aplicación según el AppRoot de esta: http://www.redmine.org/boards/1/topics/16647 por lo tanto y de momento es necesario hacer enlaces simbólicos del código para cada instancia a ejecutar y referirlos como PassengerAppRoot en cada instancia virtual de apache.