Redmine + Lighttpd + FreeBSD from scratch

November 2015 · 3 minute(s) de lecture

J’apprécie énormément Redmine car c’est un bon produit de gestion de projet, cependant le port FreeBSD absolument horrible m’a fait le détester. En effet, à chaque mise à jour du port FreeBSD, Redmine devient inutilisable. Il faut dire que chez FreeBSD il n’est pas rare qu’on commit sans tester.

J’ai donc décidé de me séparer totalement du port redmine pour installer redmine à la main.

Suppression de Redmine (si nécessaire)

Évidemment, si vous avez encore votre installation de redmine, pensez à la supprimer :

pkg remove -f redmine
pkg autoremove
pkg clean

Pensez aussi à supprimer les gem, pkg info | grep ruby.

Installation des dépendances

Pour notre installation, nous allons uniquement installer ruby, bundler et votre adaptateur de base de données. Pour ma part j’utilise postgresql ce qui donne :

pkg install postgresql94-client
pkg install ruby
pkg install rubygem-bundler
pkg install fcgi

Il est important d’installer les paquets adéquats car certains modules ruby sont natifs.

Téléchargement de Redmine

Rendez vous sur la page de téléchargements pour télécharger la dernière version.

mkdir /var/www && cd /var/www
fetch http://www.redmine.org/releases/redmine-3.1.1.tar.gz
tar xvzf redmine-3.1.1.tar.gz
mv redmine-3.1.1 redmine
cd redmine

Configuration

Passez à la configuration de la base de donnée comme expliquée sur le guide d’installation.

On ajoute fgci dans le fichier Gemfile.local pour que bundler pense à l’installer aussi.

echo "gem 'fcgi'" > Gemfile.local

Installation des bibliothèques ruby

On installe toutes les bibliothèques ruby nécessaires.

bundle install --without development

Mise en place de Redmine

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

Permissions

chown -R www:www /var/www/redmine
chmod -R 755 files log tmp public/plugin_assets

Modification du shebang dans dispatch.fcgi

Cette partie est obligatoire, ça ne fonctionnera pas sans.

cd public
mv dispatch.fcgi.example dispatch.fcgi
​vim dispatch.fcgi

Changer le shebang en :

#!/usr/local/bin/ruby

Configuration de lighttpd

La partie FastCGI est un peu moins facile car il n’y a pas de documentation officielle pour lighttpd + Redmine, j’ai donc fait quelques recherches et mis en commun ce qui est nécessaire.

Créeons un petit répertoire pour le socket.

mkdir /var/run/redmine
chown -R www:www /var/run/redmine

Évidemment cela implique que vous lanciez redmine avec l’utilisateur www et le groupe www.

$HTTP["host"] == "redmine.mydomain.tld" {
    server.document-root = "/var/www/redmine/public/"
    server.indexfiles = ( "dispatch.fcgi" )
    server.follow-symlink = "enable"
    server.error-handler-404 = "/dispatch.fcgi"
    fastcgi.server = ( ".fcgi" =>
        ((
            "bin-path" => "/var/www/redmine/public/dispatch.fcgi",
            "socket" => "/var/run/redmine/file.sock",
            "max-procs" => 5,
            "idle-timeout" => 20,
            "kill-signal" => 9,
            "bin-environment" => (
                "RAILS_ENV" => "production",
                "RAILS_ROOT" => "/var/www/redmine"
            ),
    )))
}

Comme vous pouvez le voir, cette !@# de ruby ne s’éteint pas sur des signaux normaux. On doit malheureusement stopper les processus avec le signal 9.

Et il n’y a plus qu’à lancer !

service lighttpd start