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 !