Gestion de Projet · 3 min read · Jan 23, 2026

Exécution de la gestion de projet Redmine sur nginx (Debian Wheezy)

Exécution de la gestion de projet Redmine sur nginx (Debian Wheezy)

Redmine est un outil de gestion de projet écrit en Ruby. Ce tutoriel explique comment servir Redmine avec l’aide de thin (un serveur web Ruby rapide) via un serveur web nginx sur Debian Wheezy.

Je ne donne aucune garantie que cela fonctionnera pour vous !

1 Remarque préliminaire

J’ai préparé un site web www.example.com avec le répertoire racine /var/www/example.com/web (Redmine sera installé là) qui est possédé par l’utilisateur web1 et le groupe client0.

J’ai également préparé une base de données MySQL pour Redmine avec le nom c0db1. Le nom d’utilisateur est également c0db1, le mot de passe est FyZ5z4QGfhTf8.

2 Installation de Redmine

Tout d’abord, nous installons quelques prérequis :

apt-get install thin ruby rake rubygems libopenssl-ruby libmysql-ruby librmagick-ruby ruby-dev libmysqlclient-dev libmagick-dev curl
gem install sass  
 gem install compass

Téléchargez la dernière version de Redmine et copiez-la dans notre répertoire racine /var/www/example.com/web :

cd /tmp  
 wget http://www.redmine.org/releases/redmine-2.4.2.tar.gz  
 tar xvfz redmine-2.4.2.tar.gz  
 mv redmine-2.4.2/* /var/www/example.com/web  
 cd /var/www/example.com/web  
 chown -R web1:client0 *

Remplissez les détails de connexion pour notre base de données MySQL :

cp config/database.yml.example config/database.yml  
 vi config/database.yml
[...]  
production:  
  adapter: mysql2  
  database: c0db1  
  host: localhost  
  username: c0db1  
  password: "FyZ5z4QGfhTf8"  
  encoding: utf8  
[...]  

Installez d’autres paquets nécessaires et remplissez la base de données :

apt-get install libmagickwand-dev
gem install rmagick
gem install bundler
bundle install --without development test postgresql sqlite
rake generate_secret_token
rake db:migrate RAILS_ENV="production"
rake redmine:load_default_data RAILS_ENV="production"

3 Configuration de thin

Ensuite, nous configurons thin, notre serveur web Ruby auquel nginx va faire des requêtes.

ln -s /etc/thin1.9.1 /etc/thin
mkdir /var/log/thin  
 chmod 755 /var/log/thin  
 cd /etc/thin

Créez un fichier de configuration thin qui est nommé comme le propriétaire du répertoire racine (web1) :

vi web1.yml

Assurez-vous d’utiliser le bon utilisateur (web1) dans les lignes log, pid, socket et user ainsi que le bon groupe (client0) dans la ligne group. Utilisez le bon répertoire racine dans la ligne chdir :

---
chdir: /var/www/example.com/web
environment: production
timeout: 30
log: /var/log/thin/web1.log
pid: /var/run/thin/web1.pid
max_conns: 1024
max_persistent_conns: 512
require: []
wait: 30
socket: /var/run/thin/web1.sock
daemonize: true
user: web1
group: client0
servers: 1
prefix: /

Créez le répertoire /var/run/thin (où thin créera son socket) :

mkdir /var/run/thin  
 chown -R web1:client0 /var/run/thin

Pour s’assurer que le répertoire existe lorsque thin est démarré, nous ajoutons la ligne test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin au script d’initialisation /etc/init.d/thin (juste après la ligne SCRIPT_NAME) :

vi /etc/init.d/thin
[...]  
DAEMON=/usr/bin/thin
SCRIPT_NAME=/etc/init.d/thin

test -e /var/run/thin || install -m 755 -o web1 -g client0 -d /var/run/thin

[...]  

Maintenant, démarrez thin…

/etc/init.d/thin start

… et notez le socket qu’il crée (/var/run/thin/web1.0.sock dans ce cas) - nous en aurons besoin dans la configuration nginx :

root@server1:/etc/thin# /etc/init.d/thin start  
 [start] /etc/thin1.9.1/web1.yml ...  
 Démarrage du serveur sur /var/run/thin/web1.0.sock ...  
 root@server1:/etc/thin#

Si vous utilisez Monit, vous pouvez ajouter les lignes suivantes à /etc/monit/monitrc pour vous assurer que thin fonctionne toujours :

vi /etc/monit/monitrc
[...]  
check process thin with pidfile /var/run/thin/web1.0.pid
   start program = "/etc/init.d/thin start"
   stop  program = "/etc/init.d/thin stop"
[...]  

Redémarrez Monit ensuite :

/etc/init.d/monit restart

4 Configuration de nginx

Ensuite, nous devons configurer notre vhost nginx par lequel nous voulons accéder à Redmine. Vous devez coller la configuration suivante dans votre conteneur server {} (ou le champ Directives nginx si vous utilisez ISPConfig) - assurez-vous d’utiliser le bon socket thin :

client_max_body_size 100M;

location / {
    proxy_set_header X-Reak-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;

    if (-f $request_filename/index.html) {
      rewrite (.*) $1/index.html break;
    }

    if (-f $request_filename.html) {
      rewrite (.*) $1.html break;
    }

    if (!-f $request_filename) {
      proxy_pass http://unix:/var/run/thin/web1.0.sock;
      break;
    }
}

C’est tout ! Maintenant, visitez votre site web, et vous devriez pouvoir utiliser Redmine. Le nom d’utilisateur par défaut est admin, le mot de passe est également admin.

4 Liens

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.