Installer Redmine sur Debian avec RVM

De Analyse Développement Hacking
Sauter à la navigation Sauter à la recherche
Naviguer dans ce wiki : Accueil du wiki - Objectifs - Administrateur - Développeur - Intégrateur - Jeux - Marketing - Multimédia - Objets numériques - We make Hack
Consulter le site : Accueil du site - Annuaire - Blog - Forum - Outils - Utilisateur     Consulter le Redmine : Accueil du Redmine

Sommaire

Installer Redmine sur Debian avec RVM

Introduction

Pour éviter les problèmes de dépendances liées au différentes versions de Ruby, on décide d’installer un utilitaire qui s’appelle RVM.
Il permet de faire coexister plusieurs installations de Ruby sur une même machine, tout en séparant l’installation des gems.
RVM permet de pouvoir mettre à jour Ruby facilement.

Commentaire sur le tutoriel qui va suivre

Le premier tutoriel complet qui m'a permis d'installer Redmine sur Debian depuis le dépôt officiel de Debian : Installer Redmine sur Debian.
Un très long tutoriel, plutôt complet ! Attention, vérifier la justesse des droits qui sont appliqués.
Il est également nécessaire de re vérifier la qualité du script de chiffrement des sauvegardes.
Hormis cela, l'installation est fonctionnelle et détaillée.
Mes précédents essais qui ont été infructueux pour installer Redmine avec RVM : Installer Redmine sur Debian avec RVM ne fonctionne pas.
On préférera l'utilisation de RVM pour ne pas dépendre de la version des gems du dépôt officiel de Debian.
Je n'était pas sur de la façon d'installer et de valider la configuration de Passenger.
Je rencontrais également des problèmes pour afficher Redmine qui rendait une page 403.
Entre temps, j'ai pu réaliser une installation fonctionnelle de Redmine avec RVM.
Utiliser RVM permet d'installer et de maintenir Redmine sur la durée.
Le tutoriel utilisé ci-dessous date de 2015 a été revu par Visionduweb en 2019 !
Redmine 4.0 installé avec RVM est parfaitement fonctionnel ! Merci The Linux Chronicles !
Le tutoriel suivant est mis en pratique sous une Debian 9 Stretch AMD64 Stable depuis VirtualBox !

Installation

Prérequis

Tutoriel utilisé

Ok.png Parallel Redmine Installations : http://thelinuxchronicles.blogspot.com/2015/03/parallel-redmine-installations.html
Un excellent tutoriel qui m'aura permis de finaliser une installation propre de RVM pour installer Redmine.

Créer un domaine fictif dans le cas d'un test sur une machine locale

# Le domaine fictif permettra de consulter Redmine localement depuis le navigateur.
# Ouvrir le fichier /etc/hosts en tant que root.
su
nano /etc/hosts
# Ajouter la deuxième ligne.
127.0.0.1       localhost
127.0.0.1       redmine.fictif.fr

Installer les paquets

sudo apt-get install mariadb-server libmariadbclient-dev apache2 apache2-dev libapr1-dev libaprutil1-dev libcurl4-gnutls-dev libmagickwand-dev imagemagick build-essential dirmngr curl

Installation

Créer un utilisateur Redmine

En root
su
adduser --home /opt/redmine redmine
(Password redmine)
gpasswd -a redmine sudo
Passer à l'utilisateur Redmine.
su - redmine

Install RVM

# Passer à l'utilisateur redmine.
su - redmine
# Ajouter les clés de RVM.
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
# Installer RVM Stable.
curl -sSL https://get.rvm.io | bash -s stable
# Démarrer RVM.
source /opt/redmine/.rvm/scripts/rvm

Préparer la base de données

En root.
su
mysql -uroot -p
create database redmine_production character set utf8;
create user 'redmine'@'localhost' identified by 'redmine_mysql_user_password';
grant all privileges on redmine_production.* to 'redmine'@'localhost';
flush privileges;
exit

Installer Redmine depuis Git

su - redmine
wget https://codeload.github.com/redmine/redmine/zip/4.0-stable
unzip 4.0-stable
sudo rm 4.0-stable
ls
redmine-4.0-stable
# Créer un lien vers un dossier "active".
# Permet d'installer une nouvelle version de redmine par exemple dans le dossier redmine-4-1-stable et d'activer ce nouveau dossier comme étant le dossier actif.
ln -s redmine-4.0-stable active
# On pourrait ici gérer plusieurs Redmine pour plusieurs sites.
# Créer redmine-4.0-stable-site1 et redmine-4.0-stable-site2
# Créer alors deux liens ln -s redmine-4.0-stable redmine-site1 et ln -s redmine-4.0-stable redmine-site2

Configurer Redmine

su - redmine
cd redmine-4.0-stable
cp config/database.yml.example config/database.yml
cp config/configuration.yml.example config/configuration.yml
Éditer la base de données.
nano config/database.yml
production:
  adapter: mysql2
  database: redmine_production
  host: localhost
  username: redmine
  password: "redmine_mysql_user_password"
  encoding: utf8
sudo chown -R www-data files log tmp public/plugin_assets
sudo chmod -R 0775 files log tmp public/plugin_assets

Installer Ruby et Gems

Toujours avec l'utilisateur redmine.
su - redmine
cd ~
rvm install 2.4
( Install of ruby-2.4.5 - #complete )
rvm gemset create redmine-4.0-stable
# Créer un seul gemset pour un ou plusieurs projet.
# Créer un deuxième gemset pour tester le passage à une nouvelle version de Ruby.
# Je n'ai pas encore pu tester si il est possible d'utiliser plusieurs gemset différents, sachant qu'il faudra pouvoir charger Passenger par la suite, avec la configuration spécifique à un gemset.
# Pour mettre en place plusieurs instances séparées de Redmine, j'utilise le même gemset, mais, un dossier et une base de données pour chaque projet Redmine à déployer.

Sélectionner le bon gemset

Lister les gemsets disponibles
rvm list gemsets
Affiche :
rvm gemsets

=> ruby-2.4.5 [ x86_64 ]
   ruby-2.4.5@global [ x86_64 ]
   ruby-2.4.5@redmine-4.0-stable [ x86_64 ]
Modifier pour ruby-2.4.5@redmine-4.0-stable [ x86_64 ]
rvm use gemset ruby-2.4.5@redmine-4.0-stable
Affiche :
Using /opt/redmine/.rvm/gems/ruby-2.4.5 with gemset redmine-4.0-stable
On vérifie si le changement a bien été appliqué :
rvm list gemsets
Affiche :
rvm gemsets

   ruby-2.4.5 [ x86_64 ]
   ruby-2.4.5@global [ x86_64 ]
=> ruby-2.4.5@redmine-4.0-stable [ x86_64 ]

Installer les Gems pour Redmine

Toujours avec l'utilisateur redmine
cd redmine-4.0-stable/
bundle install --without develop,test,postgresql,sqlite
( Toutes les gems sont au vert, sauf Using bundler 1.16.6 qui est affiché en blanc. )
gem install passenger

RMV et bundler intégration

Toujours avec l'utilisateur redmine
cd ~
Cette étape est nécessaire car nous allons utiliser un bundle pour installer les gems requises de Redmine.
gem regenerate_binstubs
Affiche :
try also: gem pristine --binstubs
bundler 1.16.6
nokogiri 1.10.2
passenger 6.0.2
puma 3.12.1
rack 2.0.6
railties 5.2.2.1
rake 12.3.2
rake 12.0.0
rdoc 5.0.0
redcarpet 3.4.0
rouge 3.3.0
sprockets 3.7.2
thor 0.20.3
yard 0.9.18
# Aucune idée si la commande a été prise en compte ou non.

Installer Phusion Passenger

Toujours avec l'utilisateur redmine
cd redmine-4.0-stable/
passenger-install-apache2-module
Choix 1 entrée Je laisse ruby et python de pré configuré puis à nouveau entrée.
Configurer Apache Passenger.
La commande précédente affiche les informations suivantes après avoir exécuté son code :
Please edit your Apache configuration file, and add these lines:

# Il y a une seule instance Passenger par Apache, il est donc logique de définir PassengerRoot une seule fois dans la configuration Apache.
# Apache affichera des avertissements si vous essayez de déclarer des options globales à un niveau inférieur tel que <VirtualHost>.
# La valeur deviendrait ambiguë et la première section <VirtualHost> à recevoir une demande déterminerait la valeur finale.

LoadModule passenger_module /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
  PassengerRoot /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/passenger-6.0.2
  PassengerDefaultRuby /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/wrappers/ruby
</IfModule>
# Quand nous voudrons passer d’une installation Redmine à une installation Ruby + Gems séparée, nous aurons des modules passenger séparés pour chacune d’elles.
# Créer un fichier de configuration sous /etc/apache2/conf-available nommé passenger-ruby-2.4.5@redmine-4.0-stable qui se connecte au module de passenger.
# Créer un lien depuis le dossier /etc/apache2/conf-enable/ pour activer le module avec ln -s ../conf-available/passenger-ruby-2.4.5@redmine-4.0-stable passenger-ruby-2.4.5@redmine-4.0-stable

# Sinon, il suffit simplement de charger la configuration proposée directement au début du fichier /etc/apache2/apache2.conf
sudo nano /etc/apache2/apache2.conf
# Ajouter la ligne LoadModule également, même si l'installeur nous dit, semble t'il, de ne pas le faire.
# Redémarrer Apache2
sudo /etc/init.d/apache2 restart
# Terminer l'installation précédente avec la touche entrée depuis la première fenêtre pour finaliser cette installation.
# Si les contrôles ne sont pas passés au vert, relancer l'installation précédente jusqu'à valider les tests.
# Normalement tout c'est bien passé et les contrôles sont au vert.
# La commande suivante permet de vérifier si la configuration est correcte.
passenger-config validate-install
# Noter que dans le cas d'instances multiples de Redmine, j'ai relancé cette étape dans le second dossier pour un second Redmine que je mettais en place.
# J'ai utilisé le même gemset que celui utilisé au premier déploiement de Redmine, je me suis placé dans le dossier du second Redmine.
# Au lancement du script, j'ai lancé l'étape numéro 2 il me semble, apprendre à utiliser (...) et j'ai laissé la compilation ce faire.
# Je n'ai pas compris pourquoi une compilation a été faite, j'ai peut être choisi le choix 1 malgré tout.
# Une fois la compilation finie, ne rien faire de plus pour cette étape, le module ayant déjà été chargé pour le premier Redmine.

Configurer le VirtualHost

Toutes les références au chemin Redmine utilisent le lien symbolique " active " au lieu d'utiliser directement le répertoire Redmine.
De cette manière, il suffit de pointer le lien symbolique vers le bon répertoire de Redmine pour basculer entre les versions de Redmine. Un seul fichier VirtualHost est alors nécessaire.
Je crée le fichier redmine.conf dans le dossier des sites disponibles pour Apache2 :
cd /etc/apache2/sites-available
sudo nano redmine.conf
<VirtualHost *:80>
ServerAdmin admin@domain.sample
ServerName redmine.fictif.fr

DocumentRoot /opt/redmine/active/public/
RailsBaseURI /
PassengerAppRoot /opt/redmine/active
PassengerUser www-data
PassengerGroup www-data

<Directory /opt/redmine/active/public/>
Options +Indexes +FollowSymLinks -MultiViews
AllowOverride All
# Je commente les lignes pour Apache 2.2. 
# Order allow,deny
# Allow from all
# Je remplace par les lignes pour Apache 2.4
Require all granted
</Directory>
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/redmine.error.log
CustomLog ${APACHE_LOG_DIR}/redmine.access.log combined
</VirtualHost>
Activer le site.
sudo a2ensite redmine.conf
Redémarrer Apache2 pour prendre en compte le VirtualHost.
sudo /etc/init.d/apache2 restart

Générer la migration

Depuis l'utilisateur redmine dans le dossier de redmine stable :
cd redmine-4.0-stable/
rake generate_secret_token
RAILS_ENV=production rake db:migrate
L’étape rake redmine: load_default_data n’est nécessaire que lors d’une nouvelle installation.
Ignorer cette étape si vous utilisez une base de données Redmine déjà existante (ou importée d'un dump).
RAILS_ENV=production rake redmine:load_default_data
Le rake redmine: plugins: migrate est nécessaire uniquement si vous utilisez des plugins supplémentaires.
RAILS_ENV=production rake redmine:plugins:migrate

Conclusion

Redmine est fonctionnel !
Ce tutoriel est validé en 2019 sous Debian Stretch 9 AMD64 Stable avec RVM pour une installation de Redmine 4.0.
Mon commentaire sur le site qui présente le tutoriel d'origine
J'ai listé et testé plusieurs tutoriels pour installer RVM sur Debian pour installer Redmine mais aucun ne m'a permis d'aboutir l'installation.
Ce tutoriel de qualité, qui n'a presque pas bougé en 4 ans, m'a permis d'installer RVM pour Redmine.
J'ai rédigé en français une mise à jour 2019 de ce tutoriel, qui prend en compte quelques correctifs pour une installation fonctionnelle sur Debian 9 Stretch AMD64 Stable.
Voilà le lien en français : https://wiki.visionduweb.fr/index.php?title=Installer_Redmine_sur_Debian_avec_RVM
Merci de bien vouloir prendre le temps de consulter mes remarques, mes améliorations, et, mes questions, si tu sais me répondre, ton aide serait très précieuse.
Voilà mes remarques :
1)
Les clés semblent avoir évoluées pour RVM ?
Utiliser simplement les deux lignes suivantes :
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
OK
Voilà mes améliorations :
0)
Les paquets ont été mis à jour pour MariaDB + dirmngr + cURL !
sudo apt-get install mariadb-server libmariadbclient-dev apache2 apache2-dev libapr1-dev libaprutil1-dev libcurl4-gnutls-dev libmagickwand-dev imagemagick build-essential dirmngr curl
OK
1)
nano /etc/hosts
# Ajouter la ligne.
127.0.0.1       redmine.fictif.fr
Je remplacerais dans le VirtualHost la ligne du ServerName par ServerName redmine.fictif.fr
Je remplacerais aussi les deux lignes Order allow,deny et Allow from all par Require all granted pour Apache 2.4.
OK
2)
La commande suivante permet de vérifier la configuration de passenger, après avoir lancé passenger-install-apache2-module !
Si tout est au vert, c'est que passenger est bien configuré.
passenger-config validate-install
OK
3)
Installation de la version 4.0 de Redmine avec RVM 2.4
OK
4)
Tu as oublié de préciser, pour les débutants, ou créer et comment créer le VirtualHost.
Je crée le fichier redmine.conf dans le dossier des sites disponibles pour Apache2 :
cd /etc/apache2/sites-available
sudo nano redmine.conf
OK
5)
Idem, pour activer le VirtualHost. Activer le site.
sudo a2ensite redmine.conf
Redémarrer Apache2 pour prendre en compte le VirtualHost.
sudo /etc/init.d/apache2 restart
OK
IMPORTANT : Les problèmes rencontrés :
1)
Suite à l'installation de passenger-install-apache2-module tu proposes de créer un fichier de configuration sous /etc/apache2/conf-available nommé passenger-ruby-2.4.5@redmine-4.0-stable
Je n'arrive PAS à charger cette configuration qui reste au rouge.
J'ai du ajouter la configuration dans /etc/apache2/apache2.conf
Une idée du pourquoi ?
RÉPONSE : Il faut faire un lien symbolique depuis le dossier des configurations enable.
Je ne sais toujours pas si il est possible de charger et d'utiliser deux configurations de passenger utilisant un gemset différent. 
IMPORTANT : Mes questions :
1)
Est t'il normal que la commande suivante affiche cela ?
gem regenerate_binstubs
Affiche :
try also: gem pristine --binstubs
bundler 1.16.6
nokogiri 1.10.2
...
Je ne sais toujours pas. !!??!!??
2)
Peux tu m'expliquer comment faire, si j'ai une base de données d'une version précédente de Redmine, pour la mettre à jour !?
Je dois utiliser RAILS_ENV=production rake db:migrate ?
RÉPONSE : Oui.
N'y a t'il pas aussi une étape pour vider le cache session ou autres choses ?
RÉPONSE : Je n'ai as eu besoin de faire ce type de manipulation pour charger une base de données.

Réimporter Redmine

Les éléments suivants sont nécessaire pour réinstaller une sauvegarde, ou, pour faire une mise à jour.
Réimporter le fichier de configuration
Deux fichiers sont présents, je ne suis pas sur qu'il faille sauvegarder les deux.
C'est le fichier configuration.yml que l'on importe au début lors de l'installation, c'est sûrement ce fichier la qui est essentiel.
# Comprend notamment le paramétrage pour l'adresse mail utilisée sur le site.
configuration.yml
# D'autres configurations complémentaires.
settings.yml
Réimporter le fichier de configuration de la base de données
Sauvegarder puis réinstaller database.yml.
Réimporter une base de données de Redmine et la mettre à jour
Récupérer la base de données d'une version antérieur de Redmine, ici, la version de ma sauvegarde de Redmine 3.4.6 est mise à jour pour correspondre à la version de la base de données de Redmine 4.0.
su
sudo mysql -u root redmine_production < sql.sql
exit
su - redmine
# On liste les gems disponibles.
rvm gemsets
# On choisi le gemset qui a été créé pour redmine.
rvm use gemset ruby-2.4.5@redmine-4.0-stable
# On se place dans le dossier de Redmine.
cd redmine-4.0-stable/
# On met à jour la base de données.
RAILS_ENV=production rake db:migrate
# Va afficher :
== 20170723112801 RenameCommentsToContent: migrating ==========================
-- rename_column(:comments, :comments, :content)
   -> 0.0248s
== 20170723112801 RenameCommentsToContent: migrated (0.0249s) =================

== 20180913072918 AddVerifyPeerToAuthSources: migrating =======================
-- change_table(:auth_sources)
   -> 0.0490s
== 20180913072918 AddVerifyPeerToAuthSources: migrated (0.0494s) ==============

== 20180923082945 ChangeSqliteBooleansTo0And1: migrating ======================
== 20180923082945 ChangeSqliteBooleansTo0And1: migrated (0.0000s) =============

== 20180923091603 ChangeSqliteBooleansDefault: migrating ======================
== 20180923091603 ChangeSqliteBooleansDefault: migrated (0.0000s) =============
Réimporter les fichiers
su - redmine
cd redmine-4.0-stable/files
# Donner les droits apache2 au(x) dossier(s) contenant les fichiers.
sudo chown www-data:www-data -R 2018/

Script pour sauvegarder Redmine

Révision par Zer00CooL : https://gist.github.com/ZerooCool/b06925403f94960e32c3c52f2db81b01

Première utilisation

Changer le favicon.ico de Redmine

Le favicon.ico de Redmine se trouve dans le dossier public.
Changer le favicon.ico et il sera immédiatement pris en compte par Redmine.
/opt/redmine/redmine-4.0-stable-prod-vdw/public/favicon.ico

Changer le logo de Redmine

Le logo de Redmine se trouve dans le dossier du themes utilisé.
/opt/redmine/redmine-4.0-stable-prod-vdw/public/themes/circle/images/
file logo.png
logo.png: PNG image data, 38 x 40, 8-bit/color RGBA, non-interlaced

Configurer le système de mails

# Configurer l’envoi de mails depuis le fichier : config/configuration.yml
# Deux premières lignes deux espaces, puis, quatre espaces aux lignes suivantes.
# Conserver les espaces sinon le site ne charge pas et un message d'erreur est affiché.
# Pour un mail OVH :
  delivery_method: :smtp
  smtp_settings:
      enable_starttls_auto: true
      address: ssl0.ovh.net
      port: 587
      domain: visionduweb.fr
      authentication: :login
      user_name: LEMAIL@visionduweb.fr
      password: LE_MOT_DE_PASSE
      openssl_verify_mode: 'none'
# Pour un autre fournisseur de mail :
Configurer son mail pour un fournisseur autre que OVH.
# Après chaque modification, redémarrer Apache2 pour appliquer les changements.
sudo /etc/init.d/apache2 restart

Patcher la CSS principale

Une fois le premier projet créé avec un sous projet par exemple, l'affichage du tableau est divisé sur 4 colonnes ce qui donne un vieux rendu non responsive à Redmine.
Ajouter display: inline-flex; à la ligne 599 dans le fichier application.css par défaut.
cd /opt/redmine/redmine-4.0-stable-prod-vdw/public/stylesheets
sudo nano application.css

Bibliographie

Ce tutoriel est partagé sur le wiki officiel de Debian

Ok.png Ce tutoriel Installer Redmine sur Debian avec RVM a été ajouté sur le wiki de Debian : https://wiki.debian.org/Redmine#Installer_RVM_pour_installer_et_utiliser_Redmine

Mise à jour de Redmine

Ok-ko.png Redmine Upgrade : http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

Instances multiples

# Ressources complémentaires :
Ko.png Deploying a Ruby application on Passenger + Apache : https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/#deploying-an-app-to-a-virtual-host-s-root
Ko.png How to boot multiple Rails apps on Apache2 with a shared Passenger gem : https://stackoverflow.com/questions/10422047/how-to-boot-multiple-rails-apps-on-apache2-with-a-shared-passenger-gem
Ko.png Multiple instance of redmine does not work with passenger  : https://bugs.launchpad.net/ubuntu/+source/redmine/+bug/624598
Ko.png Multiple instances of redmine on Debian squeeze : http://www.redmine.org/boards/1/topics/16647

NAVIGATION

PARTICIPER ET PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Télécharger le sommaire au format PDF pour le consulter en étant déconnecté du réseau.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur le wiki avec un don en monnaie numérique :
AEON - Bitcoins - Bitcoins Cash - Bitcoins Gold - Bitcore - Blackcoins - Basic Attention Token - Bytecoins - Clams - Dash - Monero - Dogecoins - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.
Miroir PlanetHoster du 11 Mars 2019.