====== REDMINE ======
ruby project amangement gantt
Probado en Ubuntu 12.04.2 LTS
===== Instalacion =====
http://www.redmine.org/projects/redmine/wiki/RedmineInstall
1. Descarga y descompresion (en este ejemplo en '/var/www/redmine'):
http://www.redmine.org/projects/redmine/wiki/Download
cd /var/www
sudo wget http://rubyforge.org/frs/download.php/76771/redmine-2.2.3.tar.gz
sudo tar xvfz redmine-2.2.3.tar.gz
sudo ln -s redmine-2.2.3 redmine
sudo chown -R www-data:www-data redmine
2. (OPCIONAL) Instalar paquetes. Los necesitamos si vamos a usar MySQL y RMagick (para manipular PDF y PNG):
sudo aptitude install libmysqlclient-dev imagemagick libmagickwand-dev
Depende de si tenemos un sistema muy precario:
sudo aptitude install make
3. Instalar 'bundler' y las 'gems' requeridas:
3.1 (Opcional, solo para Debian) Instalar paquetes para que no casque la gem de json:
sudo aptitude install ruby-mkrf ruby-dev
3.2. Instalar:
**Nuevo (21/4/2016)**
sudo aptitude install ruby
**Antiguo**
sudo aptitude install rubygems
cd /var/www/redmine
sudo gem install bundler
sudo bundle install --without development test postgresql sqlite
**OJO** si intentamos 'sudo aptitude install rubygems -R' fallara en la instalacion de la gem de json
3.3. (Opcional)
Depende de la version de ruby:
<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
En este caso:
sudo gem install rdoc-data; sudo rdoc-data --install
4. Crear el usuario para conectarse a la Base de Datos (MySQL en este ejemplo):
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all on redmine.* to 'redmine'@'localhost';
5. Crear el archivo de configuracion (MySQL en este ejemplo):
sudo vim /var/www/redmine/config/database.yml
Con el siguiente contenido:
production:
adapter: mysql
database: redmine
host: localhost
username: redmine
password: my_password
6. Generar la clave secreta de sesion:
cd /var/www/redmine; sudo rake generate_secret_token
7. Crear el esquema de Base de Datos (hacerlo como 'root' creo que es necesario):
cd /var/www/redmine; sudo RAILS_ENV=production rake db:migrate
8. Alimentar de datos la Base de Datos (hacerlo como 'root' creo que es necesario):
cd /var/www/redmine; sudo RAILS_ENV=production rake redmine:load_default_data
9. Arrancar el servidor web de prueba y probar que redmine es accesible:
cd /var/www/redmine; sudo ruby script/rails server webrick -e production
Abrir un navegador y acceder a redmine:
http://localhost:3000
Usuario y contrasenya: admin
===== Configuracion =====
==== Field permissions ====
Incidencia:
http://www.redmine.org/issues/11887
**Objetivo**: establecer que un campo (por ejemplo "Description") sea obligatorio cuando la incidencia llega a un determinado estado ("In progress" por ejemplo) dentro del workflow de un determinado tracker.
**Problema**: Si el usuario es "admin" aparentemente nunca se le aplica esta restriccion, no importa al rol o roles que pertenezca
{{:informatica:linux:redmine_field_permissions.png|}}
**Explicacion**: El comportamiento si el usuario es "admin" no es muy intuitivo. En resumen existe la siguiente regla: el campo ("Description" en la imagen de ejemplo) y el estado ("In progress" en la imagen de ejemplo) tienen que estar marcados como "Required" o "Read-only" para **TODOS** los roles existentes si queremos que se aplique tambien a los usuarios que son "admin".
Basta con que un rol no tenga este campo seleccionado, o que a posteriori se anyada un nuevo rol en otro proyecto etc.. para que a los usuarios "admin" no se les aplique la restriccion.
**Sugerencia**: Que los usuarios normales del sistema NO sean admins, porque estos heredan los permisos de TODOS los roles, y es un infierno ajustarlos todos.
===== Apache + SSL + redmine =====
http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Apache_to_run_Redmine
Seccion 'Ubuntu Server (Version ?) (This not don't work for 8.04 LTS)'
**IMPORTANTE** Seguir las instrucciones siguientes, es mucho mas simple que en las instrucciones de arriba.
1. Instalar el modulo passenger y habilitarlo:
sudo aptitude install libapache2-mod-passenger
sudo a2enmod passenger
2. Habilitar modulo SSL:
sudo a2enmod ssl
3. Configurar virtualhost:
ServerName redmine.myserver.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/redmine/public
SSLEngine on
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
Options FollowSymLinks
AllowOverride None
RailsEnv production
RailsBaseURI /redmine
Options Indexes ExecCGI FollowSymLinks
Order allow,deny
allow from all
AllowOverride all
ErrorLog ${APACHE_LOG_DIR}/redmine.error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/redmine.access.log combined
**IMPORTANTE** la ruta es /public (/var/www/redmine/public en el ejemplo)
4. Reiniciar apache:
sudo /etc/init.d/apache2 restart
5. Acceder:
http://redmine.myserver.com
===== Configuración correo =====
Si queremos que redmine envíe notificaciones:
1. Crear el archivo:
sudo vim /var/www/redmine/config/configuration.yml
Con el siguiente contenido:
production:
email_delivery:
delivery_method: :sendmail
**BUG** (http://www.redmine.org/issues/13904): Si usamos ssmtp en lugar de Postfix, la configuracion sera:
production:
email_delivery:
delivery_method: :sendmail
sendmail_settings:
arguments: '-i'
2. (COMPROBAR) Creo que es necesario reiniciar el servidor de páginas web, apache en este caso:
sudo /etc/init.d/apache2 restart
3. Iniciar sesión en redmine con un usuario con permisos de administrador
4. Ir a Administration / Settings / Email notifications y realizar los ajustes pertinentes
5. Probar a asignar una tarea a un usuario, debería llegarle un mensaje. Se puede mirar los logs:
sudo tail -F /var/log/mail.log
...
Mar 21 18:25:06 itcumulus postfix/pickup[832]: AB7FB46031: uid=1000 from=
Mar 21 18:25:06 itcumulus postfix/cleanup[2864]: AB7FB46031: message-id=<20130321182506.AB
7FB46031@localhost>
Mar 21 18:25:06 itcumulus postfix/qmgr[833]: AB7FB46031: from=, size
=338, nrcpt=1 (queue active)
Mar 21 18:25:07 itcumulus postfix/smtp[2868]: AB7FB46031: to=, relay=ASPM
X.L.GOOGLE.com[173.194.75.26]:25, delay=0.52, delays=0.04/0.01/0.11/0.36, dsn=2.0.0, statu
s=sent (250 2.0.0 OK 1363890307 l8si26312242vdw.150 - gsmtp)
Mar 21 18:25:07 itcumulus postfix/qmgr[833]: AB7FB46031: removed
==== Cambiar URL de los enlaces del correo enviado ====
Las notificaciones por correo incluyen un enlace URL al ticket que origino la notificacion. Esa URL se construye concatenando protocolo (http o https) + hostname (localhost por defecto) + puerto (3000 por defecto). Para cambiarlo:
1. Editamos archivo de configuracion:
sudo cp /srv/www/redmine/config/settings.yml /srv/www/redmine/config/settings.yml.bak
sudo vim /srv/www/redmine/config/settings.yml
Y ajustamos los siguientes parametros:
...
host_name:
default: redmine.example.com
...
protocol:
default: https
...
2. No se si es estrictamente necesario, pero reinicio Apache:
sudo /etc/init.d/apache2 restart
===== Autenticacion LDAP =====
==== Basico ====
1. Login como admin
2. Ir a Administration / LDAP authentication
3. Pulsar en "New authentication mode"
4. Rellenar los campos tal que asi:
^ Setting ^ Value ^ Comment ^
| Name | LDAP de Mi empresa | |
| Host | ldap.example.com | |
| Port | 636 | Usamos LDAPS, no STARTTLS |
| LDAPS | Marcado | Usamos LDAPS, no STARTTLS |
| Account | cn=admin,dc=example,dc=com | Es recomendable crear un usuario con permisos de solo lectura en lugar de este |
| Password | ***** | - |
| Base DN | ou=people,dc=example,dc=com | - |
| On-the-fly user creation | Marcado | - |
| Login attribute | uid | - |
5. Grabar
6. Probar
7. Si funciona y queremos mantener los mismos usuarios (opcion recomendable):
7.1. Iniciar sesion con un usuario con permisos de administrador (probablemente "admin")
7.2. Ir a "Administration/users"
7.3. (Para cada uno de los usuarios) pulsar sobre el nombre
7.4. (Para cada uno de los usuarios) en el desplegable "Authentication mode" seleccionar LDAP (en nuestro caso aparecera "LDAP de Mi empresa")
7.5. (Para cada uno de los usuarios) pulsar "Save"
==== Solo login si se pertenece a un grupo ====
1. (OpenLDAP server) Enable memberof overlay
1.1. Create a file:
vim ~/memberof_add.ldif
With below content:
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/ldap
olcModuleLoad: memberof
1.2. Create a file:
vim ~/memberof_config.ldif
With below content:
dn: olcOverlay=memberof,olcDatabase={1}hdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
1.3. Load them. It will depend on your OpenLDAP configuration, so we will propose some possibilities:
sudo ldapadd -c -Y EXTERNAL -H ldapi:/// -f memberof_add.ldif
sudo ldapadd -c -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif
Or:
ldapadd -D cn=admin,cn=config -w "password" -H ldapi:/// -f memberof_add.ldif
ldapadd -D cn=admin,cn=config -w "password" -H ldapi:/// -f memberof_config.ldif
A restart is NOT needed if you use dynamic runtime configuration engine (slapd-config).
1.4. (Optional) Test it:
ldapsearch -D cn=admin,dc=example,dc=com -x -W -b 'dc=example,dc=com' -H 'ldap://127.0.0.1:389/' '(&(objectClass=posixAccount)(memberOf=cn=ldapredmine,ou=groups,dc=example,dc=com))'
2. (OpenLDAP server) Create the group. In this example the user is "ldap_user_1" and the group is "ldapredmine":
dn: cn=ldapredmine,ou=groups,dc=example,dc=com
cn: ldapredmine
description: Staff members allowed to login to redmine ticketing system
member: cn=ldap_user_1,ou=people,dc=example,dc=com
objectclass: groupOfNames
objectclass: top
Adjust "dn" and "cn"s to fit to your DIT structure
3. (Redmine) Edit the LDAP authentication mode. In my case "ldap_user_1" is a "posixAccount" objectclass:
| **Base DN** | dc=example,dc=com |
| **Filter** | (&(objectClass=posixAccount)(memberOf=cn=ldapredmine,ou=groups,dc=example,dc=com)) |
===== Incrementar nivel de logs =====
1. Crear el siguiente documento ('/srv/www/redmine' es la ruta a la instancia redmine):
sudo vim /srv/www/redmine/config/additional_environment.rb
Con el siguiente contenido:
config.logger = Logger.new('/var/log/redmine.log', 2, 1000000)
config.logger.level = Logger::INFO
2. Ajustar permisos por si las moscas:
sudo chown www-data:www-data /srv/www/redmine/config/additional_environment.rb
3. Reiniciar apache:
sudo /etc/init.d/apache restart
===== Migracion =====
Si movemos un redmine de un servidor a otro hay que hacer los clasicos pasos de:
* Exportar base de datos
* Exportar sistema de archivos
Pero ademas hay que acceder al directorio donde esta el sistema de archivos y ejecutar:
sudo bundle install --without development test postgresql sqlite
===== Errores =====
==== NameError (undefined local variable or method `disk_directory' for #