Installation de Redmine 2.5 sur Debian 7 wheezy

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 
Catégorie