Installation Redmine sous Debian Lenny 5.0

// juillet 23rd, 2009 // Informatique

  • Share
  • Share

J’introduis Redmine en le comparant avec Trac, que j’ai utilisé depuis presque un an sans véritable raison particulière alors qu’il y avait largement plus adapté au type d’activité de Vectoris.

Ses points forts par rapport à Trac :

  • Redmine est multi-projet. C’est donc déjà un choix plus subtil que de copier-coller Trac à chaque nouveau projet.
  • Redmine gère ses utilisateurs et ses droits. Beaucoup mieux qu’un .htaccess
  • Redmine gère nativement les plus importants systèmes de gestion de versions. GIT, CVS, Subversion et Mercurial (qui me porte beaucoup d’intérêt). Vous me direz, sur Trac, il suffit d’intaller un plugin.
  • Redmine est un véritable outil de gestion de projet avec son planning, son Gantt. Tout est bien pensé.
  • Redmine est plus souple que Trac
  • Redmine gère aussi les documents, les fichiers, et a même un forum. Tout ça pour chaque projet.

Pour gérer un projet, sans planning, ayant une poignée d’intervenants, le choix de Trac peut suffire. Un choix qui par contre nous met très vite face à ses limites, quand on est une SSII. J’ai donc décidé d’abandonner Trac définitivement pour Redmine.

Pour plus d’infos sur Redmine, le site officiel.

Passons maintenant à l’installation. Pour la suite, je suppose que vous avez déjà un LAMP qui tournes sous Debian-Like. Sachez toutefois que la procédure qui va suivre a été faite et réussie sur la Lenny 5.0. Supposons aussi que nous allons installer Redmine en créant un utilisateur du même nom, de mot de passe “rdmn”, dont le répertoire home est /home/redmine et que vous voulez servir redmine sur le nom de domaine redmine.maboite.com (les noms de domaines redmine.maboite.com et maboite.com redirige déjà sur l’IP de la machine où vous allez effectuer l’installation).

Commençons par créer cet utilisateur :

useradd -d /home/redmine -g 33 -m -s /bin/bash redmine

Notez qu’ici, on forces ce nouvel utilisateur à appartenir au GID 33, Apache. Il va vous demander le mot de passe, tapez “rdmn”. Une fois fait, faites un “ls -l” pour vérifiez que c’est bon, si c’est le cas, on passes à la suite.

Créez ensuite la base de donnée “redmine” sur MySQL, l’utilisateur du même nom et de mot de passe “rdmn” en lui donnant les doit sur la nouvelle base.

  1. Installez RoR (Ruby on Rails)
  2. aptitude install ruby rdoc irb libyaml-ruby ruby1.8-dev libzlib-ruby ri libopenssl-ruby1.8

    Ca prend un petit moment. Une fois terminée, nous allons avoir besoin d’une version spécifique de RubyGems, qui est le gestionnaire de paquets de Ruby. Nous n’allons pas utiliser Aptitude, la version que vous aurez par ce moyen n’est pas la bonne.

    wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
    tar xvzf rubygems-1.3.1.tgz
    cd rubygems-1.3.1
    ruby setup.rb

    Créez ensuite un lien symbolique, toujours utile:

    ln -s /usr/bin/gem1.8 /usr/bin/gem

    Une fois que tout est bon pour rubyGems, continuons en l’utilisant:

    gem install rails -v 2.1.2

    Il nous faut cette version là. Ensuite, nous allons faire en sorte que Ruby puisses utiliser MySQL :

    aptitude install libmysqlclient15-dev
    gem install mysql

    Voilà, c’est presque prêt. Justes quelques derniers petits trucs:

    aptitude install imagemagick libmagick9-dev librmagick-ruby1.8
    gem install rmagick

    rmagick va servir à Redmine pour les générations d’images, de graphes, etc …

  3. Installez Redmine
  4. Vous étiez en root.Changez d’utilisateur, maintenant pour ne pas tout embrouiller dans vos droits. Et ensuite, allez dans votre répertoire home.

    su redmine
    cd /home/redmine

    C’est là que vous allez télécharger Redmine :

    wget http://rubyforge.org/frs/download.php/52944/redmine-0.8.2.tar.gz
    tar xvzf redmine-0.8.2.tar.gz
    mv redmine-0.8.2 redmine

    On va maintenant s’occuper de la base de donnée que vous avez créé plus haut.

    cd redmine/config
    cp database.yml.example database.yml
    vi database.yml

    Renseignez dedans les champs qui concernes PRODUCTION. C’est assez facile à comprendre. Une fois bon, initialisons la base et remplissons là par des données par défaut :

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

    Faites un petit CHOWN :

    chown -R redmine:www-data /home/redmine

    Et c’est parti pour le premier lancement :

    ruby ../script/server -e production

    Sachez que Redmine est livré avec Webrick qui est un petit serveur. Une fois lancé, votre site est accessible http://maboite.com:3000.
    C’est cool, vous pouvez déjà vous amuser, mais ce n’est pas fini parce-que Webrick ne peut pas être utilisé en production et que de toute façon, le port 3000 vous gène.

  5. Installer Mongrel
  6. Nous allons installer un vrai serveur pour Rails, Mongrel:

    gem install gem_plugin mongrel mongrel_cluster

    Et ensuite créer le fichier de configuration :

    mongrel_rails cluster::configure -e production -p 8000 -N 3 -c /home/redmine/redmine -C /home/redmine/redmine/config/mongrel_cluster.yml -a 127.0.0.1 --user redmine --group www-data

    Indiquons, ensuite à Mongrel le chemin de ce dernier fichier :

    mkdir /etc/mongrel_cluster
    ln -s /home/redmine/redmine/config/mongrel_cluster.yml /etc/mongrel_cluster/monsite.yml

    Et on installe le script qui va gérer Mongrel :

    cp /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/

    Et on va le modifier :

    vi /etc/init.d/mongrel_cluster

    De façon à avoir ce genre de chose :

    #
    # Copyright (c) 2007 Bradley Taylor, bradley@railsmachine.com
    #
    # mongrel_cluster Startup script for Mongrel clusters.
    #
    # chkconfig: - 85 15
    # description: mongrel_cluster manages multiple Mongrel processes for use \
    # behind a load balancer.
    #
    CONF_DIR=/etc/mongrel_cluster
    PID_DIR=/home/redmine/redmine/tmp/pids
    USER=redmine
    RETVAL=0
    # Gracefully exit if the controller is missing.
    which mongrel_cluster_ctl >/dev/null || exit 0
    # Go no further if config directory is missing.
    [ -d "$CONF_DIR" ] || exit 0
    case "$1" in
    start)
    # Create pid directory
    mkdir -p $PID_DIR
    chown $USER:www-data $PID_DIR
    mongrel_cluster_ctl start -c $CONF_DIR --clean
    RETVAL=$?
    ;;
    stop)
    mongrel_cluster_ctl stop -c $CONF_DIR --clean
    RETVAL=$?
    ;;
    restart)
    mongrel_cluster_ctl restart -c $CONF_DIR --clean
    RETVAL=$?
    ;;
    status)
    mongrel_cluster_ctl status -c $CONF_DIR
    RETVAL=$?
    ;;
    *)
    echo "Usage: mongrel_cluster {start|stop|restart|status}"
    exit 1
    ;;
    esac
    exit $RETVAL

    vous remarquerez que nous avons surtout ajouté –clean, ceci indique à Mongrel qu’il faut supprimer correctement le fichier pid, sinon lors d’un redémarrage du serveur il y aura une erreur du type “pid file locked”.
    Il faut maintenant le rendre éxecutable et on le met dans le système:

    chmod +x /etc/init.d/mongrel_cluster
    update-rc.d -f mongrel_cluster defaults

    Lancez maintenant votre nouveau serveur (vous pourrez aussi le contrôler avec stop, restart) :

    /etc/init.d/mongrel_cluster start
  7. Mettre en place le Proxy Apache
  8. Nous sommes à 2 doigts de finir. Activons certains modules d’apache si ce n’est pas encore fait et allons voir pour ce qui est du proxy

    a2enmod rewrite
    a2enmod proxy_http
    a2enmod proxy_balancer
    vi /etc/apache2/mods-available/proxy.conf

    Modifiez le de façon a avoir ceci :

    <IfModule mod_proxy.c>
     #turning ProxyRequests on and allowing proxying from all may allow
     #spammers to use your proxy to send email.
     ProxyRequests Off
     <Proxy *>
     AddDefaultCharset off
     Order allow,deny
     Allow from all
     #Allow from .example.com
     ProxyFtpDirCharset UTF-8
     </Proxy>
     # Enable/disable the handling of HTTP/1.1 "Via:" headers.
     # ("Full" adds the server version; "Block" removes all outgoing Via:  headers)
     # Set to one of: Off | On | Full | Block
     ProxyVia On
     </IfModule>

    Un doigt maintenant, il ne reste plus que le virtualHost :

    vi /etc/apache2/sites-available/redmine

    On va y mettre :

    <VirtualHost *:80>
     
    ServerAdmin jean-luc@vectoris.fr
    ServerName redmine.prod.vectoris.fr
    DocumentRoot /home/redmine/redmine/public/
     
    <Directory /home/redmine/redmine/public/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
    </Directory>
     
    <Proxy balancer://mongrel_cluster>
    BalancerMember http://127.0.0.1:8000
    BalancerMember http://127.0.0.1:8001
    BalancerMember http://127.0.0.1:8002
    </Proxy>
     
    RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} -f
    RewriteRule (.*) $1 [L]
     
    ProxyPass / Balancer://mongrel_cluster/
    ProxyPassReverse / balancer://mongrel_cluster/
     
    AddOutputFilter DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
     
    ErrorLog /var/log/apache2/redmine.prod.error.log
    LogLevel warn
    CustomLog /var/log/apache2/redmine.prod.log combined
    ServerSignature Off
     
    </VirtualHost>

    Là, nous indiquons à Apache de balancer les requettes de redmine.maboite.com:80 sur localhost:8000, soit sur mongrel_cluster. Par contre, Mongrel étant moins rapide que Apache, la directive DEFLATE dit que pour certains fichiers, il faut utiliser Apache plutôt que Mongrel.
    Deux dernieres commandes pour finir en activant notre nouveau site et en redémarrant Apache :

    a2ensite redmine
    /etc/init.d/apache2 restart

    Votre Redmine est disponible : http://redmine.maboite.com.

    Vous pouvez maintenant jouer avec votre nouveau bijou.
    Pour ma part, je n’en suis qu’à une semaine de réelle utilisation, je suis entièrement satisfait.
    Le seul hic, c’est le principe des WorkFlow qui est un peu dur à assimiler. Ca mérite d’ailleurs un autre billet.

17 Responses to “Installation Redmine sous Debian Lenny 5.0”

  1. trambo dit :

    Un truc que j’ai remarqué sur Redmine. Les révisions des dépots ne sont disponibles sur “Activité” que quand on passes d’abord sur “Dépot”. En fait, les révisions sont stockés en base de donnée. Apparement, la mise à jour n’est déclenché que par la page “Dépot”.

  2. Renaud dit :

    Bonjour,

    le fichier du vhost tel qu’il est présenté dans ce billet me parait faux. N’y aurait-il pas quelques balises et qui aurait sauté lors de l’affichage ?

  3. trambo dit :

    Oui effectivement, des balises ont sauté sur la sortie gérée par un css “spécial”.
    J’ai modifié le billet.

  4. trambo dit :

    Oui bon, j’utilise peut-être le mauvais CSS …
    Schez reconnaitre les htmlentities …

  5. arnod'mental dit :

    Merci pour cet explicatif complet, y’a plus qu’à apprendre à configurer et se servir de la bêêêête !!!

    Juste quelques petites choses certes triviales mais sur lesquelles j’ai buté dans l’étape 3:
    * Il faut penser à repasser en root (enfin bon on s’en rend compte assez vite :) )
    * le script de gestion de mongrel_cluster : le modifier AVANT d’en faire la copie dans /etc/init.d/mongrel_cluster et pas l’inverse.
    * le fichier vhost de redmine : VirtualHost *:80 et non 81.

    Voilà, j’espère que j’ai pas dit de conneries… En tout cas pour arriver à mes fins j’ai du passer par ces quelques modifs.

  6. trambo dit :

    Je viens de modifier l’article, merci !

  7. vedder dit :

    j’ai suivi attentivement l’article mais je bloque au lancement de mongrel

    en gros il me dit que le fichier de configuration n’existe pas et lorsque je veux configurer mongrel avec la commande mongrel_rails cluster::configure
    il me met !!! Path to config file not valid: config/mongrel_cluster.yml
    j’ai cherche mais ne trouve pas la solution
    j’ai d’ailleurs poste un sujet sur developpez :
    http://www.developpez.net/forums/d932144/autres-langages/autres-langages/ruby/redmine-rubygems/#post5254669

  8. trambo dit :

    Bonsoir,
    Tu peux vérifier que ton confdir est bien CONF_DIR=/etc/mongrel_cluster dans /etc/init.d/mongrel_cluster ?
    Je peux avoir une vue sur un ls -l dans /etc/mongrel_cluster/ pour vérifier que le lien vers mongrel_cluster.yml de Redmine est bien en place ?
    A tt

  9. vedder dit :

    le CONF_DIR est bien CONF_DIR=/etc/mongrel_cluster dans /etc/init.d/mongrel_cluster
    pour le ls -l :
    total 0
    lrwxrwxrwx 1 root root 48 jun 2 09:52 monsite.yml -> /home/redmine/redmine/config/mongrel_cluster.yml

    Merci pour ta reponse rapide

  10. vedder dit :

    J’ai pu resoudre mon probleme, cela venait d’une faute dans le fichier de conf de mongrel
    Merci pour tout !

  11. trambo dit :

    Bien joué

  12. Yann dit :

    Merci pour le tuto, il est génial!
    Une petite remarque cependant:
    “Et c’est parti pour le premier lancement : ruby script/server -e production”
    A remplacer par ruby ../script/server -e production”… trois fois rien :)

  13. trambo dit :

    Merci.

  14. Manudwarf dit :

    Salux !

    Super article, ça m’a été très utile ;) Par contre je bute sur le dernier point ^^ Lors du redémarrage d’Apache il m’indique :
    Syntax error on line 8 of /etc/apache2/mods-enabled/proxy.conf: order not allowed here

    La ligne en question :
    Order allow,deny

    J’ai tout repassé pour être sûr de ne rien avoir oublié, mais je vois pas…

  15. trambo dit :

    Salux !

    Même problème pour vedder (commentaire plus haut), cf http://www.developpez.net/forums/d932144/autres-langages/autres-langages/ruby/redmine-rubygems/ .
    Sauf que sur developpez, vedder n’a pas détaillé son erreur …

    Donc, a mon avis, c’est une erreur dans le fichier conf. Reste à savoir pourquoi vous êtes 2 à l’avoir cet erreur …
    Tu peux me filer le fichier en question ?
    Mes contacts : http://trambo.blog.vectoris.fr/jean-luc-ranaivoarivao/

    Sinon, il faut savoir que Wordpress fait sauter quelques balises sur les codes affichés. Voilà en réalité ce qui devrait y avoir dans proxy.conf :

    <IfModule mod_proxy.c>
    #turning ProxyRequests on and allowing proxying from all may allow
    #spammers to use your proxy to send email.
    ProxyRequests Off
    <Proxy *>
    AddDefaultCharset off
    Order allow,deny
    Allow from all
    #Allow from .example.com
    ProxyFtpDirCharset UTF-8
    </Proxy>
    # Enable/disable the handling of HTTP/1.1 "Via:" headers.
    # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
    # Set to one of: Off | On | Full | Block
    ProxyVia On
    </IfModule>

    Merci.

  16. gg98 dit :

    J’ai lis votre aricle redmine fonctionne mais je n’arrive jamais a me connecter a mon compte admin, j’ai beau m’inscire je n’arrive pas non plus a me connecter.

  17. trambo dit :

    L’accès administrateur par défaut d’un Redmine neuf est admin/admin. Mais je pense que le problème est ailleurs … :)
    Si à l’identification, il ne se passe quasiment rien et que tu n’as même pas l’erreur “Invalid user or password”, essaye en activant les cookies de ton navigateur.

Leave a Reply

Security Code: