Migrer Redmine d’un serveur Linux à un autre : la solution facile

Voici une procédure que j’ai utilisée récemment afin de migrer Redmine d’un serveur Linux à un autre, j’en ai également profité pour faire une mise à jour majeure de l’application.

Introduction

Redmine est un outil très puissant, à mes yeux loin devant ses concurrents (Mantis par exemple). Son seul défaut – et pas des moindres – est d’être développé avec Ruby on Rails, une vraie galère à installer et à maintenir.

J’ai eu récemment besoin de migrer Redmine d’un serveur Debian Jessie, version 1.4.4 (en gros sortie en 2013) vers un serveur Ubuntu 16.04 fraîchement installé. J’ai profité de cette migration pour mettre à jour Redmine vers sa dernière version, la 3.2.1. De toute façon je n’aurais jamais réussi à réinstaller une version aussi vieille que la 1.4.4.

Petite précision : je ne vais pas aborder ici la gestion de vos DNS si vous migrez Redmine sur le même nom de domaine, c’est à vous de vous en occuper.

Procédure

Ci-dessous les étapes à respecter :

Étape 1 : Installer Redmine sur le nouveau serveur

Rien de bien méchant ici, il s’agit uniquement d’installer Redmine sur votre nouveau serveur. Je suppose que vous avez déjà Apache et Mysql qui tournent.

# apt-get install redmine redmine-mysql

Laissez-vous guider par la procédure d’installation. Une fois celle-ci terminée, connectez-vous afin de vous assurer que tout fonctionne correctement.

Étape 2 : Migrer la base de données

Tout est OK ? Parfait !  On va pouvoir tout casser, commencez donc par supprimer (ou renommer si vous n’êtes pas joueur) votre base de données redmine_default.

Importez la base de données de votre ancienne version de Redmine à la place. Faites bien attention au nom de la base de données et aux privilèges utilisateurs sur celle-ci.

Il est inutile d’essayer de vous connecter à Redmine après cette étape : vous tomberez sur une erreur.

Étape 3 : Exécuter quelques scripts…

En réalité, si la documentation de Redmine n’est pas toujours très claire, il existe des outils qui vous permettent de mettre à jour la structure et les données de votre base de données, même avec une version qui a 4 ans de retard !

Placez-vous dans le dossier d’installation de Redmine sur votre serveur (/usr/share/redmine/default sous Ubuntu 16.04) et exécutez les commandes suivantes :

# bundle exec rake db:migrate RAILS_ENV=production 
# bundle exec rake tmp:cache:clear tmp:sessions:clear RAILS_ENV=production

Ces deux commandes que j’ai trouvé au fin fond de la documentation auront pour effet de mettre à jour votre base de données et de supprimer d’éventuelles sessions ouvertes. Bref, un grand ménage sur votre base de données afin de repartir sur des bases saines.

Avant d’essayer de vous connecter, relancez-le serveur Apache et videz les cookies ainsi que le cache de votre navigateur si votre installation est sur le même nom de domaine.

# service apache2 restart

La connexion à Redmine devrait être fonctionnelle. Vous devez normalement retrouver vos projets, utilisateurs, tickets, etc. Il nous reste toutefois quelques réglages supplémentaires à effectuer.

Étape 4 : Les fichiers

Si vous aviez des fichiers uploadés sur les tickets, sachez qu’ils ne sont pas stockés dans la base de données, mais dans un dossier spécifique.

Personnellement, les fichiers se trouvaient sur les deux serveurs dans le dossier suivant : /var/lib/redmine/default

Le nom default correspondant au nom de l’instance Redmine. Vous n’avez qu’à copier les fichiers de l’ancien serveur vers le nouveau et ils devraient être accessibles sur la nouvelle installation.

Étape 5 : L’envoi des mails

Dernière étape, mon installation Redmine envoie des mails aux utilisateurs lors de la mise à jour de tickets. Je suppose ici que votre serveur d’envoi de mail est correctement configuré. Dans mon cas j’utilise Postfix.

Il vous suffit de modifier le fichier /etc/redmine/default/configuration.yml. Encore une fois, default correspond au nom de l’instance de Redmine. Dans mon cas, le fichier n’existait pas.

Pour que Redmine communique avec Postfix, ajoutez les lignes suivantes au fichier :

production:
  email_delivery:
    delivery_method: :sendmail

Vous pouvez utiliser d’autres méthodes que sendmail, cf la documentation.

L’envoi des mails devrait fonctionner à nouveau depuis Redmine. Je vous recommande toutefois de rebooter votre serveur avant de tester à nouveau.

Pour conclure

Je trouve personnellement que la documentation officielle de Redmine est trop dense et mal rangée, surtout si l’on a pas l’habitude de travailler avec Ruby on Rails.

J’espère que cette procédure vous aidera. N’hésitez pas à me faire des retours pour l’améliorer.

Sources :

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Êtes-vous humain ? *