====== Dépendances ======
Avant tout, mettons à jour notre système Ubuntu :
sudo apt-get update
sudo apt-get upgrade
Installons ensuite les outils qui seront utilisés par notre Redmine :
sudo apt-get install apache2 sqlite3 git curl
Si nous détaillons un peu plus :
* Apache2 sera notre serveur Web
* sqlite3 sera le moteur de base de données
* git est un outil de gestion de conf (parmi d'autres comme mercurial, svn, cvs,...)
* curl sera utilisé lors de l'installation pour transférer des données depuis internet
Redmine est basé sur Ruby On Rails qui est un framework Web. Ruby On Rails a également un certain nombre de dépendances qu'il faut combler mais que nous ne détaillerons pas ici :
sudo apt-get install gawk libreadline6-dev zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev \
autoconf libgdbm-dev libncurses5-dev automake libtool bison pkg-config libffi-dev libmagickwand-dev
Apache, le serveur Web, a besoin d'un module pour exécuter des applications Ruby On Rails comme Redmine. Il faut donc aussi installer les dépendances de ce module :
sudo apt-get install libcurl4-gnutls-dev apache2-threaded-dev libapr1-dev libaprutil1-dev
====== Installation ======
Il faut ajouter un utilisateur qui exécutera le serveur Redmine et dont le répertoire personnel contiendra l'ensemble de son arborescence. Pour plus de simplicité nous nommerons cet utilisateur redmine dans la suite de cet article.
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'redmine' \
--gid `grep "sudo" /etc/group|cut -d: -f3`\
--home /opt/redmine \
redmine
===== En tant qu'utilisateur redmine =====
Une fois cet utilisateur créé, identifiez vous avec son compte :
sudo su - redmine
==== Ruby On Rails ====
Nous allons installer Ruby via RVM (Ruby Version Manager). Récupérons et installons d'abord RVM :
curl -L https://get.rvm.io | bash -s stable
echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bashrc
. ~/.bashrc
Nous n'aurons pas besoin de générer la documentation des composants Ruby donc désactivons cette génération par défaut :
echo "gem: --no-rdoc --no-ri" >> ~/.gemrc
Installons maintenant Ruby et Rails à leur dernière version stable :
rvm get stable --ruby --rails
Une fois installé, Ruby nous fournit un outil permettant de gérer ses composants à la manière de package appelés Gems. Cet outil nommé RubyGems est utilisé via la commande gem. Installons donc notre première Gem, bundler, qui va permettre de rechercher et d'installer les Gems nécessaires à un projet :
Les Gems d'un projet sont spécifiées dans le fichier Gemfile du projet.
gem install bundler
==== Redmine ====
Sur [[http://www.redmine.org/projects/redmine/wiki/Download|cette page]], vous trouverez le lien de la dernière version de Redmine (en l'occurence la 2.5.2). Il ne reste plus quà la télécharger et extraire l'archive :
wget http://www.redmine.org/releases/redmine-2.5.2.tar.gz
tar xzf redmine-2.5.2.tar.gz
ln -s redmine-2.5.2 redmine
Rentrons dans le répertoire fraîchement extrait et préparons la configuration de la base de données en nous basant sur le fichier d'exemple fourni.
cd redmine/
cp config/database.yml.example config/database.yml
Sachant que nous utilisons sqlite3 comme moteur de base de données, celle-ci sera réprésentée par un simple fichier que nous nommerons dans le fichier config/database.yml :
production:
adapter: sqlite3
database: db/redmineGeonobot.sqlite3
Nous avons installé bundler précédemment, il est maintenant temps de l'utiliser pour installer toutes les Gems requises par notre Redmine :
L'option --without permet d'enlever de la liste des Gems dont nous ne nous servirons pas.
bundle install --without development test postgresql mysql
Pour sécuriser les données de session, nous allons générer une clé de cryptage :
rake generate_secret_token
Il ne reste plus à qu'à initialiser la base de données de Redmine. Rails pouvant définir plusieurs environnements (production, development, test), nous spécifions ici que nous voulons l'environnement de production.
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data
==== Passenger ====
Comme évoqué au début de cet article, Passenger est le module Apache qui va nous permettre d'exécuter des applications Ruby On Rails sur le serveur web. Passenger étant une Gem, nous allons l'installer et créer le module pour notre utilisateur redmine :
gem install passenger
passenger-install-apache2-module
Nous avons terminé l'installation à effectuer par notre utilisateur redmine. C'est à l'administrateur de la machine de prendre le relais :
exit
===== En tant qu'administrateur =====
==== Apache =====
Il faut maintenant dire à Apache où trouver le module Passenger que nous avons installé précédemment :
Attention le chemin peut différer selon les versions de Passenger et de Ruby que vous avez installé.
Contenu de **/etc/apache2/mods-available/passenger.conf** :
PassengerRoot /opt/redmine/.rvm/gems/ruby-2.0.0-p481/gems/passenger-4.0.45
PassengerDefaultRuby /opt/redmine/.rvm/wrappers/ruby-2.0.0-p481/ruby
Il faut également lui demander de charger ce module en éditant le fichier **/etc/apache2/mods-available/passenger.load** :
LoadModule passenger_module /opt/redmine/.rvm/gems/ruby-2.0.0-p481/gems/passenger-4.0.45/buildout/apache2/mod_passenger.so
Il reste à configurer notre Redmine dans Apache via le fichier **/etc/apache2/sites-available/redmine.conf**. Vous noterez que nous forçons l'utilisation du HTTPS pour sécuriser les connexions :
ServerName redmineServer
DocumentRoot /opt/redmine/redmine/public
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=permanent]
Require all granted
Options -MultiViews
ServerName redmineServer
DocumentRoot /opt/redmine/redmine/public
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/redmine.crt
SSLCertificateKeyFile /etc/apache2/ssl/redmine.key
Require all granted
Options -MultiViews
Comme nous utilisons HTTPS il faut générer les certificats SSL permettant d'encrypter les communications avec le serveur :
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/apache2/ssl/redmine.key -out /etc/apache2/ssl/redmine.crt
Il ne reste plus qu'à désactiver le site par défaut fourni avec Apache et le remplacer par notre Redmine :
sudo a2dissite 000-default
sudo a2ensite redmine
Sans oublier d'activer le module Passenger que nous avons configuré précédemment, ainsi que le module ssl pour la connexion sécurisée et le module rewrite pour la redirection d'url HTTP vers HTTPS :
sudo a2enmod passenger rewrite ssl
La configuration d'Apache étant terminée, rechargeons le pour appliquer les changements :
sudo service apache2 restart
Notre serveur Redmine est désormais installé et devrait être accessible en HTTP. En imaginant que notre serveur se nomme **myredmineserver.home**, vous devriez y accéder via l'URL [[http://myredmineserver.home]] qui vous redirigera vers [[https://myredmineserver.home]]