1
|
-------------------------------------------
|
2
|
| MANUAL DE INSTALACIÓN DE GONG-GOR v2.x |
|
3
|
-------------------------------------------
|
4
|
|
5
|
|
6
|
################################################################################
|
7
|
Copyright 2010-2013 Free Software's Seed (Semilla de Software Libre), CENATIC y IEPALA
|
8
|
|
9
|
Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea–
|
10
|
versiones posteriores de la EUPL (la «Licencia»);
|
11
|
Solo podrá usarse esta obra si se respeta la Licencia.
|
12
|
Puede obtenerse una copia de la Licencia en:
|
13
|
|
14
|
http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1
|
15
|
|
16
|
Salvo cuando lo exija la legislación aplicable o se acuerde por escrito,
|
17
|
el programa distribuido con arreglo a la Licencia se distribuye «TAL CUAL»,
|
18
|
SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas.
|
19
|
Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que
|
20
|
establece la Licencia.
|
21
|
################################################################################
|
22
|
|
23
|
|
24
|
|
25
|
|
26
|
|
27
|
La instalación descrita fue efectuada sobre Debian 6.0 (Squeeze) y Ubuntu 11.04 (Natty).
|
28
|
Es posible realizar los mismos pasos en cualquier otro sistema operativo, aunque algunos
|
29
|
detalles es posible que sean distintos.
|
30
|
|
31
|
|
32
|
NOTAS:
|
33
|
|
34
|
- Sobre la versión de GONG-GOR
|
35
|
|
36
|
El presente documento está realizado para la instalación de GONG-GOR en versiones 2.30 en adelante.
|
37
|
|
38
|
Si desea instalar una versión anterior, diríjase al documento de instalación:
|
39
|
|
40
|
https://gong.org.es/svn/gong/tags/gong-gor-2.19/INSTALL
|
41
|
|
42
|
Si desea actualizar GONG-GOR desde una versión < 2.30, póngase en contacto con la comunidad de desarrollo
|
43
|
de GONG en:
|
44
|
|
45
|
gong@gong.org.es
|
46
|
|
47
|
|
48
|
- Sobre el gestor de BBDD
|
49
|
|
50
|
Aunque el proceso es similar utilizando una BBDD sqlite o postgress, este documento se refiere a
|
51
|
la instalación sobre un motor de BBDD MySQL y no incluye los pasos específicos para otros gestores
|
52
|
de BBDD. Se asume que MySQL está correctamente instalado y configurado, así como el cliente
|
53
|
local de MySQL desde línea de comandos. En la siguiente URL se describe el proceso de instalación:
|
54
|
|
55
|
http://www.debianadmin.com/mysql-database-server-installation-and-configuration-in-debian-2.html
|
56
|
|
57
|
|
58
|
- Sobre el servidor web
|
59
|
|
60
|
Aunque el uso de otro servidor web es posible, en este manual se utiliza Apache2. Se asume que Apache2
|
61
|
está correctamente instalado y configurado. En caso de no ser así, siga la siguiente guía:
|
62
|
|
63
|
https://help.ubuntu.com/12.04/serverguide/httpd.html
|
64
|
|
65
|
|
66
|
Convenciones
|
67
|
|
68
|
* Una linea que empieza por "$" indica el prompt bash en consola. A no ser que se especifique lo contrario,
|
69
|
los comandos se ejecutarán como el usuario root.
|
70
|
|
71
|
* Una linea que empieza por "mysql>" indica el prompt en la consola de mysql.
|
72
|
|
73
|
|
74
|
|
75
|
*********************************************************************************************
|
76
|
|
77
|
Indice
|
78
|
1.- Instalación
|
79
|
1.1.- Instalación de dependencias
|
80
|
1.2.- Instalación de GONG-GOR
|
81
|
1.3.- Instalación del entorno de ejecución
|
82
|
1.4.- Instalación del generador de PDFs
|
83
|
1.5.- Instalación de módulos de Apache
|
84
|
2.- Configuración
|
85
|
2.1.- Configuración de Apache
|
86
|
2.2.- Creación de la BBDD de GONG-GOR
|
87
|
2.3.- Configuración de la BBDD en GONG-GOR
|
88
|
2.4.- Migración inicial
|
89
|
2.5.- Permisos
|
90
|
2.6.- Listo para empezar
|
91
|
3.- Multisitio
|
92
|
4.- Problemas conocidos
|
93
|
4.1.- Passenger y multisitio
|
94
|
|
95
|
*********************************************************************************************
|
96
|
|
97
|
1.- Instalación
|
98
|
|
99
|
|
100
|
1.1.- Instalación de dependencias
|
101
|
|
102
|
Instalaremos las dependencias necesarias:
|
103
|
|
104
|
$ apt-get install bash curl git build-essential openssl libreadline6 libreadline6-dev \
|
105
|
curl git-core zlib1g zlib1g-dev libgnutls-dev libyaml-dev libsqlite3-0 libsqlite3-dev \
|
106
|
sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev automake libtool \
|
107
|
libssl-dev bison subversion libmysqlclient-dev subversion imagemagick libmagickwand-dev
|
108
|
|
109
|
y las que necesitaremos para configurar el servidor web:
|
110
|
|
111
|
$ apt-get install libcurl4-gnutls-dev apache2-prefork-dev libapr1-dev libaprutil1-dev
|
112
|
|
113
|
|
114
|
1.2.- Instalación de GONG-GOR
|
115
|
|
116
|
El directorio de instalación recomendado para GONG-GOR es bajo /usr/share/gong, aunque es posible otro path
|
117
|
de instalación. En primer lugar lo crearemos:
|
118
|
|
119
|
$ mkdir -p /usr/share/gong
|
120
|
$ cd /usr/share/gong
|
121
|
|
122
|
y descargaremos la copia del último tag estable (el indicado aquí puede cambiar desde la realización de este
|
123
|
manual, asegúrese de seleccionar la última versión disponible):
|
124
|
|
125
|
$ svn export https://gong.org.es/svn/gong/tags/gong-gor-2.30
|
126
|
|
127
|
y renombrándolo a:
|
128
|
|
129
|
$ mv /usr/share/gong/gong-gor-2.30 /usr/share/gong/gor
|
130
|
|
131
|
|
132
|
1.3.- Instalación del entorno de ejecución
|
133
|
|
134
|
La instalación del entorno de ejecución podemos realizarla para que afecte a todo nuestro sistema
|
135
|
en el caso de vayamos a instalar un servidor dedicado a GONG, o unicamente a un usuario particular
|
136
|
en el caso de que no dispongamos de un servidor dedicado para GONG o queramos desarrollar sobre
|
137
|
GONG.
|
138
|
|
139
|
Para la instalación de un servidor dedicado ejecutaremos los siguientes comandos como el usuario root,
|
140
|
y si queremos una instalación personal, como el usuario que elijamos.
|
141
|
|
142
|
En primer lugar instalaremos RVM (Ruby Version Manager) para gestionar las versiones de ruby y rails:
|
143
|
|
144
|
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
|
145
|
|
146
|
$ curl -sSL https://get.rvm.io | bash -s stable --ruby
|
147
|
|
148
|
si la instalación del entorno es para todo el sistema, además ejecutaremos:
|
149
|
|
150
|
$ source /etc/profile.d/rvm.sh
|
151
|
|
152
|
y si no lo es, incluimos en el entorno del usuario (fichero ~/.bashrc) las siguientes dos líneas:
|
153
|
|
154
|
# This loads RVM into a shell session.
|
155
|
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
|
156
|
|
157
|
|
158
|
Ejecutaremos el siguiente comando para probar que la instalación de RVM funciona y revisar las
|
159
|
dependencias que nos indique la salida de pantalla:
|
160
|
|
161
|
$ rvm notes
|
162
|
|
163
|
Instalar y configurar ruby:
|
164
|
|
165
|
$ rvm install 1.9.2
|
166
|
$ rvm --default ruby-1.9.2
|
167
|
$ rvm gemset create gor
|
168
|
$ rvm use 1.9.2@gor --default
|
169
|
|
170
|
y desde el directorio donde hayamos descargado GONG (/usr/share/gong/gor) las gemas necesarias para GONG-GOR:
|
171
|
|
172
|
$ gem install bundle
|
173
|
$ RAILS_ENV=production bundle install
|
174
|
|
175
|
|
176
|
1.4.- Instalación del generador de PDFs
|
177
|
|
178
|
Para la generación de algunos informes en PDF, es necesario instalar un generador de PDFs.
|
179
|
|
180
|
En primer lugar, instalaremos los paquetes de fuentes:
|
181
|
|
182
|
$ apt-get install fontconfig
|
183
|
|
184
|
Luego, si nuestro sistema es de 64bits, el proceso sería
|
185
|
|
186
|
$ wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-x86_64.tar.bz2
|
187
|
$ tar xvjf phantomjs-1.9.2-linux-x86_64.tar.bz2
|
188
|
$ mv phantomjs-1.9.2-linux-x86_64/bin/phantomjs /usr/local/bin
|
189
|
|
190
|
y si es de 32bits, el siguiente:
|
191
|
|
192
|
$ wget https://phantomjs.googlecode.com/files/phantomjs-1.9.2-linux-i686.tar.bz2
|
193
|
$ tar xvjf phantomjs-1.9.2-linux-i686.tar.bz2
|
194
|
$ mv phantomjs-1.9.2-linux-i686/bin/phantomjs /usr/local/bin
|
195
|
|
196
|
Finalmente, comprobamos que la instalación ha sido correcta:
|
197
|
|
198
|
$ /usr/local/bin/phantomjs --version
|
199
|
|
200
|
|
201
|
1.5.- Instalación del entorno de ejecución para Apache
|
202
|
|
203
|
Si queremos instalar GONG para utilizarlo y no sólo para desarrollar sobre él, instalaremos el módulo de Apache:
|
204
|
|
205
|
$ gem install passenger -v=3.0.18
|
206
|
|
207
|
lo compilaremos siguiendo las instrucciones del comando:
|
208
|
|
209
|
$ passenger-install-apache2-module -a
|
210
|
|
211
|
y lo configuraremos en apache, creando como root el fichero /etc/apache2/mods-available/passenger.load con el contenido:
|
212
|
|
213
|
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
|
214
|
PassengerRoot /usr/local/rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18
|
215
|
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.2-p320@gor/ruby
|
216
|
|
217
|
si estábamos instalándolo en todo el sistema, o con el contenido:
|
218
|
|
219
|
LoadModule passenger_module /home/USUARIO/.rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
|
220
|
PassengerRoot /home/USUARIO/.rvm/gems/ruby-1.9.2-p320@gor/gems/passenger-3.0.18
|
221
|
PassengerRuby /home/USUARIO/.rvm/wrappers/ruby-1.9.2-p320@gor/ruby
|
222
|
|
223
|
si estábamos instalando el entorno de ejecución anterior sólo para el usuario USUARIO (sustituya en las líneas anteriores esa
|
224
|
cadena por el nombre real del usuario).
|
225
|
|
226
|
|
227
|
Por último, como usuario root, active el módulo y reinicie Apache:
|
228
|
|
229
|
$ a2enmod passenger && /etc/init.d/apache2 restart
|
230
|
|
231
|
|
232
|
|
233
|
2.- Configuración
|
234
|
|
235
|
|
236
|
2.1.- Configuración de Apache
|
237
|
|
238
|
Generamos un nuevo virtual-host en apache copiando el siguiente contenido en el fichero
|
239
|
/etc/apache2/sites-available/gong-gor :
|
240
|
|
241
|
<VirtualHost *:80>
|
242
|
ServerName gong.miong.org
|
243
|
DocumentRoot /usr/share/gong/gor/public
|
244
|
<Directory /usr/share/gong/gor/public>
|
245
|
AllowOverride all
|
246
|
Options -MultiViews
|
247
|
</Directory>
|
248
|
|
249
|
PassengerDefaultUser www-data
|
250
|
RailsEnv production
|
251
|
</VirtualHost>
|
252
|
|
253
|
Y lo activamos:
|
254
|
|
255
|
$ a2ensite gong-gor
|
256
|
|
257
|
NB: hay que reemplazar el nombre del servidor ("ServerName gong.miong.org") bien por
|
258
|
"ServerName localhost" si se trata de una instalación para testear (entonces la
|
259
|
aplicación será visible en "http://localhost") o bien por un nombre internet válido
|
260
|
y entonces la aplicación será visible en "http://gong.miong.org" por ejemplo.
|
261
|
|
262
|
|
263
|
2.2.- Creación de la BBDD de GONG-GOR.
|
264
|
|
265
|
Crearemos la BBDD 'gong_gor' y el usuario 'gong_gor_user' con password 'gong_gor_user_pass' (todos estos valores
|
266
|
se pueden cambiar por los que elijamos para nuestra instalación):
|
267
|
|
268
|
mysql> create DATABASE gong_gor DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
|
269
|
mysql> grant ALL ON gong_gor.* TO gong_gor_user@'localhost' IDENTIFIED BY 'gong_gor_user_pass';
|
270
|
mysql> grant CREATE VIEW ON gong_gor.* to gong_gor_user@'localhost';
|
271
|
|
272
|
|
273
|
2.3.- Configuración de la BBDD en GONG-GOR
|
274
|
|
275
|
Copiamos el fichero de ejemplo de definición de conexiones a BBDD:
|
276
|
|
277
|
$ cp /usr/share/gong/gor/config/database.yml.example /usr/share/gong/gor/config/database.yml
|
278
|
|
279
|
Editaremos en el fichero recién copiado (/usr/share/gong/gor/config/database.yml) los parámetros
|
280
|
correctos de BBDD para el entorno de producción (production) según los definidos en el punto anterior
|
281
|
anterior de forma que quede algo similar a:
|
282
|
|
283
|
production:
|
284
|
adapter: mysql2
|
285
|
socket: /var/run/mysqld/mysqld.sock
|
286
|
database: gong_gor
|
287
|
username: gong_gor_user
|
288
|
password: gong_gor_user_pass
|
289
|
encoding: utf8
|
290
|
|
291
|
|
292
|
2.4.- Migración de Datos inicial
|
293
|
|
294
|
Hacemos la carga inicial de la BBDD ejecutando:
|
295
|
|
296
|
$ LANG=es_ES RAILS_ENV=production rake db:migrate
|
297
|
|
298
|
cargamos los datos preeliminares de BBDD:
|
299
|
|
300
|
$ LANG=es_ES RAILS_ENV=production rake db:seed
|
301
|
|
302
|
Cambiando el idioma definido en LANG los datos iniciales cargados en BBDD estarán en el idioma elegido.
|
303
|
Actualmente, sólo están disponibles español (es) y portugués (pt).
|
304
|
|
305
|
|
306
|
2.5.- Permisos
|
307
|
|
308
|
Cambiamos el propietario de los directorios escribibles por el navegador web según el indicado en el punto 2.1 :
|
309
|
|
310
|
$ chown -R www-data.www-data /usr/share/gong/gor/files
|
311
|
$ chown -R www-data.www-data /usr/share/gong/gor/logs
|
312
|
$ chown -R www-data.www-data /usr/share/gong/gor/tmp
|
313
|
|
314
|
|
315
|
2.6.- Listo para comenzar
|
316
|
|
317
|
Rearrancamos apache:
|
318
|
|
319
|
$ /etc/init.d/apache2 restart
|
320
|
|
321
|
y probamos la instalación accediendo con el usuario "admin" y la password "admin".
|
322
|
|
323
|
|
324
|
|
325
|
3.- Multisitio
|
326
|
|
327
|
GONG-GOR permite la ejecución multisitio (varias instancias corriendo en la misma máquina) de dos formas:
|
328
|
|
329
|
A.- Instalando GONG-GOR en distintos paths como si fueran aplicaciones distintas y configurándolos
|
330
|
adecuadamente en los hosts virtuales de apache
|
331
|
|
332
|
B.- Configurando la variable de entorno GOR_SITEID
|
333
|
|
334
|
Para la segunda posibilidad y suponiendo que queramos instalar las instancias ONG1 y ONG2:
|
335
|
|
336
|
Seguir el paso 1 del manual integramente.
|
337
|
|
338
|
Crear para cada instancia a instalar una BBDD (con nombre de usuario y password distinta para cada BBDD)
|
339
|
tal y como se indica en el punto 2.2.
|
340
|
|
341
|
Crear los directorios de logs y configuración:
|
342
|
|
343
|
$ mkdir -p /etc/gong
|
344
|
$ mkdir -p /var/log/gong
|
345
|
|
346
|
Crear el directorio de cache y asignar permisos:
|
347
|
|
348
|
$ mkdir -p /var/cache/gong/ong1 && chown www-data.www-data /var/cache/gong/ong1
|
349
|
$ mkdir -p /var/cache/gong/ong2 && chown www-data.www-data /var/cache/gong/ong2
|
350
|
|
351
|
Crear los directorios de datos y asignar permisos:
|
352
|
|
353
|
$ mkdir -p /var/lib/gong/ong1 && chown www-data.www-data /var/lib/gong/ong1
|
354
|
$ mkdir -p /var/lib/gong/ong2 && chown www-data.www-data /var/lib/gong/ong1
|
355
|
|
356
|
y hacer enlaces simbólicos del código compartido en ellos (ver punto 4.1):
|
357
|
|
358
|
$ ln -s /usr/share/gong/gor /var/lib/gong/ong1/passenger
|
359
|
$ ln -s /usr/share/gong/gor /var/lib/gong/ong2/passenger
|
360
|
|
361
|
Configurar en apache cada host virtual. En /etc/apache2/sites-available/ong1.miong.org :
|
362
|
|
363
|
<VirtualHost *:80>
|
364
|
ServerName ong1.miong.org
|
365
|
DocumentRoot /usr/share/gong/gor/public
|
366
|
<Directory /usr/share/gong/gor/public>
|
367
|
AllowOverride all
|
368
|
Options -MultiViews
|
369
|
</Directory>
|
370
|
|
371
|
SetEnv GOR_SITEID "ong1"
|
372
|
PassengerAppRoot /var/lib/gong/ong2/passenger
|
373
|
PassengerDefaultUser www-data
|
374
|
RailsEnv production
|
375
|
</VirtualHost>
|
376
|
|
377
|
y en /etc/apache2/sites-available/ong2.miong.org :
|
378
|
|
379
|
<VirtualHost *:80>
|
380
|
ServerName ong1.miong.org
|
381
|
DocumentRoot /usr/share/gong/gor/public
|
382
|
<Directory /usr/share/gong/gor/public>
|
383
|
AllowOverride all
|
384
|
Options -MultiViews
|
385
|
</Directory>
|
386
|
|
387
|
SetEnv GOR_SITEID "ong2"
|
388
|
PassengerAppRoot /var/lib/gong/ong2/passenger
|
389
|
PassengerDefaultUser www-data
|
390
|
RailsEnv production
|
391
|
</VirtualHost>
|
392
|
|
393
|
Creamos los ficheros de configuración de BBDD tal y como se describe en el punto 2.3
|
394
|
pero cambiando sus ubicaciones por /etc/gong/ong1.database.yml y /etc/gong/ong2.database.yml
|
395
|
|
396
|
Hacemos la carga inicial de cada BBDD ejecutando:
|
397
|
|
398
|
$ cd /usr/share/gong/gor
|
399
|
$ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong1 rake db:migrate
|
400
|
$ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong2 rake db:migrate
|
401
|
|
402
|
cargamos los datos preeliminares de BBDD:
|
403
|
|
404
|
$ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong1 rake db:seed
|
405
|
$ LANG=es_ES RAILS_ENV=production GOR_SITEID=ong2 rake db:seed
|
406
|
|
407
|
activamos las instancias de apache y rearrancamos:
|
408
|
|
409
|
$ a2ensite ong1.miong.org
|
410
|
$ a2ensite ong2.miong.org
|
411
|
$ /etc/init.d/apache2 restart
|
412
|
|
413
|
|
414
|
|
415
|
4.- Problemas conocidos:
|
416
|
|
417
|
|
418
|
4.1 Passenger y multisitio
|
419
|
|
420
|
Passenger interpreta una instancia de aplicación según el AppRoot de esta:
|
421
|
http://www.redmine.org/boards/1/topics/16647
|
422
|
|
423
|
por lo tanto y de momento es necesario hacer enlaces simbólicos del código
|
424
|
para cada instancia a ejecutar y referirlos como PassengerAppRoot en cada
|
425
|
instancia virtual de apache.
|
426
|
|