Un Electron Libre...

Aller au contenu | Aller au menu | Aller à la recherche

lundi 23 juin 2008

Futilité de passage...

  • Le Chaudron, à défaut d'être complet est à jour coté Redmine - cf Annonce de Redmine 0.7.2
  • Ce blog, ainsi que celui de mon fils continuent de suivre le SVN de dotclear et sont donc sous Dotclear 2.0 RC2
  • Jungle Disk 2.0 est sorti
  • Le paramétrage du serveur est quasi fini, faut que j'injecte d'une facon ou d'une autre le backup des bases postgresql dans backup-manager
  • Mon nombre de flux RSS suivis est passé de 100+ à une 30aine (et ça pourrait encore diminuer) - que de bruit en moins et de temps de gagné. Déjà que j'arrive pas à faire le quart de la moitié de ce que je voudrais faire... et ça m'inspire aussi que la veille / course au hype en SSII consomme un temps monstrueux pour un intérêt qui me parait aujourd'hui bien relatif...
  • Intéressant de voir les projets depuis un client final. C'est là où on voit que les phases d'intégration, tests et documentation sont raremement à jamais appliquées en SSII, voir pas intégrées dans le process de développement pour des bonnes et mauvaises raisons - j'y reviendrais plus tard, ainsi que sur ce document qu'est le "cahier de tests". Pour éviter toute mauvaise interprétation : moi aussi jusqu'à peu encore, j'ai aussi mal fait quand j'étais en SSII... c'est d'ailleurs assez rigolo de prédire quasiment à coup sur ce qui a été fait/pas fait par une SSII et trouver à coup quasi certains les points de manque sur une livraison...
  • Diigo, c'est bientot fini car je trouve leur barre insupportable, la suggestion des tags est à chier et l'intrusion dans le menu en click droit est abusive. Pire que tout dans ce fameux menu, on ne peut pas faire juste "Bookmark" mais forcément "Bookmark & higlight", chose pour lequel je n'ai trouvé aucun intérêt pour le moment. Retour sur del.icio.us sous peu... (juste après la publication de ce billet en fait...)
  • Il a été vu ceci sur mon PC - il parait que je me serais remis à faire du code (à défaut de trouver un éditeur qui me convienne)
django-admin.py startproject atome
django-admin.py startapp journal
django-admin.py startapp links

mais un bug lié à la version SVN de Django et de django-tagging (dont j'ai trouvé la doc un peu limité sur l'intégration dans les modèles) m'a vite bloqué :-( -

Suite au prochain épisode...

Edit 1 : Pour django-tagging, faudrait lire la doc qui va bien aussi...

Edit 2 : Ajout de la sortie de Jungle Disk 2.0

samedi 31 mai 2008

Si vous lisez ce billet...

Cela veut dire que j'ai réussi à migrer DC2 de MySQL à PostgreSQL et que les DNS ont basculé.

Pour ceux qui voudraient passer de MySQL à PostgreSQL sous Dotclear 2, c'est très simple :

  • Sur votre instance dotclear en MySQL : Import/Export > Export > Exporter tout le contenu
  • Installer une nouvelle instance dotclear sur votre serveur avec PostgreSQL
  • Sur votre instance dotclear en MySQL : Import/Export > Import > Import d'un fichier de sauvegarde complet

Suivant la taille de votre blog, vous aurez peut être à uploader votre fichier de backup dans votre répertoire public de dotclear au préalable. Pensez à effacer le fichier une fois que la conversion est effective.

Tous mes sites perso sont donc passés sur un Kimsufi 2008 avec lighttpd comme serveur Web et Postgresql comme serveur de base de données. Pour les langages de scripts, y a du PHP, Python (+ DJango) et Ruby (+ Rails "à cause" de Redmine).

Petit retour "en arrière" donc sur le choix de nginx car j'ai été infoutu de comprendre comment faire fonctionner un site en PHP avec. Comme le support de PHP est très simple à mettre en place sous lighttpd, j'ai vite switché... et du coup hg.unelectronlibre.info est à nouveau disponible (pareil, pas compris comment le faire avec nginx)

jeudi 1 mai 2008

Nginx, Redmine et PostgreSQL

Cela a été testé sur une Ubuntu "Hardy 08.04" & Debian "Testing/Lenny". Les utilisateurs d'Ubuntu rajouteront un sudo aux endroits qui vont bien :-)

Pré-requis

Installons le socle de base

aptitude install nginx ruby rubygems ruby-pkg-tools ruby1.8-dev build-essential postgresql

Utilisons ensuite les gems pour installer les "paquets" ruby dont on a besoin :

gem install rails mongrel mongrel_cluster postgres-pr --include-dependencies

Dans ~/.bash_profile ou ailleurs (/etc/profile, /etc/environment, etc) tant qu'au final, ce bout de chemin soit ajouté à votre PATH.

export PATH="$PATH:/var/lib/gems/1.8/bin"

Création de la base postgresql

Nous allons d'abord changer un paramètre d'authentification de postgres en éditant le fichier @@ /etc/postgresql//8.3/main/pg_hba.conf@@ afin d'avoir la ligne suivante :

local   all         all                               md5

Redémarrez ensuite postgresql pour que votre modification soit prise en compte :

/etc/init.d/postgresql-8.3 restart

En root, devenez l'utilisateur "postgres", compte technique d'administration de postgres :

su postgres

Créer un utilisateur redmine et une base redmine

createuser redmine --no-superuser --no-createdb --no-createrole --login --pwprompt --encrypted
(pour le tutoriel, j'ai pris le mot de passe redmine)
createdb --owner=redmine --encoding=utf-8 redmine
exit

Pour tester votre compte :

psql -U redmine redmine

Installation de Redmine

Récupération de Redmine

Même si la version 0.7 de Redmine est sortie il y a quelques jours, un bug fait qu'il vaut mieux attendre la version 0.7.1...

J'utilise donc la branche 0.6-stable pour ce tutoriel et je récupère le tout par svn. A vous d'adapter selon votre besoin et votre expérience

cd /srv/rails/ 
(adapter ce chemin à l'endroit où vous voulez mettre redmine, pas besoin que ce soit dans /var/www)
svn co http://redmine.rubyforge.org/svn/branches/0.6-stable redmine-0.6

Configuration de la base de données

Créer le fichier config/database.yml...

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

... avec le contenu suivant :

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

Remplissez la base

Au niveau du répertoire de redmine :

rake db:migrate RAILS_ENV="production"
rake redmine:load_default_data RAILS_ENV="production"

Test de bon fonctionnement

Toujours depuis le répertoire de redmine :

mongrel_rails start --environment=production

En vous rendant sur http://localhost:3000/, vous devriez voir une instance redmine tourner et pouvoir vous y connecter avec les identifiants admin/admin.

Mise en place du cluster mongrel

Note : je voulais faire tourner redmine via fastcgi mais j'ai rien trouvé à ce sujet. Tous les tutoriels sont basés sur mongrel donc je fais comme les autres...

Créer le fichier config/mongrel_cluster.yml dans le répertoire Redmine :

user: vous
cwd: /srv/rails/redmine-0.6
port: "9000"
environment: production
group: vous
address: 0.0.0.0
pid_file: log/mongrel.pid
servers: 2

et lancer le cluster :

mongrel_rails cluster::start

Vous devriez pouvoir accéder à votre instance redmine via http://localhost:9000/ et http://localhost:9001/

Faire en sorte que le cluster démarre lors du démarrage de votre pc/serveur :

mkdir /etc/mongrel_cluster
ln -s /srv/rails/redmine-0.6/config/mongrel_cluster.yml /etc/mongrel_cluster/redmine.yml
cp /var/lib/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/
chmod +x /etc/init.d/mongrel_cluster
update-rc.d mongrel_cluster defaults

Configuration de nginx

Dernière étape, accéder à votre instance redmine sur le port 80 via nginx :

Dans /etc/nginx/sites-available/ ajouter un fichier "redmine" par ex contenant :

server {
        listen 80;
        server_name localhost;
        root /srv/rails/redmine-0.6/public;

        location / {
                proxy_set_header  X-Real-IP  $remote_addr;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect false;
                proxy_read_timeout 300;

                if (-f $request_filename/index.html) {
                        rewrite (.*) $1/index.html break;
                }

                if (-f $request_filename.html) {
                        rewrite (.*) $1.html break;
                }

                if (-f $request_filename.txt) {
                        rewrite (.*) $1.txt break;
                }

                proxy_pass http://127.0.0.1:9000/;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
                root html;
        }

        access_log /var/log/nginx/redmine.access.log;
        error_log /var/log/nginx/redmine.error.log;
}

Activez le site :

ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/redmine

et relancer nginx :

/etc/init.d/nginx restart

En vous rendant sur http://localhost/ vous devez avoir accès à votre instance redmine...

Connaissant pas du tout rails et mongrel, il y a peut être des améliorations à apporter. Pour nginx, idem. Je suis preneur d'améliorations :-)

Maintenant, il me reste à étudier la migration de Trac vers Redmine...

Liens utiles :

mercredi 16 avril 2008

Nginx, wouhaou :-)

Juste pour dire que j'ai installé en quelques heures vendredi soir, Steinmetz.fr sur une part Gandi avec l'infrastructure nginx, postgresql et python 2.5 (en lieu et place de Apache2/mod_wsgi, MySQL et Python 2.4).

Pour le moment cela marche du tonerre sur une configuration en plus assez équivalente que celle que j'ai chez Sivit (sauf que la part Gandi est moins chargée en sites pour le moment).

La procédure de migration d'un site django est assez simple :

  • Backup du site + bdd
  • Transfert du site
  • Installation de nginx & postgresql
  • Configuration de nginx en reprenant ce fichier de configuration (par contre la regexp sur les fichiers css & co ne fonctionne pas dans mon cas)
  • Ajustement des paramètres de mon projet django (sur les chemins vers les templates et fichiers statiques)
  • Lancement de mon application en mode fcgi
  • Lancement de nginx
  • Et on apprécie le résultat.

Pour être honnête, cela a été un peu plus compliqué ;-)

Je ferais surement un article un peu plus détaillé & étendu plus tard pour ceux que cela peut intéresser...