Redmine + Lighttpd + FreeBSD from scratch
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