Installation du gestionnaire de projets Redmine sous Windows

Régis POUILLER

Installation pas à pas du logiciel de gestion de projets Redmine sous Windows.

Une discussion a été ouverte pour les commentaires sur la publication de cet article : [ Commentez ]

- Titre : Installation du gestionnaire de projets Redmine sous Windows

- Auteur : Régis POUILLER

- Parution : 27 janvier 2014

- Public visé :

- Licence : Copyright ® 2013 Régis POUILLER. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. INTRODUCTION

- I-A. Objectif

- I-B. Connaissances prérequises

- I-C. Ressources externes

- I-D. Versions des logiciels

- II. POSTGRESQL

- II-A. Installation de PostgreSQL

- II-B. Création de l'utilisateur redmine

- II-C. Création de la base de données redmine

- III. RUBY

- III-A. Installation de Ruby

- III-B. Installation de Ruby Development Kit

- III-C. Installation de RubyGems

- III-D. Installation des Gems rake et bundler

- III-D-1. Installation de rake

- III-D-2. Installation de bundler

- III-D-3. Installation de thin

- IV. IMAGEMAGICK

- V. REDMINE

- V-A. Installation de Redmine

- V-B. Paramétrage de l'accès à la base de données

- V-C. Paramétrage de la messagerie

- V-D. Installation des dépendances gems

- V-E. Contrôle des gems

- V-F. Génération de la clé d'encodage des cookies

- V-G. Création des tables

- V-H. Remplissage des tables

- V-I. Test de l'installation

- V-J. Création d'un service

- VI. APACHE HTTP SERVER

- VI-A. Installation de Apache HTTP Server

- VI-B. Paramétrage de proxy

- VII. CONCLUSION

- VIII. REMERCIEMENTS

I - INTRODUCTION

I-A - Objectif

L'objectif de cet article est de présenter pas à pas l'installation de Redmine sous Windows.

Redmine est un logiciel de gestion de projets de type application Web. Un logiciel de gestion de projets permet de gérer le cycle de vie d'une application. Parmi les fonctionnalités courantes dans ce type de logiciel, on peut trouver : création de tâches (évolutions, corrections…), association d'une tâche à une ressource, planification, gestion des documents, etc.

Redmine a été développé en Ruby et plus particulièrement grâce au framework Ruby on Rails par Jean-Philippe Lang.

I-B - Connaissances prérequises

Aucune connaissance particulière n'est requise : cet article va détailler pas à pas chaque étape de l'installation.

I-C - Ressources externes

Sur le site de Redmine :

- Installing Redmine ;

- HowTo Install Redmine in a sub-URI on Windows with Apache ;

- HowTo install rmagick gem on Windows ;

Sur le blog de Mickaël BARON :

- J'ai besoin d'... installer l'outil de gestion de projets Redmine sous Windows.

Sur le site du DevKit de Ruby :

- Installation du Development Kit de Ruby.

I-D - Versions des logiciels

Les versions des logiciels utilisés dans cet article sont :

- Apache HTTP Server : 2.2.25 ;

- PostgreSQL : 9.3.2 ;

- Ruby : 1.9.3 ;

- RubyGems : 1.8.25 ;

- Ruby Development Kit : pour Ruby 1.8.7 et 1.9.3 ;

- Redmine : 2.4.2 ;

- ImageMagick : 6.8.7 [ftp://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/].

II - POSTGRESQL

II-A - Installation de PostgreSQL

Télécharger PostgreSQL : http://www.enterprisedb.com/products-services-training/pgdownload#windows (dans mon cas la Win x86-32).

Pour commencer l'installation, lancer l'exécutable « postgresql-9.3.2-1-windows.exe ».

Cliquer sur le bouton « Suivant > ».

Sélectionner un dossier d'installation (ici : « D:\redmine\PostgreSQL\9.3 »). Puis cliquer sur le bouton « Suivant > ».

Sélectionner un dossier pour les données (ici : « D:\redmine\PostgreSQL\9.3\data »). Puis cliquer sur le bouton « Suivant > ».

Choisir un mot de passe pour le superutilisateur. Puis cliquer sur le bouton « Suivant > ».

Saisir le port de PostgreSQL. Puis cliquer sur le bouton « Suivant > ».

Choisir la Locale. Puis cliquer sur le bouton « Suivant > ».

Cliquer sur le bouton « Suivant > ».

Attendre la fin de l'installation.

Décocher « Exécuter Stack Builder en sortie ? ». Puis cliquer sur le bouton « Terminer ».

II-B - Création de l'utilisateur redmine

Dans le dossier « bin » de PostgreSQL, lancer la commande de création d'un utilisateur.

C:\>d:

D:\>cd \redmine\PostgreSQL\9.3\bin

D:\redmine\PostgreSQL\9.3\bin>createuser --pwprompt --encrypted -U postgres redmine

Saisir deux fois le mot de passe de l'utilisateur (ici : « redmine »). Puis saisir le mot de passe du superutilisateur indiqué pendant l'installation de PostgreSQL.

Saisir le mot de passe pour le nouveau rôle :
Le saisir de nouveau :
Mot de passe :

L'utilisateur « redmine » est créé.

II-C - Création de la base de données redmine

Lancer la commande de création d'une base de données.

D:\redmine\PostgreSQL\9.3\bin>createdb --owner=redmine --encoding=utf-8 -U postgres redmine

Saisir le mot de passe du superutilisateur indiqué pendant l'installation de PostgreSQL.

Mot de passe :

La base de données « redmine » est créée.

III - RUBY

III-A - Installation de Ruby

Télécharger Ruby : http://rubyinstaller.org/downloads/.

Pour commencer l'installation, lancer l'exécutable « rubyinstaller-1.9.3-p484.exe ».

Choisir la langue « English ». Puis cliquer sur le bouton « OK ».

Sélectionner « Iaccept the license ». Puis cliquer sur le bouton « Next > ».

Choisir un dossier d'installation (ici : « D:\redmine\Ruby »). Sélectionner « Add Ruby executables to your PATH ». Puis cliquer sur le bouton « Install ».

Attendre la fin de l'installation.

Cliquer sur le bouton « Finish ».

III-B - Installation de Ruby Development Kit

Ruby Development Kit est nécessaire pour l'installation de certaines dépendances (par exemple json).

Pour commencer l'installation, lancer l'exécutable « DevKit-tdm-32-4.5.2-20111229-1559-sfx.exe ».

Choisir un dossier d'installation (ici : « D:\redmine\dk »). Puis cliquer sur le bouton « Extract ».

Attendre la fin de l'installation.

Dans le dossier « D:\redmine\dk », lancer la commande suivante :

C:\>d:

D:\>cd \redmine\dk

D:\redmine\dk>ruby dk.rb init

L'installation donne la trace ci-dessous.

[INFO] found RubyInstaller v1.9.3 at d:/redmine/Ruby

Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.

Puis, lancer la commande suivante :

D:\redmine\dk>ruby dk.rb install

L'installation donne la trace ci-dessous.

[INFO] Updating convenience notice gem override for 'd:/redmine/Ruby'
[INFO] Installing 'd:/redmine/Ruby/lib/ruby/site_ruby/devkit.rb'

III-C - Installation de RubyGems

RubyGems est un gestionnaire de paquets qui peut installer des gems. Les gems (voir la FAQ) permettent d'installer des modules/bibliothèques dans Ruby.

Dézipper le fichier « rubygems-1.8.25.zip » (ici dans le dossier « D:\redmine »).

Dans le dossier « rubygems-1.8.25 » de RubyGems, lancer la commande d'installation de RubyGems.

C:\>d:

D:\>cd \redmine\rubygems-1.8.25

D:\redmine\rubygems-1.8.25>ruby setup.rb

L'installation donne la trace ci-dessous.

RubyGems 1.8.25 installed

== 1.8.25/ 2013-01-24

* 6 bug fixes:

* Added 11627 to setup bin_file location to protect against errors. Fixes #328 by ConradIrwin
* Specification#ruby_code didn't handle Requirement with multiple
* Fix error on creating a Version object with a frozen string.
* Fix incremental index updates
* Fix missing load_yaml in YAML-related requirement.rb code.
* Manually backport encoding-aware YAML gemspec

------------------------------------------------------------------------------

RubyGems installed the following executables:
D:/redmine/Ruby/bin/gem

III-D - Installation des Gems rake et bundler

III-D-1 - Installation de rake

Dans le dossier de Ruby, lancer la commande suivante :

C:\>d:

D:\>cd \redmine\Ruby

D:\redmine\Ruby>gem install rake -v 10.1.1

L'installation donne la trace ci-dessous.

Fetching: rake-10.1.1.gem (100%)
Successfully installed rake-10.1.1
1 gem installed
Installing ri documentation for rake-10.1.1...
Installing RDoc documentation for rake-10.1.1...

III-D-2 - Installation de bundler

Dans le dossier de Ruby, lancer la commande suivante :

D:\redmine\Ruby>gem install bundler -v 1.5.2

L'installation donne la trace ci-dessous.

Fetching: bundler-1.5.2.gem (100%)
Successfully installed bundler-1.5.2
1 gem installed
Installing ri documentation for bundler-1.5.2...
Installing RDoc documentation for bundler-1.5.2...

III-D-3 - Installation de thin

Dans le dossier de Ruby, lancer la commande suivante :

D:\redmine\Ruby>gem install thin -v 1.3.1

L'installation donne la trace ci-dessous.

Fetching: rack-1.5.2.gem (100%)
Fetching: eventmachine-1.0.3-x86-mingw32.gem (100%)
Fetching: daemons-1.1.9.gem (100%)
Fetching: thin-1.3.1.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
Successfully installed rack-1.5.2
Successfully installed eventmachine-1.0.3-x86-mingw32
Successfully installed daemons-1.1.9
Successfully installed thin-1.3.1
4 gems installed
Installing ri documentation for rack-1.5.2...
Installing ri documentation for eventmachine-1.0.3-x86-mingw32...
Installing ri documentation for daemons-1.1.9...
Installing ri documentation for thin-1.3.1...
Installing RDoc documentation for rack-1.5.2...
Installing RDoc documentation for eventmachine-1.0.3-x86-mingw32...
Installing RDoc documentation for daemons-1.1.9...
Installing RDoc documentation for thin-1.3.1...

Il est nécessaire de préciser la version de thin. La dernière version de thin disponible au moment de l'écriture de cet article est la 1.6.0. Mais les versions de thin supérieures à la 1.3.1 ne semble pas fonctionner correctement. Par ailleurs, Bitnami Redmine comporte thin en version 1.3.1.

IV - IMAGEMAGICK

ImageMagick permet à Redmine de générer des images.

Au moment de la rédaction de cet article, la version de ImageMagick est 6.8.8. Mais elle produit une erreur durant l'installation de Redmine (lors de l'installation des dépendances).

This installation of RMagick 2.13.2 is configured for
Ruby 1.9.3 (i386-mingw32) and ImageMagick 6.8.8
======================================================================

make
generating RMagick2-i386-mingw32.def
compiling rmagick.c
In file included from rmagick.c:13:0:
rmagick.h:81:2: error: #error Specified QuantumDepth is not supported.
rmagick.c: In function 'Magick_colors':
rmagick.c:42:5: warning: passing argument 2 of 'GetColorInfoList' from incompatible pointer type
D:\redmine\ImageMagick-6.8.8-Q16\include/magick/color.h:75:5: note: expected 'size_t *' but argument is of type 'long unsigned int *'
rmagick.c: In function 'Magick_fonts':
rmagick.c:90:5: warning: passing argument 2 of 'GetTypeInfoList' from incompatible pointer type
D:\redmine\ImageMagick-6.8.8-Q16\include/magick/type.h:98:5: note: expected 'size_t *' but argument is of type 'long unsigned int *'
rmagick.c: In function 'Magick_init_formats':
rmagick.c:178:5: warning: passing argument 2 of 'GetMagickInfoList' from incompatible pointer type
D:\redmine\ImageMagick-6.8.8-Q16\include/magick/magick.h:129:5: note: expected ' size_t *' but argument is of type 'long unsigned int *'
make: *** [rmagick.o] Error 1

Gem files will remain installed in d:/redmine/Ruby/lib/ruby/gems/1.9.1/gems/rmagick-2.13.2 for inspection.
Results logged to d:/redmine/Ruby/lib/ruby/gems/1.9.1/gems/rmagick-2.13.2/ext/RMagick/gem_make.out
An error occurred while installing rmagick (2.13.2), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.13.2'` succeeds before bundling.

Il faut donc utiliser une version plus ancienne 6.8.7 qui peut être trouvée sur un des sites miroir [ftp://ftp.sunet.se/pub/multimedia/graphics/ImageMagick/binaries/]s. Dans mon cas, j'ai pris la version Win32 dynamic at 16 bits-per-pixel : « ImageMagick-6.8.7-0-Q16-x86-dll.exe ».

Pour commencer l'installation, lancer l'exécutable « ImageMagick-6.8.7-0-Q16-x86-dll.exe ».

Cliquer sur le bouton « Next > ».

Sélectionner « Iaccept the license ». Puis cliquer sur le bouton « Next > ».

Cliquer sur le bouton « Next > ».

Choisir un dossier d'installation (ici : « D:\redmine\ImageMagick-6.8.7-Q16 »). Puis cliquer sur le bouton « Next > ».

Cliquer sur le bouton « Next > ».

Cocher « Create adesktop icon », « Add application directory to your system path » et « Install developement headers and libraries for C and C++ ». Puis cliquer sur le bouton « Next > ».

Cliquer sur le bouton « Install ».

Attendre la fin de l'installation.

Cliquer sur le bouton « Next > ».

Décocher « View index.html ». Puis cliquer sur le bouton « Finish ».

V - REDMINE

V-A - Installation de Redmine

Télécharger Redmine : http://www.redmine.org/projects/redmine/wiki/Download.

Dézipper le fichier « redmine-2.4.2.zip » (ici dans le dossier « D:\redmine »).

Renommer le dossier « redmine-2.4.2 » en « redmine ».

V-B - Paramétrage de l'accès à la base de données

Copier le fichier « config\database.yml.example » en « config\database.yml ».

Éditer le fichier « config\database.yml » pour qu'il contienne le texte ci-dessous :

# Default setup is given for MySQL with ruby1.9. If you're running Redmine
# with MySQL and ruby1.8, replace the adapter name with `mysql`.
# Examples for PostgreSQL, SQLite3 and SQL Server can be found at the end.
# Line indentation must be 2 spaces (no tabs).

production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: redmine
encoding: utf8

development:
adapter: postgresql
database: redmine_development
host: localhost
username: root
password: ""
encoding: utf8

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: postgresql
database: redmine_test
host: localhost
username: root
password: ""
encoding: utf8

V-C - Paramétrage de la messagerie

Copier le fichier « config\configuration.yml.example » en « config\configuration.yml ».

Éditer le fichier « config\configuration.yml ». Il contient plusieurs exemples de paramétrages de messagerie (avec ou sans authentification, avec sendmail).

Il s'agit ci-dessous du paramétrage de messagerie avec un compte GMail.

# default configuration options for all environments
default:
# Outgoing emails configuration (see examples above)
email_delivery:
delivery_method: :smtp
smtp_settings:

address: smtp.gmail.com
port: 587
domain: example.net
authentication: :login
user_name: pouiller.redmine@gmail.com
password: my_password

V-D - Installation des dépendances gems

Dans le dossier de Redmine, lancer les commandes suivantes :

C:\>d:

D:\>cd \redmine\redmine

D:\redmine\redmine>set CPATH=D:\redmine\ImageMagick-6.8.7-Q16\include
D:\redmine\redmine>set LIBRARY_PATH=D:\redmine\ImageMagick-6.8.7-Q16\lib
D:\redmine\redmine>bundle install --without development test

L'installation donne la trace ci-dessous.

Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies....
Using rake (10.1.1)
Installing i18n (0.6.9)
Installing multi_json (1.8.4)
Installing activesupport (3.2.16)
Installing builder (3.0.0)
Installing activemodel (3.2.16)
Installing erubis (2.7.0)
Installing journey (1.0.4)
Installing rack (1.4.5)
Installing rack-cache (1.2)
Installing rack-test (0.6.2)
Installing hike (1.2.3)
Installing tilt (1.4.1)
Installing sprockets (2.2.2)
Installing actionpack (3.2.16)
Installing mime-types (1.25.1)
Installing polyglot (0.3.3)
Installing treetop (1.4.15)
Installing mail (2.5.4)
Installing actionmailer (3.2.16)
Installing arel (3.0.3)
Installing tzinfo (0.3.38)
Installing activerecord (3.2.16)
Installing activeresource (3.2.16)
Using bundler (1.5.2)
Installing coderay (1.1.0)
Installing rack-ssl (1.3.3)
Installing json (1.8.1)
Installing rdoc (3.12.2)
Installing thor (0.18.1)
Installing railties (3.2.16)
Installing jquery-rails (2.0.3)
Installing net-ldap (0.3.1)
Installing pg (0.17.1)
Installing ruby-openid (2.3.0)
Installing rack-openid (1.4.1)
Installing rails (3.2.16)
Installing rmagick (2.13.2)
Your bundle is complete!
Gems in the groups development and test were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.
Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

V-E - Contrôle des gems

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>gem list

La commande donne la trace ci-dessous.

*** LOCAL GEMS ***

actionmailer (3.2.16)
actionpack (3.2.16)
activemodel (3.2.16)
activerecord (3.2.16)
activeresource (3.2.16)
activesupport (3.2.16)
arel (3.0.3)
bigdecimal (1.1.0)
builder (3.0.0)
bundler (1.5.2)
coderay (1.1.0)
daemons (1.1.9)
erubis (2.7.0)
eventmachine (1.0.3 x86-mingw32)
hike (1.2.3)
i18n (0.6.9)
io-console (0.3)
journey (1.0.4)
jquery-rails (2.0.3)
json (1.8.1, 1.5.5)
mail (2.5.4)
mime-types (1.25.1)
minitest (2.5.1)
multi_json (1.8.4)
net-ldap (0.3.1)
pg (0.17.1 x86-mingw32)
polyglot (0.3.3)
rack (1.5.2, 1.4.5)
rack-cache (1.2)
rack-openid (1.4.1)
rack-ssl (1.3.3)
rack-test (0.6.2)
rails (3.2.16)
railties (3.2.16)
rake (10.1.1, 0.9.2.2)
rdoc (3.12.2, 3.9.5)
rmagick (2.13.2)
ruby-openid (2.3.0)
sprockets (2.2.2)
thin (1.3.1)
thor (0.18.1)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (0.3.38)

Le serveur « thin » 1.3.1 ne fonctionne pas correctement lorsque comme ici la version 1.5.2 de « rack » est installée.

Il faut donc le désinstaller avec la commande suivante.

D:\redmine\redmine>gem uninstall rack

La commande donne la trace ci-dessous (il faut répondre 2 lors du prompt).

1. rack-1.4.5
2. rack-1.5.2
3. All versions
> 2
Successfully uninstalled rack-1.5.2

V-F - Génération de la clé d'encodage des cookies

Redmine utilise une clé d'encodage des cookies afin qu'ils ne puissent pas être falsifiés.

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>rake generate_secret_token

La commande ne génère pas de trace.

V-G - Création des tables

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>set RAILS_ENV=production
D:\redmine\redmine>rake db:migrate

La commande donne la trace ci-dessous (juste la fin de la trace a été recopiée).

...
==  AddAuthSourcesFilter: migrating ===========================================
-- add_column(:auth_sources, :filter, :string)
-> 0.0100s
==  AddAuthSourcesFilter: migrated (0.0100s) ==================================

==  ChangeRepositoriesToFullSti: migrating ====================================
==  ChangeRepositoriesToFullSti: migrated (0.0000s) ===========================

==  AddTrackersFieldsBits: migrating ==========================================
-- add_column(:trackers, :fields_bits, :integer, {:default=>0})
-> 0.0600s
==  AddTrackersFieldsBits: migrated (0.0600s) =================================

==  AddAuthSourcesTimeout: migrating ==========================================
-- add_column(:auth_sources, :timeout, :integer)
-> 0.0000s
==  AddAuthSourcesTimeout: migrated (0.0000s) =================================

==  AddWorkflowsType: migrating ===============================================
-- add_column(:workflows, :type, :string, {:limit=>30})
-> 0.0100s
==  AddWorkflowsType: migrated (0.0100s) ======================================

==  UpdateWorkflowsToSti: migrating ===========================================
==  UpdateWorkflowsToSti: migrated (0.0100s) ==================================

==  AddWorkflowsRuleFields: migrating =========================================
-- add_column(:workflows, :field_name, :string, {:limit=>30})
-> 0.0000s
-- add_column(:workflows, :rule, :string, {:limit=>30})
-> 0.0000s
==  AddWorkflowsRuleFields: migrated (0.0000s) ================================

==  AddBoardsParentId: migrating ==============================================
-- add_column(:boards, :parent_id, :integer)
-> 0.0000s
==  AddBoardsParentId: migrated (0.0000s) =====================================

==  AddJournalsPrivateNotes: migrating ========================================
-- add_column(:journals, :private_notes, :boolean, {:null=>false, :default=>false})
-> 0.2000s
==  AddJournalsPrivateNotes: migrated (0.2000s) ===============================

==  AddEnumerationsPositionName: migrating ====================================
-- add_column(:enumerations, :position_name, :string, {:limit=>30})
-> 0.0000s
==  AddEnumerationsPositionName: migrated (0.0000s) ===========================

==  PopulateEnumerationsPositionName: migrating ===============================
==  PopulateEnumerationsPositionName: migrated (0.0100s) ======================

==  AddQueriesType: migrating =================================================
-- add_column(:queries, :type, :string)
-> 0.0000s
==  AddQueriesType: migrated (0.0000s) ========================================

==  UpdateQueriesToSti: migrating =============================================
==  UpdateQueriesToSti: migrated (0.0200s) ====================================

==  AddAttachmentsDiskDirectory: migrating ====================================
-- add_column(:attachments, :disk_directory, :string)
-> 0.0000s
==  AddAttachmentsDiskDirectory: migrated (0.0000s) ===========================

==  SplitDocumentsPermissions: migrating ======================================
==  SplitDocumentsPermissions: migrated (0.0300s) =============================

==  AddUniqueIndexOnTokensValue: migrating ====================================
-- Adding unique index on tokens, this may take some time...
-- add_index(:tokens, :value, {:name=>"tokens_value", :unique=>true})
-> 0.0400s
-> 0.0500s
==  AddUniqueIndexOnTokensValue: migrated (0.0500s) ===========================

==  AddProjectsInheritMembers: migrating ======================================
-- add_column(:projects, :inherit_members, :boolean, {:null=>false, :default=>false})
-> 0.1600s
==  AddProjectsInheritMembers: migrated (0.1600s) =============================

==  AddUniqueIndexOnCustomFieldsTrackers: migrating ===========================
-- index_exists?(:custom_fields_trackers, [:custom_field_id, :tracker_id])
-> 0.0000s
-- remove_index(:custom_fields_trackers, [:custom_field_id, :tracker_id])
-> 0.0000s
-- add_index(:custom_fields_trackers, [:custom_field_id, :tracker_id], {:unique=>true})
-> 0.0400s
==  AddUniqueIndexOnCustomFieldsTrackers: migrated (0.0500s) ==================

==  AddUniqueIndexOnCustomFieldsProjects: migrating ===========================
-- index_exists?(:custom_fields_projects, [:custom_field_id, :project_id])
-> 0.0000s
-- remove_index(:custom_fields_projects, [:custom_field_id, :project_id])
-> 0.0000s
-- add_index(:custom_fields_projects, [:custom_field_id, :project_id], {:unique=>true})
-> 0.0400s
==  AddUniqueIndexOnCustomFieldsProjects: migrated (0.0500s) ==================

==  ChangeUsersLastnameLengthTo255: migrating =================================
-- change_column(:users, :lastname, :string, {:null=>false, :limit=>255, :default=>""})
-> 0.0000s
==  ChangeUsersLastnameLengthTo255: migrated (0.0000s) ========================

==  AddIssuesClosedOn: migrating ==============================================
-- add_column(:issues, :closed_on, :datetime, {:default=>nil})
-> 0.0000s
==  AddIssuesClosedOn: migrated (0.0000s) =====================================

==  PopulateIssuesClosedOn: migrating =========================================
==  PopulateIssuesClosedOn: migrated (0.0100s) ================================

==  RemoveIssuesDefaultFkValues: migrating ====================================
-- change_column_default(:issues, :tracker_id, nil)
-> 0.0000s
-- change_column_default(:issues, :project_id, nil)
-> 0.0000s
-- change_column_default(:issues, :status_id, nil)
-> 0.0000s
-- change_column_default(:issues, :assigned_to_id, nil)
-> 0.0000s
-- change_column_default(:issues, :priority_id, nil)
-> 0.0000s
-- change_column_default(:issues, :author_id, nil)
-> 0.0000s
==  RemoveIssuesDefaultFkValues: migrated (0.0100s) ===========================

V-H - Remplissage des tables

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>set RAILS_ENV=production
D:\redmine\redmine>set REDMINE_LANG=fr
D:\redmine\redmine>rake redmine:load_default_data

La commande donne la trace ci-dessous.

Default configuration data loaded.

V-I - Test de l'installation

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>thin start -p 3000 -e production

La commande donne la trace ci-dessous.

>> Using rack adapter
>> Thin web server (v1.3.1 codename Triple Espresso)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop

Ouvrir un navigateur internet à l'adresse http://localhost:3000/.

Le compte et mot de passe par défaut sont « admin » / « admin ».

Arrêter thin avec les touches Ctrl+C dans la fenêtre DOS.

V-J - Création d'un service

Dans le dossier de Redmine, lancer la commande suivante :

D:\redmine\redmine>gem install thin_service

La commande donne la trace ci-dessous.

Fetching: thin_service-0.0.5.gem (100%)
Successfully installed thin_service-0.0.5
1 gem installed
Installing ri documentation for thin_service-0.0.5...
Installing RDoc documentation for thin_service-0.0.5...

Ajouter « Redmine::Utils::relative_url_root = "/redmine" » à la fin du fichier « config/environment.rb » dans le dossier de Redmine (ici : « D:\redmine\redmine\config\environment.rb »).

...

# Initialize the rails application
RedmineApp::Application.initialize!
Redmine::Utils::relative_url_root = "/redmine"

La ligne ci-dessus modifie l'URI des ressources CSS et Javascript (au lieu que la base soit « / », elle sera « /redmine »).

Ajouter « gem "i18n" » et « gem "thin" » dans le fichier « Gemfile » dans le dossier de Redmine (ici : « D:\redmine\redmine »).

source 'https://rubygems.org'

gem "rails", "3.2.16"
gem "jquery-rails", "~> 2.0.2"
gem "i18n"
gem "coderay", "~> 1.1.0"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
gem "thin"

Pour être lancer en tant que service, thin doit être indiqué dans le « Gemfile » de Redmine.

Lancer la commande suivante :

D:\redmine\redmine>thin_service install -N RedmineThin -e production -p 3000 --chdir D:\redmine\redmine --prefix /redmine

La commande donne la trace ci-dessous.

RedmineThin service created.

Ouvrir les propriétés du service qui vient d'être créé.

Le passer en type de démarrage « Automatique » et le « Démarrer ». Puis valider avec le bouton « OK ».

Redémarrer l'ordinateur et tester l'adresse http://localhost:3000/redmine.

VI - APACHE HTTP SERVER

VI-A - Installation de Apache HTTP Server

Apache HTTP Server va être installé en tant que proxy pour le serveur thin de Redmine. Les requêtes de type http://localhost/redmine seront redirigées vers http://localhost:3000/redmine.

Télécharger Apache HTTP Server : http://httpd.apache.org/download.cgi.

Pour commencer l'installation, lancer l'exécutable « httpd-2.2.25-win32-x86-no_ssl.msi ».

Cliquer sur le bouton « Next > ».

Sélectionner « Iaccept the license ». Puis cliquer sur le bouton « Next > ».

Cliquer sur le bouton « Next > ».

Saisir les informations. Puis cliquer sur le bouton « Next > ».

Sélectionner « Typical ». Puis cliquer sur le bouton « Next > ».

Choisir le dossier d'installation (ici : « D:\redmine\Apache2.2\ »). Puis cliquer sur le bouton « Next > ».

Cliquer sur le bouton « Install ».

Attendre la fin de l'installation.

Cliquer sur le bouton « Finish ».

VI-B - Paramétrage de proxy

Ouvrir le fichier « http.conf » d'Apache (ici dans le dossier « D:\redmine\Apache2.2\conf »). Vérifier que la ligne ci-dessous n'est pas commentée.

LoadModule alias_module modules/mod_alias.so

Ajouter la ligne ci-dessous à la fin du fichier.

Include conf/http-proxy.conf

Créer dans le même dossier le fichier « http-proxy.conf » (en adaptant au besoin le dossier d'installation de Redmine).

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

ProxyRequests Off
<proxy>
Order deny,allow
Allow from all
</proxy>

Alias /redmine "D:/redmine/redmine/public"
<directory "D:/redmine/redmine/public">
Options Indexes FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</directory>

ProxyPass /redmine/images !
ProxyPass /redmine/stylesheets !
ProxyPass /redmine/javascripts !
ProxyPass /redmine http://127.0.0.1:3000/redmine
ProxyPassReverse /redmine/ http://127.0.0.1:3000/redmine

Redémarrer le serveur HTTP Apache (par exemple avec le lien dans le menu démarrer). Tester l'adresse http://localhost/redmine.

Attention : le pare-feu de Windows peut bloquer certaines requêtes. En cas de doutes, le plus simple est de le désactiver pour voir s'il est en cause  puis le réactiver afin de chercher le paramétrage adéquat.

VII - CONCLUSION

Ce tutoriel ne demande pas de compétences particulières car il suffit de suivre pas à pas. Cependant l'installation de Redmine n'est pas triviale. Pour une installation simple, il est possible d'utiliser BitNami Redmine Stack.

VIII - REMERCIEMENTS

Je remercie très sincèrement :

- www.developpez.com qui me permet de publier cet article ;

- Nono40 et djibril pour leurs outils ;

- Lana Bauer pour sa relecture technique ;

- Feanorin pour sa relecture technique ;

- Philippe DUVAL pour sa correction orthographique.