Un Electron Libre...

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

Trucs de geek

Des trucs de/pour geeks quoi...

Fil des billets - Fil des commentaires

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 :

jeudi 24 avril 2008

On en dira ce qu'on voudra...

mais je comprends pas qu'(*)Ubuntu sorte en LTS ce jour alors que :

  • Elle embarque une version beta de firefox
  • Le même firefox n'apparait pas dans le menu de KDE #220325
  • D'autres programmes sont marqués en bêta

Franchement, convaincre les foules de partir sur une version avec des versions beta de logiciels phares, ça me sidère...

Ils auraient mieux fait de proposer Firefox2 par défaut et de proposer Firefox3 pour les téméraires, tout comme le fait Kubuntu qui propose KDE4 mais la version LTS contient KDE3...

Surtout que pour la version de juillet, il y a déjà du correctif à produire...

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...

jeudi 10 avril 2008

Changements...

Il se pourrait bien que :

  • Je passe de MySQL à PostgreSQL
  • Je teste la nouvelle "infrastructure" que j'ai en tête chez Gandi, même si les nouvelles Dedibox ont l'air pas mal du tout mais moins flexible pour ce que j'ai en tête...
  • Je remplace Apache par nginx ou lighttpd, seul quelques sites risques de m'embêter avec les règles de réécritures Apache à transformer
  • Je remplace Trac par Redmine
  • Je remplace ma tour souffleuse sous Ubuntu par un Macbook (Pro)

Si certains ont des avis/retours, je suis preneur :-)

Et tout ça avec des bonnes, des mauvaises et mêmes parfois sans la moindre véritable raison :-)

lundi 7 avril 2008

Les dépendances de debian sont impénétrables...

Sur un serveur, la mise à jour de libmagick10 (lié à php5-imagick et imagemagick) provoque l'installation de tout ceci :

sudo aptitude dist-upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
Building tag database... Done
The following NEW packages will be installed:
  app-install-data{a} aspell{a} aspell-en{a} busybox{a} dbus{a} dbus-x11{a} dictionaries-common{a} djview4{a} djvulibre-desktop{a} djvulibre-plugin{a}
  docbook-xml{a} eject{a} esound-clients{a} esound-common{a} gconf2{a} gconf2-common{a} gksu{a} gnome-keyring{a} gnome-mime-data{a} gnome-mount{a}
  hal{a} hal-info{a} iceape-browser{a} iceape-gnome-support{a} initramfs-tools{a} klibc-utils{a} libart-2.0-2{a} libaspell15{a} libaudio2{a}
  libaudiofile0{a} libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libavahi-glib1{a} libbonobo2-0{a} libbonobo2-common{a}
  libbonoboui2-0{a} libbonoboui2-common{a} libcairo-perl{a} libdbus-1-3{a} libdbus-glib-1-2{a} libdirectfb-1.0-0{a} libdirectfb-extra{a}
  libdjvulibre21{a} libeel2-2.20{a} libeel2-data{a} libenchant1c2a{a} libesd0{a} libgail-common{a} libgail18{a} libgconf2-4{a} libgksu2-0{a}
  libglade2-0{a} libglib-perl{a} libgnome-keyring0{a} libgnome-menu2{a} libgnome2-0{a} libgnome2-canvas-perl{a} libgnome2-common{a} libgnome2-perl{a}
  libgnome2-vfs-perl{a} libgnomecanvas2-0{a} libgnomecanvas2-common{a} libgnomeui-0{a} libgnomeui-common{a} libgnomevfs2-0{a} libgnomevfs2-common{a}
  libgnomevfs2-extra{a} libgtk2-perl{a} libgtop2-7{a} libgtop2-common{a} libhal-storage1{a} libhal1{a} libhunspell-1.1-0{a} libidl0{a} libilmbase6{a}
  libklibc{a} libmng1{a} libnautilus-extension1{a} libnotify1{a} libnspr4-0d{a} libnss3-1d{a} libopenexr6{a} liborbit2{a} libpam-gnome-keyring{a}
  libqt4-core{a} libqt4-gui{a} libqt4-qt3support{a} libqt4-sql{a} libscrollkeeper0{a} libsexy2{a} libsmbclient{a} libsmbios-bin{a} libsmbios1{a}
  libsmbiosxml1{a} libsplashy1{a} libstartup-notification0{a} libts-0.0-0{a} libvolume-id0{a} libvte-common{a} libvte9{a} libwnck-common{a}
  libwnck22{a} libx86-1{a} libxres1{a} mozilla-browser{a} notification-daemon{a} pm-utils{a} powermgmt-base{a} qt4-qtconfig{a} radeontool{a}
  scrollkeeper{a} sgml-base{a} sgml-data{a} synaptic{a} udev{a} usbutils{a} uswsusp{a} vbetool{a} xml-core{a}
The following packages will be REMOVED:
  libdjvulibre15{a} libopenexr2ldbl{u}
The following packages will be upgraded:
  libmagick10
1 packages upgraded, 120 newly installed, 2 to remove and 0 not upgraded.
Need to get 56.5MB of archives. After unpacking 165MB will be used.
Do you want to continue? [Y/n/?]

Installer notamment Mozilla et un bout de Gnome sur mon serveur pour une librairie de manipulation d'images, ça me laisse perplexe...

mardi 25 mars 2008

Saut de Kubuntu 7.10 vers Ubuntu 8.04

Profitant de la sortie d'Ubuntu 8.04 beta et planifiant à terme une refonte de mon pc pour remettre le raid en place, je me suis lancé ce matin dans un saut de version de Kubuntu 7.10 vers Ubuntu 8.04. Vous noterez que le "K" s'est perdu au passage, car c'était aussi l'occasion de (re)tester Gnome.

Après 8 années de fidélité quasiment sans faille à KDE, là j'avoue que je ne me suis pas (encore) empressé de revenir sous KDE et cherche même des alternatives Gnome à mes logiciels KDE.

Cela donne pour le moment :

  • Web : Firefox -> Firefox
  • Mail : Thunderbird -> Thunderbird (kmail/kontact a vraiment pris du retard sur thunderbird, c'est vraiment dommage...)
  • Gestionnaire d'images : digikam -> digikam (ne venez pas me parler de F-Spot)
  • Client IRC : Konversation -> XChat -> Konversation (XChat ferait presque aimer un client irc en console)
  • Musique : Amarok -> Rythmbox
  • Messagerie instantannée : Kopete -> Gajim (Jabber/Gtalk) & Pidgin (qui semble s'être amélioré depuis l'époque Gaim...)
  • Client Flickr : Kflickr -> ?
  • Virtualisation : vmware -> ?
  • Lanceur d'application : katapult -> ?
  • Explorateur de fichiers : Konqueror/Dolphin > Nautilus (pour le moment, je résiste et surtout que je suis pas fan de Dolphin)
  • ...

Si vous avez des choses à me suggérer, n'hésitez pas, c'est ma grande période de tests... :-)

Petit test du jour : gOs

Dans le cadre de mes réflexions sur le renouvellement (ou pas) de mon équipement informatique, je me suis mis à fouiller sur les distributions légères et orientés "station de consultation" (= mail, multimedia, bureautique).

Dans ce cadre, j'ai testé gOs 2.0 béta1. Il s'agit d'une distributin linux basée sur Ubuntu et utilisant le bureau Enlightenment dans sa version e17.

Testé sous VMWare en bootant sur l'iso et avec 512M de RAM alloué, le système est très réactif, c'est assez agréable à utiliser. Le choix des applications peut être débatu pendant de longues heures mais cela a le mérite de fournir un tout fonctionnel et couvrant les besoins de base. Le petit widget "Google Search" en plein milieu du bureau est assez simple et pratique à l'utilisation.

Pour le temps où j'ai testé le système, pas de criques particulières à faire, ça donne même envie de jouer avec e17. On pourra juste reprocher que Google Gears ne soit pas installé par défaut pour pouvoir en profiter de façon "transparente" et _surtout_ que leur live-cd ne boote pas sur mon pc (mais ça marche sans problème dans vmware...).

Pour ceux qui sont sous ubuntu Gutsy Gibbon, il est possible de l'installer directement ;-)

jeudi 20 mars 2008

mod_wsgi 2.0 disponible pour ArchLinux

Je viens de mettre à jour le PKGBUILD de mod_wsgi pour Archlinux avec la sortie de mod_wsgi 2.0

Petites modifications :

  • Le paquet mod_wsgi2 est marqué comme périmé - il me servait à accueillir les versions beta/rc de mod_wsgi
  • Le paquet mod_wsgi passe de la version 1.3 à 2.0 - les utilisateurs de la version stable n'ont donc rien à faire pour mettre à jour leur paquet.

samedi 15 mars 2008

mod_wsgi 2.0 RC5 dispo pour ArchLinux

J'ai mis à jour hier le PKGBUILD de mod_wsgi suite à la sortie de la version 2.0 RC5 de mod_wsgi.

La version 2.0 RC5 apporte notamment :

  • Une amélioration des performances réseau en mode "daemon"
  • La capacité à définir un nom pour le processus affiché lors de l'utilisation de la commande ps
  • et plein d'autres choses.

Accéder aux films/musiques/photos de votre PC (ubuntu) depuis le m9diacenter de neuf

Neuf avait lancé il y a quelques temps le m9ediacenter qui a pour intérêt de pouvoir accéder depuis votre TV à des données présentes sur vos PC/Mac (ie sous Windows / Mac OS X / Distribution Linux) de type vidéos / musique / photos.

On apprend :

  • Sur le forum qu'il faut avoir Apache2, PHP 4/5 et Perl installés pour que ça fonctionne.
  • Sur la page "En savoir plus, qu'il ne faut pas que votre n9uf box soit en mode bridge (mon cas jusqu'à il y a peu), sinon votre décodeur ne peut pas avoir accès à votre neuf box :-(

Après avoir remis la n9euf box en mode routeur et reconfiguré mon routeur linksys, j'ai vu que le mediacenter ne fonctionnait pas. Ma TV ne voit pas mon PC. En fouillant un peu les forums, on trouve finalement la bonne réponse, à savoir :

Fichier "httpd/mp9ctl/common.inc.php" ligne 62 :

remplacer :
define("INTERFACE_URL", "http://".$_SERVER['HTTP_HOST']."/interface/");
par :
define("INTERFACE_URL", "http://ip.de.votre.pc/interface/");

Fichier "httpd/mp9ctl/status.inc.php" ligne 16

remplacer :
$serverName = getHostname();
par :
$serverName = "ip.de.votre.pc";

Relancer le mediacenter :

./mediacenter stop
./mediacenter start

Repartez sur la chaine 909 de votre TV et profiter de votre collection, forcément plus intéressante que le programme TV d'un samedi soir...

... par contre, il me reste à trouver comment rétablit certaines règles de port forwarding...

- page 2 de 14 -