Le blog perso de Sam

Parce-que je le vaux bien

Vendredi

18/05/2007

Gestion de projet : redMine

Cela faisait quelques temps que je cherchais une solution de gestion de projet. Quelque chose de simple à mettre en oeuvre et à utiliser, qui soit capable de gérer des tickets, contienne de quoi faire un petite doc interne, avec une gestion de droits, et si possible pouvant s’interfacer avec Subversion. Et je ne trouvais pas…

Il y a bien entendu Trac, mais ça ne s’installe pas en deux coups de cuillères à pot, et je n’avais pas envie de m’investir dans Python, investissant beaucoup d’énergie dans Ruby et Rails. C’est d’ailleurs dans cet univers que je cherchais mon bonheur… et que je l’ai (finalement) trouvé : redMine.

Il est possible de faire un test en ligne du logiciel pour se faire une première idée. Une installation locale pour faire un tour plus complet du logiciel est simple et rapide (pour qui a déjà Ruby on Rails d’installé). Le logiciel s’avère être assez complet et très paramétrable sans pour autant être une usine à gaz. Bien au contraire, il se prend en main facilement tant pour l’administration des projets (il est multi-projets) que pour l’utilisation au quotidien. Pour ne rien gâcher, l’apparence est soignée.

Samedi

16/12/2006

Mise en production de Rails sous Ubuntu 6.06

Ce document a pour objectif de préparer une mise en production d’un ou plusieurs sites développé(s) avec Ruby On Rails sous Ubuntu 6.06. Pour configurer un environnement de développement, se référer au document Installer Ruby et RoR sur Ubuntu 6.06 (Dapper) .

Le choix technique est ici d’utiliser Mongrel pour faire fonctionner des instances de Rails, et d’utiliser Apache 2.2 pour réceptionner les requêtes et les distribuer aux différentes instances. Apache servira également le contenu statique. Tout ceci est très bien explique ici : Scaling Rails with Apache 2.2, mod_proxy_balancer and Mongrel.

Certains choix ne sont en rien obligatoires : il n’y a pas une seule et unique manière de procéder. Par ailleurs l’installation décrite est une base pour une mise en production, mais n’est pas en soit totalement sécurisée. Il faut encore penser firewall, sauvegardes, rotation de logs, …

Ce qui suit est long (mais détaillé), inspirez profondément avant de continuer ;)

Read the rest of this entry »

Mercredi

22/11/2006

Mongrel et les droits des fichiers

Je souhaite mettre en place un hébergement d’applications basés sur Ruby On Rails en utilisant Mongrel. L’objectif n’est pas de faire un hébergement mutualisé, mais de m’en imposer certaines contraintes afin de séparer ce que fait l’administrateur et le développeur.

Or par défaut Mongrel Cluster utilise un fichier de paramètres présent dans le répertoire config de l’application. De même que le fichier pid (permettant d’arrêter les processus) est présent dans le répertoire log. En cas de fausses manipulations du développeur c’est fâcheux. En cas de mauvaises intentions c’est pire (possibilité d’avoir les droits root en se débrouillant bien). Non pas que je soit suspicieux, mais j’aime bien cloisonner les choses lorsque cela les rends soit plus claires, soit plus sures.

Je propose ici la mise en place d’un script qui permette de gérer les clusters de Mongrel en utilisant des fichiers de configurations stockés totalement indépendamment de l’application d’une part (protégé contre toute modification), et d’autre part qui n’exécute jamais les script directement avec les droits de root afin de palier à toute manipulation frauduleuse des fichiers pid (il y aurait moyen de tuer n’importe quel processus).

Je pars ici du principe que Mongrel et Mongrel Cluster sont installés sur le système. Pour l’occasion le système sera un Ubuntu 6.06, mais rien n’interdit de le faire sur une autre distribution (ou un autre *nix) en adaptant un poil.

Avant tout chose, créons le répertoire qui contiendra tout les fichiers de configuration (seul root aura les droit d’y écrire !) :

sudo mkdir /etc/mongrel_cluster

Ensuite placez dans le répertoire /etc/mongrel_cluster les fichiers de configuration des applications en utilisant les options requises. Par exemple pour une application gérée par l’utilisateur test (avec toutes les options indispensables) :

sudo mongrel_rails cluster::configure -e production
-p 8000 -N 3 -c /home/test/mon_appli
--user test --group test
--config /etc/mongrel_cluster/test_mon_appli.yml

Entrons dans le vif du sujet : le script de démarrage (et d’arrêt). Consultez le script suivant et faites un copier/coller dans un nouveau fichier mongrel_all_cluster.rb dans /etc/init.d . Reste à permettre son utilisation au démarrage et à l’arrêt de la machine :

sudo chmod +x /etc/init.d/mongrel_all_cluster.rb
sudo /usr/sbin/update-rc.d mongrel_all_cluster.rb defaults

Et voilà, c’est fini, il ne reste plus qu’à tester.

Pour ajouter une application il suffit d’utiliser la commande de création d’un fichier de configuration comme illustré ci-dessus. Pour neutraliser une application il suffit de déplacer le fichier de configuration (ou l’effacer), ou plus simplement de le renommer temporairement car seuls les fichier finissant par .yml sont pris en compte.

Comme indiqué en introduction, ce n’est pas suffisant pour prétendre faire une hébergement mutualisé. Mais cela permet déjà de mettre le paramétrage à l’abri et d’éviter des élévations de privilèges ou des morts violentes de processus. Il y aurait encore pas mal de chose à faire pour sécuriser le système et les applications elles-même.

Ce script et ce post sont le fruits d’une étude de ma part, ce n’est pas en production. N’hésitez pas à vous en inspirez, et si vous avez mieux à proposer (ou des remarques à apporter), la porte est grande ouverte ;)

Mardi

18/07/2006

Installer Ruby et RoR sur Ubuntu 6.06 (Dapper)

Alors que jusqu’à présent les paquets de Ubuntu (hérités de Debian) m’ont toujours semblé d’une grande simplicité et d’une efficacité redoutable, l’installation de Ruby ne se fait pas correctement. Rien de bien méchant comme vous allez le découvrir, mais cela demande un petit effort supplémentaire. Que ce soit pour utiliser simplement Ruby sur un serveur, ou Ruby on Rails dans un environnement graphique avec RadRails (non traité ici), ces explications seront très utiles.

Read the rest of this entry »