Redmine

Voici un petit guide pour installer Redmine sous Debian avec le serveur web Nginx et le serveur ruby Thin.
J'ai également choisi d'installer Redmine dans une sous url, du type : www.monsite.fr/redmine/

Pour ma part, j'ai choisi de ne pas utiliser le paquet officiel Redmine qui est dans les dépôts Debian, tout simplement car il ne fonctionne pas chez moi. J'ai une erreur à chaque fois que j'essaye de soumettre un bug…

Prérequis

  • Serveur web Nginx avec le user www-data
  • Serveur de base de données Mysql
  • Debian 8 Jessie

Installation

Préparation

Pour commencer, on installe les paquets Debian nécessaires à Redmine : Ruby, le client Mysql, Imagemagick et Subversion (SNV)

sudo aptitude install subversion libmysqlclient-dev libmagickwand-dev imagemagick ruby-full

Télécharger Redmine

Récupérons maintenant la dernière version stable de Redmine sur le dépôt SVN. Nous allons l'installer dans /var/wwww.

mkdir /var/www/redmine
cd /var/www/
svn co https://svn.redmine.org/redmine/branches/3.0-stable redmine

Comme demandé, appuyez sur la touche “p”

Configurer la base de donnée MySQL

Créer maintenant une base de donnée MySQL et un utilisateur associé sur votre serveur MySQL.

Editer le fichier de configuration database.yml pour indiquer à Redmine quelle base de donnée il doit utiliser :

nano /var/www/redmine/config/database.yml

Entrez les informations suivantes, remplacer :

  • database : redmine par le nom de votre base de données
  • username: redmine_user par votre nom d'utilisateur
  • password: my_password par votre mot de passe
production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine_user
  password: my_password
  encoding: utf8

development:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine_user
  password: my_password
  encoding: utf8

Installation des Gems Ruby et de Thin

Nous allons maintenant nous occuper de l'installation des librairies Ruby (Gems) ainsi que de Thin qui servira de passerelle entre Nginx et l'application Redmine.

Il faut d'abord créer un fichier Gemfile.local pour forcer l'utilisation de Thin

 nano /var/www/redmine/Gemfile.local

Y ajouter simplement la ligne suivante :

 gem "thin"

Installons maintenant les Gems avec les commandes suivantes :

cd /var/www/redmine
gem install bundler
bundle install

On ajuste maintenant les permissions des fichiers :

cd /var/www/redmine
mkdir public/plugin_assets
chown -R www-data:www-data files log tmp public/plugin_assets config.ru
chmod -R 755 files log tmp public/plugin_assets

Les commandes suivabtes permettent de finaliser l'installation de Redmine

cd /var/data/redmine
bundle exec rake db:migrate
bundle exec rake redmine:plugins
bundle exec rake generate_secret_token 

Dernière étape de cette partie, on configure Redmine pour une installation en sous-url

nano /var/www/redmine/config/environment.rb

On ajoute tout à la fin du fichier la ligne suivante :

Redmine::Utils::relative_url_root = "/redmine"

Configuration de Thin

La première étape consiste à installer thin :

thin install

Ensuite on crée le répertoire dans lequel thin pourra mettre ses logs, et on l'ajoute à la liste des service à démarrer automatiquement

mkdir /var/log/thin
chmod 755 /var/log/thin
/usr/sbin/update-rc.d -f thin defaults

On crée maintenant le répertoire qui permettra à Thin de créer un socket unix pour communiquer avec Nginx

mkdir /var/run/thin
chown -R www-data:www-data /var/run/thin

Il faut également reporter cela dans le script de démarrage thin car sur Debian '/var/run' n'est pas persistant. Pour cela :

nano /etc/init.d/thin

Modifier la partie start de la manière suivante :

case "$1" in
  start)
        mkdir /var/run/thin
        chown -R www-data:www-data /var/run/thin
        $DAEMON start --all $CONFIG_PATH
        ;;

On génere le fichier de configuration de Thin avec la commande thin config

thin config --config /etc/thin/redmine.yml --chdir /var/www/redmine \
    --environment production --socket /var/run/thin/redmine.sock \
    --daemonize --log /var/log/thin/redmine.log --pid /var/run/thin/redmine.pid \
    --user www-data --group www-data --servers 1 --prefix /redmine

Petit ajustement habituel de permission :

chown root:root /etc/thin/redmine.yml
chmod 644 /etc/thin/redmine.yml

Petit détail pour la fin, on ajoute Thin à logrotate afin d'éviter l'accumulation de logs inutiles. Pour cela créer le fichier :

nano /etc/logrotate.d/thin

Y ajouter les lignes suivantes

/var/log/thin/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                /etc/init.d/thin restart >/dev/null
        endscript
}

Configuration de Nginx

Maintenant, on configure Nginx pour qu'il redirige la sortie de Thin, pour cela ajouter le code suivant dans le fichier de configuration nginx “/etc/nginx/sites-available/monfichier

upstream redmine_thin_servers {
	server unix:/var/run/thin/redmine.0.sock;
}

 #REDMINE à Ajouter dans la partie server 
  location /redmine {
        proxy_set_header        Host $http_host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
		
	root /var/www/redmine/public;
        error_page 404  404.html;
        error_page 500 502 503 504  500.html;
        try_files $uri/index.html $uri.html $uri @redmine_thin_servers;
  }

  location @redmine_thin_servers {
        proxy_pass http://redmine_thin_servers;
  }

Pour information, lors du premier login sur redmine, l'utilisateur par défaut s'appelle admin et le mot de passe est également admin. Pensez à le changer !

Voir aussi

Références

  • Partager le signet (social bookmarking)
  • Partager "Redmine" sur del.icio.us
  • Partager "Redmine" sur Digg
  • Partager "Redmine" sur blogmarks
  • Partager "Redmine" sur Google
  • Partager "Redmine" sur Facebook
  • Partager "Redmine" sur Twitter