2009/11/05

Une forge sous NetBSD

Installation des packages

Installation de pkgin

D'abord on installe le package pkgin en lui même via la méthode binaire "traditionnelle" NetBSD

$ export PKG_PATH=ftp://ftp.fr.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/5.0/All
$ pkg_add -v pkgin

Il faut ensuite modifier le fichier /usr/pkg/etc/pkgin/repositories.conf pour y ajouter la ligne

ftp://ftp.fr.NetBSD.org/pub/pkgsrc/packages/NetBSD/amd64/5.0/All

Puis mettre à jour la liste des packages binaire disponibles

$ pkgin update

Installation des autres composants

Les composants dont on aura besoin sont les suivant :

On installe donc tout ça

$ pkgin install scmgit postgresql84-server ruby18-postgres-pr ruby18-RMagick thin

Quelques minutes plus tard tout est arrivé et installé

Installation des gems

Il faudra ensuite installer les Ruby On Rails via les gem

$ gem install rail -v=2.2.2

Récupération de redmine

Exemple pour la version 0.8.6 ici :

$ ftp http://rubyforge.org/frs/download.php/66633/redmine-0.8.6.tar.gz

Maintenant que tout est près passons à la configuration

Configuration

Ajouts des utilisateurs

Nous allons faire tourner chaque processus avec des utilisateurs différents :

redmine:redmine pour le serveur web thin git:git pour le daemon git

$ groupadd _redmine
$ groupadd _git
$ useradd -m -g _redmine _redmine
$ useradd -m -g _git _git

Préparation du serveur postgresql

D'abord on copie le script d'init de postgresql dans /etc/rc.d/ pour qu'il puisse être activé au démarrage :

$ cp /usr/pkg/share/examples/rc.d/pgsql /etc/rc.d/pgsql
$ echo "pgsql=YES" >> /etc/rc.conf

Puis on initialise la base :

$ /etc/rc.d/pgsql initdb -E unicode

Enfin on démarre le serveur

$ /etc/rc.d/pgsql start

On crée ensuite la base qui va bien

$ createuser -I -E -P -S -R -D redmine

Renseigner le mot de passe

$ createdb -T template0 -O redmine -E UTF8

Postgresql est maintenant utilisable

Configuration de redmine

$ tar xvfz redmine-0.8.6.tar.gz 
$ mv redmine-0.8.6 redmine # non obligatoire
$ cd redmine

Configuration de la base de production redmine

$ cp config/database.yml.example config/database.yml

Il faut modifier ensuite ce fichier pour correspondre à :

production:
 adapter: postgresql
 database: redmine
 host: localhost
 username: redmine
 password: mon_pwd

On initialise la base redmine :

$ RAILS_ENV=production rake db:migrate

Et on insère les données par défaut :

$ RAILS_ENV=production rake redmine:load_default_data

Afin que redmine puisse fonctionner, l'utilisateur dans lequel va tourner le serveur thin doit pouvoir accéder à certains répertoires :

$ mkdir tmp public/plugin_assets
$ sudo chown -R _redmine:_redmine files log tmp public/plugin_assets
$ sudo chmod -R 755 files log tmp public/plugin_assets

Configuration du serveur thin

Notez que ici redmine est installé dans /home/_redmine

Il faut simplement créer un script rcng pour démarrer automatiquement thin : /etc/rc.d/thin

#!/bin/sh
#
# PROVIDE: thin
# REQUIRE: DAEMON

. /etc/rc.subr

name="thin"
rcvar=$name
command="/usr/pkg/bin/$name"
stop_cmd="/usr/pkg/bin/thin -c /home/_redmine/redmine -e production stop"
command_args="-c /home/_redmine/redmine -e production -d -u _redmine -g _redmine start"

load_rc_config $name
run_rc_command $1

Puis l'activer

$ chmod 755 /etc/rc.d/thin
$ echo "thin=YES" >> /etc/rc.conf
$ /etc/rc.d/thin start

Un serveur thin tourne maintenant sur le port 3000 du serveur

le daemon git

On considère ici que les dépots git se trouveront dans /home/_git/depots Tout comme pour thin il faut simplement créer un script rcng

#!/bin/sh
#
# PROVIDE: gitdaemon
# REQUIRE: DAEMON  

. /etc/rc.subr

name="git-daemon"
rcvar=$name
pidfile="/var/run/$name.pid"
command="/usr/pkg/libexec/git-core/git-daemon"
command_args="--detach --base-path=/home/_git/depot --user=_git --group=_git --pid-file=$pidfile"

load_rc_config $name
run_rc_command $1

Puis l'activer

$ chmod 755 /etc/rc.d/gitdaemon
$ echo "gitdaemon=YES" >> /etc/rc.conf
$ /etc/rc.d/gitdaemon start

Déposer les dépots git dans /home/_git/depots et ils seront automatiquement disponibles, par exemple :

Pour un depot /home/_git/depots/CBlog.git :

$ git clone git://monbeauserveur/CBlog.git 

Pour plus d'information ici UnixGarden est ton ami : et

Conclusion

La forge est maintenant opérationnelle, pour y accéder : http://monbeauserveur:3000 .

UPDATE :

rhaamo vient de rajouter le support de mercurial

Name :
URL (optional) :
Write here: "ETOOMUCHSPAM"
Comments :