2011/04/15

mohawk is in da ports

Je vous avais déjà entretenu du petit mohawk. Ayant plein de projets en tête je ne m'en suis pas beaucoup occupé ces derniers temps.

Mais le sieur bsdsx ne l'entendait pas de cette oreille, il a continué à peaufiner le petit mohawk, corrigeant des bugs de ci, de là, ajoutant quelques petites fonctionnalités (support du x_forwarded_for par exemple) améliorant les logs, la conf, etc.

Bah tout ça, ça nous donne une jolie version 0.8.

Mais comme il est très sympa bsdsx, il nous fourni aussi une jolie documentation dans la langue de molière: documentation générale, documentation complete du fichier de configuration (c'est beau un fichier de conf au poils de yacc non?)

Du coup je ne pouvais pas rester dans mon coin, je l'ai ajouté dans les ports FreeBSD: www/mohawk

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

2009/10/20

CBlog bientôt une release donc un ports

Une nouvelle fonctionnalité vient de faire son apparition dans CBlog : la possibilité de pouvoir désactiver les commentaires via un simple "Comments: false" dans l'entête d'un message (à la demande de rhaamo - oui il y a au moins deux utilisateurs de CBlog :)).

En fait c'est encore mieux que ça, un nouveau champs Posts.nb.allow_comments est disponible dans le HDF (datafile) du coup vous pouvez faire ce que vous voulez avec dans votre template, il correspond au contenu de l'entête Comments:. Dans le template d'exemple si il est égale à false, il n'affiche pas le formulaire de commentaires.

Il me reste deux fonctionnalités à implémenter pour faire une release 1.0 :

Bien sûr il reste toujours du nettoyage a faire pour rendre plus propre et robuste le code, de la documentation :)

En ce qui concerne CPlanet il n'y a plus que du nettoyage car je ne vois pour le moment aucun besoin de rajouter de fonctionnalitées.

Dans tous les cas dès la release venue, un joli ports FreeBSD fera son entrée.

Toute contribution est la bienvenue, surtout que pour le moment le code n'a été testé que sous FreeBSD.

2009/08/05

Du nouveau sous le capot

Depuis quelques temps déjà je me suis mis à essayer de faire du C pour de vrai. Pour cela il me fallait un vrai projet, alors je me suis dit tiens un planet BSD pour les BSDistes actifs francophone ça sera pas mal, du coup j'ai codé CPlanet. Ce qui m'a fait découvir une bibliothèque vraiment choupi s'il en ait pour faire du Web en C : clearsilver.

Résultat : planet.etoilebsd.net

CPlanet est donc un aggrégateur de flux rss et atom (merci libmrss) qui génère un site statique. Il utilise un fichier de conf vraiment simplissime. C'est la solution pour qui souhaite mettre en place un planet sans contrainte, puisque celui-ci n'utilise aucun langage de script, ni de base de données, juste un tout petit binaire.

Tout ça m'a bien motivé alors vlati pas que je me dis que blosxom c'est sympa, mais ça fait pas tout ce que je veux et en plus ça m'oblige à ajouter des lib perl de partout pour les plugins. Je ressors donc mon plus beau vim, mon petit clearsilver tout choupi qui ne me quitte plus et je me lance. Cerise sur le gâteau, je découvre discount, une jolie lib pour transformer du texte en html en suivant la syntaxe markdown.

Resultat : un moteur de blog en C (sous la forme d'un cgi) qui ne nécessite donc pas de langage de script, qui ne nécessite pas non plus de base de donnée toute bloatée. Il reprend le format de post de bloxsom si vous l'utilisiez avec les plugins tags et markdown.

CBlog est bien sûr libre sous license BSD.

Ce blog est donc maintenant propulsé par CBlog version de développement j'ai changé mes rewrite rules afin que le minimum de liens soit cassé.

Et non pour le mauvaise langue ce n'est pas à cause de cblog que mon site de sera pas disponible pendant 15 jours à compter de samedi, c'est pour cause de vacances et de coupure de machine.

EDIT CPlanet et CBlog sont écologiques !!! comme ils ne sont pas plein de bloat de partout, ils vous font économiser du CPU donc des Watts, alors il n'y a aucune raison de ne pas les utiliser.

PS: si vous avez des flux pour le planet à proposer je suis preneur à noter que si les gens sur le planet doivent être francophone, leurs posts n'ont pas besoin de l'être.

2009/04/29

Colorize la vie

Blosxom est très sympathique, très simple à utiliser, dispose de plein de plugin bien foutu, mais j'avais quand même un reproche à lui faire : impossible de trouver un plugin de colorisation syntaxique.

Bref je me dis que ça doit pas être trop compliqué à faire, alors je sors mon plus beau vim et je m'apprête à en code un moi même.

Un petit tour sur le CPAN et je trouve deux projet permettant de mettre des belle couleurs sur du texte :

Je choisis le second car Text::VimColor fait des appels système à vim ce qui ne me plait pas. Ensuite je jette un oeil sur la doc développeur de blosxom, et je me rends vite compte que c'est très très simple de faire de nouveau plugin.

Pour la rédaction j'utilise Markdown, celui-ci génère des blocs de code html entre les balises <pre><code>...</code></pre>, Il ne me reste plus qu'a récupérer le contenu de ces balises, positionner un marqueur pour le choix du langage, et à passer le tout dans la Syntax::Highlight::Engine::Kate, puis de le remettre dans la page d'origine.

Ce qui donne colorize le marquer à mettre en début de bloc est [_langage_], la liste des langages est disponibles dans la doc de Syntax::Highlight::Engine::Kate

Pages : 1