IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Installation du gestionnaire de projets Redmine sous Windows

Image non disponible

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 : [24 commentaires Donner une note à l´article (5)]

Article lu   fois.

L'auteur

Profil ProHomeViadeoLinkedIn

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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

I-D. Versions des logiciels

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

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Suivant > ».

Image non disponible

Attendre la fin de l'installation.

Image non disponible

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

Image non disponible

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

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

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
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 ».

Image non disponible

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

Image non disponible

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

Image non disponible

Attendre la fin de l'installation.

Image non disponible

Cliquer sur le bouton « Finish ».

Image non disponible

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

Image non disponible

Attendre la fin de l'installation.

Image non disponible

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

 
Cacher/Afficher le codeSélectionnez
C:\>d:

D:\>cd \redmine\dk

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

L'installation donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
[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 :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\dk>ruby dk.rb install

L'installation donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
[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.

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
C:\>d:

D:\>cd \redmine\Ruby

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

L'installation donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\Ruby>gem install bundler -v 1.5.2

L'installation donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\Ruby>gem install thin -v 1.3.1

L'installation donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
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).

 
Sélectionnez
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 > ».

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Next > ».

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Next > ».

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Install ».

Image non disponible

Attendre la fin de l'installation.

Image non disponible

Cliquer sur le bouton « Next > ».

Image non disponible

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

Image non disponible

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 :

 
Cacher/Afficher le codeSélectionnez
# 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.

 
Cacher/Afficher le codeSélectionnez
# 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 :

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\redmine>gem list

La commande donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
*** 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.

 
Cacher/Afficher le codeSélectionnez
D:\redmine\redmine>gem uninstall rack

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

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
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).

 
Cacher/Afficher le codeSélectionnez
...
==  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 :

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
Default configuration data loaded.

V-I. Test de l'installation

Dans le dossier de Redmine, lancer la commande suivante :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\redmine>thin start -p 3000 -e production

La commande donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
>> 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/.

Image non disponible

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

Image non disponible
Image non disponible

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 :

 
Cacher/Afficher le codeSélectionnez
D:\redmine\redmine>gem install thin_service

La commande donne la trace ci-dessous.

 
Cacher/Afficher le codeSélectionnez
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 »).

 
Cacher/Afficher le codeSélectionnez
...

# 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 »).

 
Cacher/Afficher le codeSélectionnez
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 :

 
Cacher/Afficher le codeSélectionnez
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.

 
Cacher/Afficher le codeSélectionnez
RedmineThin service created.

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

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Next > ».

Image non disponible

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

Image non disponible

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

Image non disponible

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

Image non disponible

Cliquer sur le bouton « Install ».

Image non disponible

Attendre la fin de l'installation.

Image non disponible

Cliquer sur le bouton « Finish ».

Image non disponible

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.

 
Cacher/Afficher le codeSélectionnez
LoadModule alias_module modules/mod_alias.so

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

 
Cacher/Afficher le codeSélectionnez
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).

 
Cacher/Afficher le codeSélectionnez
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 :

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2013 Régis POUILLER. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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. Droits de diffusion permanents accordés à Developpez LLC.