====== 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 #