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 :
Sur le site du DevKit 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.