Nginx, Redmine et PostgreSQL
Par NiCoS le jeudi 1 mai 2008, 22:03 - Trucs de geek - Lien permanent
Cela a été testé sur une Ubuntu "Hardy 08.04" & Debian "Testing/Lenny". Les utilisateurs d'Ubuntu rajouteront un sudo aux endroits qui vont bien 
Pré-requis
Installons le socle de base
aptitude install nginx ruby rubygems ruby-pkg-tools ruby1.8-dev build-essential postgresql
Utilisons ensuite les gems pour installer les "paquets" ruby dont on a besoin :
gem install rails mongrel mongrel_cluster postgres-pr --include-dependencies
Dans ~/.bash_profile ou ailleurs (/etc/profile, /etc/environment, etc) tant qu'au final, ce bout de chemin soit ajouté à votre PATH.
export PATH="$PATH:/var/lib/gems/1.8/bin"
Création de la base postgresql
Nous allons d'abord changer un paramètre d'authentification de postgres en éditant le fichier @@ /etc/postgresql//8.3/main/pg_hba.conf@@ afin d'avoir la ligne suivante :
local all all md5
Redémarrez ensuite postgresql pour que votre modification soit prise en compte :
/etc/init.d/postgresql-8.3 restart
En root, devenez l'utilisateur "postgres", compte technique d'administration de postgres :
su postgres
Créer un utilisateur redmine et une base redmine
createuser redmine --no-superuser --no-createdb --no-createrole --login --pwprompt --encrypted (pour le tutoriel, j'ai pris le mot de passe redmine) createdb --owner=redmine --encoding=utf-8 redmine exit
Pour tester votre compte :
psql -U redmine redmine
Installation de Redmine
Récupération de Redmine
Même si la version 0.7 de Redmine est sortie il y a quelques jours, un bug fait qu'il vaut mieux attendre la version 0.7.1...
J'utilise donc la branche 0.6-stable pour ce tutoriel et je récupère le tout par svn. A vous d'adapter selon votre besoin et votre expérience
cd /srv/rails/ (adapter ce chemin à l'endroit où vous voulez mettre redmine, pas besoin que ce soit dans /var/www) svn co http://redmine.rubyforge.org/svn/branches/0.6-stable redmine-0.6
Configuration de la base de données
Créer le fichier config/database.yml...
cp config/database.yml.example config/database.yml
... avec le contenu suivant :
production: adapter: postgresql database: redmine host: localhost username: redmine password: "redmine"
Remplissez la base
Au niveau du répertoire de redmine :
rake db:migrate RAILS_ENV="production" rake redmine:load_default_data RAILS_ENV="production"
Test de bon fonctionnement
Toujours depuis le répertoire de redmine :
mongrel_rails start --environment=production
En vous rendant sur http://localhost:3000/, vous devriez voir une instance redmine tourner et pouvoir vous y connecter avec les identifiants admin/admin.
Mise en place du cluster mongrel
Note : je voulais faire tourner redmine via fastcgi mais j'ai rien trouvé à ce sujet. Tous les tutoriels sont basés sur mongrel donc je fais comme les autres...
Créer le fichier config/mongrel_cluster.yml dans le répertoire Redmine :
user: vous cwd: /srv/rails/redmine-0.6 port: "9000" environment: production group: vous address: 0.0.0.0 pid_file: log/mongrel.pid servers: 2
et lancer le cluster :
mongrel_rails cluster::start
Vous devriez pouvoir accéder à votre instance redmine via http://localhost:9000/ et http://localhost:9001/
Faire en sorte que le cluster démarre lors du démarrage de votre pc/serveur :
mkdir /etc/mongrel_cluster ln -s /srv/rails/redmine-0.6/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/ chmod +x /etc/init.d/mongrel_cluster update-rc.d mongrel_cluster defaults
Configuration de nginx
Dernière étape, accéder à votre instance redmine sur le port 80 via nginx :
Dans /etc/nginx/sites-available/ ajouter un fichier "redmine" par ex contenant :
server {
listen 80;
server_name localhost;
root /srv/rails/redmine-0.6/public;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_read_timeout 300;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename.html) {
rewrite (.*) $1.html break;
}
if (-f $request_filename.txt) {
rewrite (.*) $1.txt break;
}
proxy_pass http://127.0.0.1:9000/;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
access_log /var/log/nginx/redmine.access.log;
error_log /var/log/nginx/redmine.error.log;
}
Activez le site :
ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/redmine
et relancer nginx :
/etc/init.d/nginx restart
En vous rendant sur http://localhost/ vous devez avoir accès à votre instance redmine...
Connaissant pas du tout rails et mongrel, il y a peut être des améliorations à apporter. Pour nginx, idem. Je suis preneur d'améliorations 
Maintenant, il me reste à étudier la migration de Trac vers Redmine...
Liens utiles :
- Setting up a Redmine site on Ubuntu (pour redmine, postgresql et mongrel)
- Installer et configurer switchpipe (pour la configuration nginx)
- Doc Ubuntu-fr : Postgresql pour postgresql