Redmine est un outil de gestion de projets / tickets Web, utilisant Ruby on Rails. C'est un outil très puissant, qui s'intègre bien avec les autres briques du SI, telles qu'un annuaire LDAP pour l'authentification centralisée et des gestionnaires de sources, tels que SVN ou GIT.
Si on regarde la version de la distribution Wheezy (Debian 7), on s'aperçoit que le package redmine est une ancienne version : Redmine sur Debian stable : il s'agit de la version 1.4.4, alors que la version actuelle de Redmine est 2.5.2 (release du 6 juillet 2014).
Il est possible d'installer à partir des sources, mais les multiples dépendances (ruby, rails, gem, etc.) rendent le processus complexe.
Il existe cepenant une alternative plus simple : utiliser les repository backports Debian, dans lesquels la version de Redmine est plus avancée, puisqu'il s'agit de la version 2.5.1.2
Wheezy-Backports, c'est quoi ça ?
Comme le rappelle Carl Chenet, je cite : "Les dépôts backports chez Debian permettent d’intégrer à votre distribution Debian en version stable des paquets en provenance de la prochaine version "en test" mais adaptés pour s’intégrer sur votre système stable".
Ils permettent donc de diposer de versions de logiciels testées qui seront incluses dans la prochaine version de Debian. Pratique pour prendre un peu d'avance...
Ajout d'un repository Backports
L'ajout se fait simplement dans le fichier /etc/apt/sources.list
, en ajoutant ces lignes (pour les dépôts Wheezy-backports) :
# Backports repository deb http://ftp.debian.org/debian wheezy-backports main contrib non-free
Installation de Redmine
Une fois le dépôt déclaré, l'installation de redmine est simple :
Pré-requis
On installe les logiciels pré-requis, à savoir pour nous un serveur apache et une base de données MySQL
apt-get update apt-get install -y vim wget apt-utils apt-get install -y mysql-server mysql-client apt-get install -y apache2 apt-get install -y libcurl4-openssl-dev libssl-dev apt-get install -y libmysqlclient-dev
A noter que lors de l'installation de MySQL, on demande de saisir un mot de passe pour le compte root MySQL, ce qui est toujours une bonne pratique.
Installation Ruby + Redmine
On lance ensuite l'installation de ruby-dev, nécessaire pour la bonne installation de redmine, puis le redmine lui-même :
apt-get -t wheezy-backports install ruby-dev apt-get -t wheezy-backports install redmine redmine-mysql
Installation du module Apache Passenger
Le module Apache Passenger permet de faire la passerelle entre Apache et Ruby, comme le fait le module mod_php pour PHP. Avec l'utilisation des dépôts, son installation est simplissime :
apt-get -t wheezy-backports install libapache2-mod-passenger
Paramétrage
VirtualHost Apache / Redmine
Par défaut, Redmine est installé dans le répertoire /usr/share/redmine
. Pour plus de sécurité on peut faire un lien symbolique entre le répertoire public
et un répertoire sous /var/www
, puis lui assigner les bons droits :
ln -s /usr/share/redmine/public /var/www/redmine chown -R www-data:www-data /var/www/redmine chown -R www-data:www-data /etc/redmine/default chmod 644 /etc/redmine/default/ echo 'RailsBaseURI /redmine' > /etc/apache2/sites-available/redmine a2ensite redmine /etc/init.d/apache2 reload /etc/init.d/apache2 restart
Dans cet exemple, on utilise une "sous-url" /redmine. Il est bien entendu possible d'avoir un vrai nom de domaine ou un sous-domaine.
Si on veut par exemple utiliser http://redmine.mondomaine.com, on va avoir une définition de virtualhos telle que celle-ci :
<VirtualHost *:80 > ServerName redmine.mondomaine.com DocumentRoot /usr/share/redmine/public <Directory /usr/share/redmine/public > Options -MultiViews AllowOverride All Order allow,deny Allow from all </Directory> RailsBaseURI / ErrorLog ${APACHE_LOG_DIR}/error_redmine.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access_redmine.log combined </VirtualHost>
En pointant votre navigateur internet sur l'URL http://mon.domaine.com/redmine, la page d'accueil du Redmine doit s'afficher.
La connexion par défaut est : admin/admin.
Paramétrage des droits
En démarrant l'application je suis tombé sur des problèmes de droits sur certains répertoires. Il faut donc s'assurer que les droits suivants sont bien positionnés :
- /usr/share/redmine/public : www-data
- /etc/redmine/default : 664 www-data:www-data
- /var/cache/redmine/default/* : 777 (c'est l'utilisateur sous lequel tourne le processus Passenger qui écrit dans ces répertoires).
ls -l /etc/redmine/default/ total 16 -rw-r--r-- 1 root root 7315 Aug 7 17:07 configuration.yml -rw-r--r-- 1 www-data www-data 154 Aug 7 15:36 database.yml -rw-r--r-- 1 www-data www-data 911 Aug 7 15:36 session.yml ls -l /var/cache/redmine/default/cache/ total 4 drwxr-xr-x 3 nobody nogroup 4096 Aug 7 16:35 900
Le fichier configuration.yml contient la configuration propre à l'instance, notamment le paramétrage du serveur de mail.
Arrêt / démarrage de l'application
On accède à l'application via le module Passenger. Pour relancer l'application (par exemple en cas de modification de la configuration), il faut relancer le Passenger :
ps -ef | grep Pass root 3334 30370 0 16:31 ? 00:00:00 PassengerWatchdog root 3337 3334 0 16:31 ? 00:00:00 PassengerHelperAgent nobody 3343 3334 0 16:31 ? 00:00:00 PassengerLoggingAgent nobody 8240 1 0 17:08 ? 00:00:03 Passenger RackApp: /var/redmine
Le PID de l'application est ici le 8240.
kill 8240 ps -ef | grep Pass root 3334 30370 0 16:31 ? 00:00:00 PassengerWatchdog root 3337 3334 0 16:31 ? 00:00:01 PassengerHelperAgent nobody 3343 3334 0 16:31 ? 00:00:00 PassengerLoggingAgent nobody 9808 3337 45 17:22 ? 00:00:01 Passenger AppPreloader: /var/redmine nobody 9825 9808 0 17:22 ? 00:00:00 Passenger RackApp: /var/redmine
Le processus PassengerWatchdog relance lui-même l'application après avoir détecté son arrêt.
Les processus Passenger* sont lancés par le serveur apache2 lors du démarrage de ce dernier...
Script d'installation
Au final, le script complet utilisé pour l'installation (sans la partie VirtualHost) est le suivant :
#!/bin/bash # # Installs Redmine from wheezy-backports on Debian wheezy # ---------------------------------------------------------------------- backportrepo=$(grep wheezy-backports /etc/apt/sources.list | wc -l) if [ "$backportrepo" == "0" ] ; then echo "Add repository wheezy-backports in /etc/apt/sources.list" echo "# Backports repository" >> /etc/apt/sources.list echo "deb http://ftp.debian.org/debian wheezy-backports main contrib non-free" >> /etc/apt/sources.list fi echo echo "Content of file /etc/apt/sources.list : " cat /etc/apt/sources.list echo " " apt-get update apt-get install -y vim wget apt-utils apt-get install -y mysql-server mysql-client apt-get install -y apache2 apt-get install -y libcurl4-openssl-dev libssl-dev apt-get install -y libmysqlclient-dev apt-get -t wheezy-backports install ruby-dev apt-get -t wheezy-backports install redmine redmine-mysql apt-get -t wheezy-backports install libapache2-mod-passenger # Give correct access to directories chown -R www-data:www-data /usr/share/redmine/public chmod 777 /var/cache/redmine/default/* chown www-data:www-data /etc/redmine/default chmod 664 /etc/redmine/default