Installer Redmine sur Debian avec RVM

De Wiki Amis SH
Aller à la navigation Aller à la recherche



Le wiki : Accueil - Administrateur - Bureautique - Développeur - Intégrateur - Marketing - Multimédia - Objets numériques - Jeux - We make Hack


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.
La première installation est fonctionnelle mais je n'arriverais pas a installer de plugins.
Mes premiers essais ont été infructueux pour installer Redmine avec RVM : Installer Redmine sur Debian avec RVM ne fonctionne pas.
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.
Cette installation fonctionnelle est présentée ci-dessous et permet d'installer des plugins pour Redmine.
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.
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

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

# Par défaut, sur Debian Stretch :
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
# Par défaut, sur Debian Buster, avec Apache2 et MariaDB Serveur déjà installés :
sudo apt install libmariadbclient-dev apache2-dev libapr1-dev libaprutil1-dev libcurl4-gnutls-dev libmagickwand-dev imagemagick build-essential dirmngr curl

Installation

Créer un utilisateur Redmine

sudo su root
adduser --home /opt/redmine redmine
# Utiliser le mot de passe "redmine"
# Ajouter l'utilisateur redmine au groupe des sudoers :
gpasswd -a redmine sudo
# Passer à l'utilisateur Redmine.
su - redmine

Préparer la base de données

# De préférence, s'assurer que la base de données a bien été sécurisée en lançant le paquet mysql_secure_installation
# Définir un nouveau mot de passe pour l'utilisateur root de mariaDB.
# 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;
# Importer une base de données existante dans Redmine :
mysql -u redmine -predmine_mysql_user_password -h localhost -D redmine_production < backup.sql

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

Installer Redmine depuis Git

su - redmine
# Télécharger Redmine 4.0 :
wget https://codeload.github.com/redmine/redmine/zip/4.0-stable
# Décompresser Redmine 4.0 :
unzip 4.0-stable
# Supprimer l'archive :
rm 4.0-stable
ls
# Affichera :
redmine-4.0-stable
# Pour télécharger la version de Redmine 4.1 stable :
wget https://codeload.github.com/redmine/redmine/zip/4.1-stable
# Pour installer un seul Redmine :
# 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
# Pour installer plusieurs Redmine pour différents sites :
# Je recommanderais de conservé le dossier initial de la version stable, qui va servir par la suite pour sélectionner le Gemset à utiliser. Ainsi, on utilisera un nom de Gemset généraliste.
# Copier le dossier redmine-4.0-stable en redmine-4.0-stable-site1 et redmine-4.0-stable-site2
# Créer alors deux liens symboliques ln -s redmine-4.0-stable-site1 redmine-site1 et ln -s redmine-4.0-stable-site2 redmine-site2

Configurer Redmine

# S'identifier à nouveau avec l'utilisateur 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 ~
# Si on installe la 2.4, c'est la dernière version stable pour la version 2.4 sera proposée, ce sera la 2.4.6 lors de la dernière mise à jour du tutoriel.
# Lors de l'installation sur Stretch, c'est la version 2.4.5 qui est configurée.
# Lors de l'installation sur Buster, c'est la version 2.4.6 qui est configurée.
# Il est possible de définir la version de Ruby a installer pour la 2.4.5 si nécessaire.
# rvm install 2.4.5
rvm install 2.4
# Affichera :
...
( Install of ruby-2.4.5 - #complete )
# Ou :
( Install of ruby-2.4.6 - #complete )
# Créer les gems.
# Dans le cas d'un projet multi Redmine j'utilise le dossier par défaut redmine-4.0-stable.
# Il ne sera pas utilisé en tant que dossier contenant un site Redmine, mais, uniquement utilisé pour créer les gems.
# Les sites Redmine seront, eux, dans les dossiers nommés redmine-4.0-stable-site1 redmine-4.0-stable-site2 ...
rvm gemset create redmine-4.0-stable
# Va afficher pour Debian Stretch :
ruby-2.4.5 - #gemset created /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable
# Va afficher pour Debian Buster :
ruby-2.4.6 - #gemset created /opt/redmine/.rvm/gems/ruby-2.4.6@redmine-4.0-stable
# Créer un seul gemset pour un ou plusieurs projet.
# Créer un deuxième gemset pour tester le passage vers une nouvelle version de Ruby.
# Je n'ai pas testé si il est possible d'utiliser plusieurs gemset différents en même temps. Il faudrait pouvoir charger Passenger avec les différentes configurations spécifiques aux différents 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.
# Consulter les versions de Ruby pouvant être utilisées avec Redmine : https://www.redmine.org/projects/redmine/wiki/RedmineInstall

Sélectionner le bon gemset

# Lister les gemsets disponibles
rvm list gemsets
# Affiche depuis Debian Stretch :
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 ]
# Pour Debian Stretch, utiliser ruby-2.4.5@redmine-4.0-stable [ x86_64 ], pour Debian Buster, utiliser ruby-2.4.6@redmine-4.0-stable [ x86_64 ]
# Pour Stretch :
rvm use gemset ruby-2.4.5@redmine-4.0-stable
# Pour Buster :
rvm use gemset ruby-2.4.6@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.
su - redmine
# Installer les gems :
cd redmine-4.0-stable/
bundle install --without develop,test,postgresql,sqlite
# Toutes les gems sont au vert ou en blanc. On peut donc continuer l'installation de Redmine.
# Un message en rouge est d'abord affiché :
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32`.
# Toutes les installations sont effectuées et sont au vert.
# Un message informatif est affiché à la fin, pour le gem YARD :
As of YARD v0.9.2:

RubyGems "--document=yri,yard" hooks are now supported. You can auto-configure
YARD to automatically build the yri index for installed gems by typing:

    $ yard config --gem-install-yri

See `yard config --help` for more information on RubyGems install hooks.

You can also add the following to your .gemspec to have YARD document your gem
on install:

    spec.metadata["yard.run"] = "yri" # use "yard" to build full HTML docs.
# Installer maintenant passenger !
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

Installer Phusion Passenger

# Toujours avec l'utilisateur redmine
cd redmine-4.0-stable/
# Installer Phusion Passenger :
passenger-install-apache2-module
# Le Choix 1 est proposé par défaut. (A vérifier si cette étape est toujours nommée choix 1.)
# Je laisse ruby et python de pré sélectionné dans la sélection par défaut et je valide avec entrée.
# Si nécessaire, changer les options avec la barre espace.
Configurer Apache Passenger
# À la fin de la compilation, la commande précédente affiche les informations suivantes :
Please edit your Apache configuration file, and add these lines:
# Ouvrir un second terminal pour ajouter les lignes proposées au début de la configuration principale de Apache2 :
# Ajouter la configuration proposée directement au début du fichier /etc/apache2/apache2.conf
sudo nano /etc/apache2/apache2.conf
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>
# 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.
###
### D'après le tutoriel initial :
### 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
### Je n'utilise pas cette méthode !
# 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 :
# Pour d'avantage de rigueur, nommer le fichier de configuration de la même façon que le nom de domaine utilisé : redmine.fictif.fr.conf
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

Finaliser l'installation et générer la base de données par défaut

# Depuis l'utilisateur redmine dans le dossier de redmine stable :
cd ~
cd redmine-4.0-stable/
# Changer le propriétaire et le groupe du fichier de log pour redmine pour ne pas avoir d'erreur lors de la commande "RAILS_ENV=production rake redmine:load_default_data".
sudo chown redmine:redmine -R /opt/redmine/redmine-4.0-stable/log/
### Vérifier si les logs seront bien écrites une fois Redmine installé, sinon, changer alors les droits pour ceux de Apache2 :
### Une fois redmine en production, donner le fichier de logs à Apache2.
### sudo chown www-data:www-data -R /opt/redmine/redmine-4.0-stable/log/
rake generate_secret_token
RAILS_ENV=production rake db:migrate
# Se renseigner à nouveau sur cette commande pour être sur de son bon usage.
# Ignorer cette étape si une base de données Redmine a déjà été importée dans la base de données.
# Attention, si une base a été importée suite à un dump, la commande suivante devrait vider la base et ses données.
# L'étape rake redmine: load_default_data ne serait nécessaire que lors d'une nouvelle installation.
RAILS_ENV=production rake redmine:load_default_data
# Il faudra préciser le choix de langue :
fr
# Le rake redmine: plugins: migrate est nécessaire uniquement si vous utilisez des plugins supplémentaires.
RAILS_ENV=production rake redmine:plugins:migrate
# Redmine est fonctionnel sur Debian Stretch 9 AMD64 Stable et Debian Buster 10 AMD64 pour une installation de Redmine 4.0 avec RVM et Ruby 2.4.5 / 2.4.6.

Mon retour sur le tutoriel d'origine

# Cet excellent tutoriel m'aura permis de finaliser une installation de RVM et Ruby pour installer Redmine 4.0.
 Parallel Redmine Installations : http://thelinuxchronicles.blogspot.com/2015/03/parallel-redmine-installations.html
# La traduction de ce tutoriel vers le français, en 2019, intègre des améliorations pour une installation fonctionnelle sur Debian 9 Stretch AMD64 et Debian Buster 10 AMD64.
# 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 de façon simple et rapide.
# Consulter quelques-unes des améliorations apportées :
1) Les clés pour le paquet RVM ont été mises à jour
Utiliser simplement les deux lignes suivantes :
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -sSL https://rvm.io/pkuczynski.asc | gpg --import -
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
2) Création d'un domaine virtuel
# Éditer le fichier host :
nano /etc/hosts
# Ajouter la ligne :
127.0.0.1       redmine.fictif.fr
3) 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
4) Installation de la version 4.0 de Redmine avec RVM 2.4
# La version de Redmine choisie pour l'installation est la version stable.
5) Ajout de la procédure pour créer le VirtualHost
# Crée le fichier redmine.conf dans le dossier des sites disponibles pour Apache2 :
cd /etc/apache2/sites-available
sudo nano redmine.conf
# Remplacer dans le VirtualHost la ligne du ServerName par ServerName redmine.fictif.fr
# Remplacer les deux lignes "Order allow,deny" et "Allow from all" par "Require all granted" pour Apache 2.4.
6) Activer le VirtualHost pour activer le site
sudo a2ensite redmine.conf
# Redémarrer Apache2 pour prendre en compte le VirtualHost.
sudo /etc/init.d/apache2 restart
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. 
# Questions :
1) Mettre à jour une base de données d'une version précédente de Redmine
# Utiliser la commande :
RAILS_ENV=production rake db:migrate
# N'y a t'il pas aussi une étape pour vider le cache session ou autres choses ?
# Je n'ai as eu besoin de vider un cache pour rendre fonctionnelle la sauvegarde d'une base de données importée.

Script pour sauvegarder Redmine

Script bash pour sauvegarder Redmine.
Révision par Zer00CooL : https://gist.github.com/ZerooCool/b06925403f94960e32c3c52f2db81b01

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 de redmine

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 sauvegarde de la base de données

su - redmine
mysql -u redmine -predmine_mysql_user_password -h localhost -D redmine_production < backup.sql
cd redmine-4.0-stable/
rvm list gemsets
rvm use gemset ruby-2.4.5@redmine-4.0-stable 
rake generate_secret_token
RAILS_ENV=production rake db:migrate

Réimporter une base de données de Redmine et la mettre à jour

# Importer 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
# Placer les fichiers dans le répertoire files :
cd redmine-4.0-stable/files
# Laisser éventuellement le dossier files avec la configuration par défaut résultant de l'installation.
sudo chown www-data:redmine files
# Je ne suis pas sur que donner les fichiers à l'utilisateur redmine soit plus conseillé que de les donner directement à l'utilisateur Apache2.
sudo chown redmine:redmine -R files/
Sinon, donner le dossier dans son intégralité à Apache2.
# Donner les droits Apache2 au(x) dossier(s) contenant les fichiers.
sudo chown www-data:www-data -R files/

Réimporter un thème
# Pour importer un thème ayant été sauvegardé, copier le dossier du thème dans le répertoire des thèmes :
/opt/redmine/redmine-4.0-stable/public/themes/
# Appliquer le propriétaire et le groupe redmine au thème ajouté :
cd /opt/redmine/redmine-4.0-stable/public/themes/
chown redmine:redmine -R circle/
# Si le thème sauvegardé ne fonctionne pas, utiliser sa dernière mise à jour.
# Sinon, changer de thème ou utiliser un thème par défaut.
Réimporter un plugin
# Déplacer le dossier sauvegardé du plugin dans le dossier des plugins :
cd /opt/redmine/redmine-4.0-stable/plugins/
# Dans le cas d'un plugin qui a déjà été installé, avec des dépendances en base de données, la base de données devrait déjà contenir les informations.
# Si le plugin est bien compatible avec la nouvelle installation, il devrait être fonctionnel.
# Sinon, supprimer les fichiers du plugin, en attendant une compatibilité future.
# Redémarrer Apache2.
# Lors de mon essai pour réimporter le plugin de ckecklist, un message d'erreur est affiché.
# Peut être lié au fait de la montée en version de Ruby, de la 2.4.5 vers la 2.4.6.
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
(in /opt/redmine/redmine-4.0-stable)
rake aborted!
LoadError: Error loading the 'mysql2' Active Record adapter. Missing a gem it depends on? mysql2 is not part of the bundle. Add it to your Gemfile.
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
(in /opt/redmine/redmine-4.0-stable)
rake aborted!
LoadError: Error loading the 'mysql2' Active Record adapter. Missing a gem it depends on? mysql2 is not part of the bundle. Add it to your Gemfile.
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:6:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/connection_specification.rb:191:in `spec'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:956:in `establish_connection'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:60:in `establish_connection'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/railtie.rb:136:in `block (2 levels) in <class:Railtie>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:71:in `instance_eval'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:71:in `block in execute_hook'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:62:in `with_execution_control'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:67:in `execute_hook'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:43:in `block in on_load'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:42:in `each'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:42:in `on_load'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/railtie.rb:132:in `block in <class:Railtie>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `instance_exec'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `run'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:60:in `run_initializers'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:361:in `initialize!'
/opt/redmine/redmine-4.0-stable/config/environment.rb:14:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:337:in `require_environment!'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:520:in `block in run_tasks_blocks'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/rake-13.0.0/exe/rake:27:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/bin/ruby_executable_hooks:24:in `eval'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/bin/ruby_executable_hooks:24:in `<main>'

Caused by:
Gem::LoadError: mysql2 is not part of the bundle. Add it to your Gemfile.
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/mysql2_adapter.rb:6:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/connection_specification.rb:191:in `spec'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:956:in `establish_connection'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:60:in `establish_connection'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/railtie.rb:136:in `block (2 levels) in <class:Railtie>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:71:in `instance_eval'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:71:in `block in execute_hook'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:62:in `with_execution_control'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:67:in `execute_hook'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:43:in `block in on_load'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:42:in `each'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/lazy_load_hooks.rb:42:in `on_load'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activerecord-5.2.3/lib/active_record/railtie.rb:132:in `block in <class:Railtie>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `instance_exec'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:32:in `run'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/initializable.rb:60:in `run_initializers'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:361:in `initialize!'
/opt/redmine/redmine-4.0-stable/config/environment.rb:14:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `block in require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:257:in `load_dependency'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:291:in `require'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:337:in `require_environment!'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/railties-5.2.3/lib/rails/application.rb:520:in `block in run_tasks_blocks'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/gems/rake-13.0.0/exe/rake:27:in `<top (required)>'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/bin/ruby_executable_hooks:24:in `eval'
/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => redmine:plugins:migrate => environment
(See full trace by running task with --trace)
# Vérifier les gems qui sont chargées :
gem list|grep mysql
# En production avec ruby 2.4.5 sur Debian Stretch, j'ai bien la gem mysql2 qui s'affiche :
mysql2 (0.5.2)
# En locale sur la machine virtuelle avec ruby 2.4.5 ou ruby 2.4.6 sur Debian Buster, la gem mysql2 ne s'affiche pas.
# J’installe la gem mais malgré tout, l'erreur persiste lors de l'installation du plugin, et, Redmine ne démarre pas si le répertoire du plugin redmine_checklist est présent.
gem install mysql2
# Je suis obligé de supprimer le répertoire du plugin pour pouvoir utiliser Redmine.
# Il est généralement préférable de ne pas ajouter de plugins sur une application, pour éviter ce genre de risques de dysfonctionnements suite à une migration.

Première utilisation

Changer l'utilisateur administrateur

Par défaut : admin / admin

Thème

Patcher la CSS principale pour le thème par défaut
# 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; vers la ligne 598 dans le fichier application.css par défaut.
cd /opt/redmine/redmine-4.0-stable-prod-vdw/public/stylesheets
sudo nano application.css
#projects-index {
  column-count: auto;
  column-width: 400px;
  -webkit-column-count: auto;
  -webkit-column-width: 400px;
  -webkit-column-gap : 0.5rem;
  -moz-column-count: auto;
  -moz-column-width: 400px;
  -moz-column-gap : 0.5rem;
/* Ne pas diviser les blocs des projets pour un affichage plus agréable. */
display: inline-flex;
}
Changer de thème
# Utiliser un thème plus moderne que le thème par défaut avec le thème PurpleMine2.
# Changer de thème : Changer de thème Redmine.

Changer le favicon.ico de Redmine

Changer le favicon.ico et il sera immédiatement pris en compte par Redmine.
Le favicon.ico de Redmine se trouve dans le dossier public et dans le dossier themes, à la taille de 32x32px et au format .ico.
/opt/redmine/redmine-4.0-stable-prod-vdw/public/favicon.ico
/opt/redmine/redmine-4.0-stable-prod-vdw/themes/nom_du_theme/favicon/favicon.ico
cd /opt/redmine/redmine-4.0-stable-prod-vdw/public/
sudo rm favicon.ico
cd /opt/redmine/redmine-4.0-stable-prod-vdw/public/themes/PurpleMine2/favicon
sudo rm favicon.ico
Si l'image est disponible en .png, utiliser icoutils pour la convertir en .ico.
Déposer le nouveau favicon.ico en 32x32px.

Changer le logo de Redmine

Le logo de Redmine se trouve dans le dossier du themes utilisé.
# Changer le logo du thème Circle :
/opt/redmine/redmine-4.0-stable/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
Les liens cliquables des notifications renvoient vers localhost:3000
# Modifier le nom de domaine utilisé par défaut "localhost:3000" par le véritable nom de domaine :
Administration / Configuration / Général / Nom d'hôte et chemin : redmine.domaine.ext

Modifier le fichier robots.txt par défaut

# Créer le fichier robots.txt pour override son contenu :
cd public
sudo nano robots.txt
sudo chown redmine:redmine robots.txt
# Par défaut :
User-agent: *
Disallow: /issues/gantt
Disallow: /issues/calendar
Disallow: /activity
Disallow: /search
# Interdire tous les robots pour tout le contenu :
Disallow: /

Droits sur le fichier de logs

Rails Error: Unable to access log file.
Please ensure that /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log exists and is writable (ie, make it writable for user and group: chmod 0664 /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log). The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
# Par défaut, le fichier de log est créé par Apache2.
# Donner la propriété du fichier de log à l'utilisateur et au groupe redmine lors des étapes de migration de la base de données.
sudo su redmine
touch /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log
chmod 0664 /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log
chown redmine:redmine /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log
### Fonctionne :
### sudo chown www-data:redmine production.log
### Je passe le fichier en 666, sachant que sur les trois autres instances, il est en 775 et fonctionnel, mais, c'est peut être déjà trop élevé.
### Avec les droits en 666 le fichier est écrit mais, je ne suis pas sur que ce soit la meilleur façon de placer les droits.
### chmod 0666 /opt/redmine/redmine-4.0-stable-prod-mdp/log/production.log
# Autre façon pour identifier les droits utilisés pour écrire dans le fichier de log :
# Renommer le fichier production.log en production1.log :
sudo mv production.log production1.log
# Appliquer un chmod de 777 sur le dossier log :
sudo chmod -R 777 log/
# Observer le fichier qui va être créé :
ls -la
-rw-r--r--  1 www-data www-data  35236 févr. 12 02:35 production.log

Optimiser les droits propriétaires

# Donner le répertoire /opt/redmine pour permettre l'écriture des fichiers de logs dans le répertoire /tmp du programme.
sudo chown www-data:redmine /opt/redmine
# Le fichier environment.rb est donné à www-data:www-data pour le Redmine de Visionduweb.
# Cette manipulation n'est pas indispensable, et, peut être non nécessaire. Redmine fonctionnera tout de même si le fichier environment.rb appartient à redmine:redmine.
cd /opt/redmine/redmine-4.0-stable-prod-vdw/config
sudo chown www-data. environment.rb

Ajouter un plugin

Installer un plugin sur Redmine.

Mise en réseau

Utiliser Redmine sur le réseau local

Remplacer la première ligne du VirtualHost : <VirtualHost *:80>
Ajouter l'adresse IP de la machine locale qui sert de serveur : <VirtualHost 192.168.10.20:80>

Notes de sécurité

Retrouver un fichier de log spécifique sur le serveur suite à une erreur

# Je n'arrive pas à obtenir l'écriture des logs suivantes.
Could not spawn process for application /opt/redmine/unis: The application encountered the following error: SIGTERM (SignalException)
Error ID: 638785d2
Error details saved to: /tmp/passenger-error-bNMmcu.html
# Le /opt/redmine était en root:root
# Passer le dossier redmine en www-data:redmine permet de régler les répétitions de problèmes d'écriture de logs.
# Le dossier est chown en récursif pour corriger le problème d'erreur d'écriture des logs affiché dans le fichier error.log de Apache2.
sudo chown www-data:redmine -R /opt/redmine/
# Je retombe sur l'erreur traitée par la suite : - /opt/redmine is not secure: it can be modified by user www-data
# Please either fix up the permissions for the insecure paths, or install Passenger in a different location that can only be modified by root.
# Il faut redonner certains fichiers à root, comme proposé dans l'erreur suivante.
# 1- Donner tout le dossier redmine à www-data:redmine (Oui, mais ...)
cd /opt
sudo chown -R www-data:redmine redmine/
# 2- Donner certains fichiers concernant les gems et passenger à root:root. (... Voilà!)
# Malgré tout, les fichiers de type /tmp/passenger-error-bNMmcu.html ne semblent pas être écrit sur le serveur, mais, plus aucun message d'erreur ne mentionne ce problème d'écriture dans error.log.
# Les logs de redmine depuis /var/log/apache2/
sudo nano /var/log/apache2/redmine.access.log (root:adm)
# Avec très peu d'erreurs, le fichier redmine.error.log ne sera pas renseigné très souvent.
sudo nano /var/log/apache2/redmine.error.log (root:adm)
# Les logs de redmine dans le fichier /log/production.log du projet doivent être en CHMOD 0664.
# La rotation des logs n'est pas prise en compte ici ce qui entraîne un fichier de logs bien trop lourd !
# -rwxrwxr-x www-data redmine 176122613 production.log
sudo nano /opt/redmine/canna/log/production.log
sudo nano /opt/redmine/mdp/log/production.log
sudo nano /opt/redmine/unis/log/production.log
sudo nano /opt/redmine/vdw/log/production.log
# Plutôt que de bidouiller avec la solution proposées ci-dessous le mieux sera de mettre en place la rotation du fichier de logs pour redmine !
# Créer des fichiers de 5Mo
sudo split -C 5m production.log
# Lire puis supprimer tous les fichiers créés depuis 10 minutes :
sudo rm -f $(find * -mmin +5)
# Vider le fichier production.log
sudo echo /dev/null > production.log

Alerte sur les droits - WARNING: potential privilege escalation vulnerability detected

Starting Passenger watchdog...
Starting Passenger core...
Passenger core running in multi-application mode.
WARNING: potential privilege escalation vulnerability detected. Phusion Passenger is running as root, and part(s) of the Passenger root path (/opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems/passenger-6.0.2) can be changed by non-root user(s):
- /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems/passenger-6.0.2 is not secure: it can be modified by user redmine
- /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems is not secure: it can be modified by user redmine
- /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis is not secure: it can be modified by user redmine
- /opt/redmine/.rvm/gems is not secure: it can be modified by user redmine
- /opt/redmine/.rvm is not secure: it can be modified by user redmine
- /opt/redmine is not secure: it can be modified by user redmine
# Please either fix up the permissions for the insecure paths, or install Passenger in a different location that can only be modified by root.
# Veuillez soit corriger les autorisations pour les chemins non sécurisés, soit installer Passenger dans un emplacement différent qui ne peut être modifié que par root.
# Effectuer les changements suivants en respectant de préférence l'ordre d'application :
cd /opt
sudo chown root:root redmine/
cd /opt/redmine
sudo chown root:root .rvm/
cd /opt/redmine/.rvm
sudo chown root:root gems/
cd /opt/redmine/.rvm/gems
sudo chown root:root ruby-2.4.5@redmine-4.0-stable-prod-unis
cd /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis
sudo chown root:root gems/
cd /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems
sudo chown root:root passenger-6.0.2
# Redémarrer Apache2 et vérifier les logs.
# Cette erreur a disparue.
# Il semble plus facile de restreindre les autorisations sur le répertoire gem que d'exécuter le serveur Web en tant qu'utilisateur non root.
# Je n'ai pas restreint les autorisations, c'est l'utilisateur root qui devient propriétaire.
# Les droits par défaut sont en 755, inutile de les changer.
# J'ai tenté de les passer en 700 ou 750 comme proposé sur un autre tutoriel mais à ce moment la Redmine affiche une erreur.
sudo bash
cd /opt/redmine
sudo chmod 755 .rvm
cd /opt/redmine/.rvm
sudo chmod 755 gems
cd /opt/redmine/.rvm/gems
sudo chmod 755 ruby-2.4.5@redmine-4.0-stable-prod-unis
cd /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis
sudo chmod 755 gems
cd /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems
sudo chmod 755 passenger-6.0.2

Déplacer le module Passenger du home de l'utilisateur redmine

Installer Passenger via bundle

# Dans ce tutoriel, RVM installe ses fichiers dans le dossier .rvm à la racine du dossier de l'utilisateur redmine qui a été utilisé pour cette installation.
# Dans ce tutoriel, le paquet Passenger n'a pas été installé depuis le dépôt officiel de Debian mais via la commande bundle avec RVM.
passenger-install-apache2-module
# passenger-install devrait être dans le path mods-enabled de Apache2.
# Actuellement, ce n'est pas le cas. Si il n'y est pas, ajouter bundle exec devant la commande :
bundle exec passenger-install-apache2-module
# Documentation à consulter : https://www.phusionpassenger.com/docs/tutorials/deploy_to_production/installations/oss/ownserver/ruby/nginx/
# Actuellement, Passenger est présent dans le répertoire .rvm qui est installé dans le home de l'utilisateur redmine.
sudo grep -r passenger /etc/apache2

/etc/apache2/apache2.conf:LoadModule passenger_module /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems/passenger-6.0.2/buildout/apache2/mod_passenger.so
/etc/apache2/apache2.conf:<IfModule mod_passenger.c>
/etc/apache2/apache2.conf:     PassengerRoot /opt/redmine/.rvm/gems/ruby-2.4.5@redmine-4.0-stable-prod-unis/gems/passenger-6.0.2
# Passenger a été ajouté manuellement dans le fichier de apache2.conf, comme proposé par l'installeur automatique de passenger-install-nginx-module :
sudo nano /etc/apache2/apache2.conf
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>
# En conclusion, cette étape semble manquer à ce tutoriel :
# Le script suivant va déplacer le dossier .rvm vers un autre emplacement sous root.
# Cela devrait permettre d'éviter cette problématique de sécurité et d'escalade de droits.
# Peut être que cela permettra également aux logs d'être écrites correctement dans le dossier tmp ?
# RVM ne le fait pas automatiquement car ce n'est pas obligatoire pour un projet qui n'est pas en production.
rvmsudo passenger-config validate-install
# Après avoir exécuté cette dernière commande, il faudra retirer les premières lignes qui avaient été ajoutées dans la configuration de Apache2.
# Ou bien avant ? A tester.

Installer Passenger via apt

# Vérifier si les éléments suivants existent : /etc/apache2/mods-enabled/passenger.*
# Dans /etc/apache2/mods-enabled/passenger.load on devrait retrouver l'information LoadModule passenger_module /usr/lib/apache2/modules/mod_passenger.so
# Installer mod_passenger :
sudo apt install mod_passenger
# Tester la configuration avant de redémarrer :
sudo apache2ctl configtest

Notes

# Normalement, rvm est sous le nom de l'utilisateur de déploiement.
Source : https://www.phusionpassenger.com/docs/tutorials/deploy_to_production/installations/oss/ownserver/ruby/nginx/

Envoyer un mail à Redmine pour créer une issue

Envoyer un mail à Redmine pour créer une issue.

Mise à jour de la gem RMagick

# Bricolage, nécessite une relecture et réécriture, mais, on arrive au résultat souhaité :
# Suite à la montée en version de Debian Buster vers Debian Bullseye, une erreur de gem est affichée lors de l'accès au redmine.
[ E 2021-08-24 05:14:03.8914 1288640/T8 age/Cor/Con/CheckoutSession.cpp:276 ]: [Client 1-4] Cannot checkout session because a spawning error occurred. The identifier of the error is 05be74bd. Please see earlier logs for details about the>
App 1289077 output: Error: The application encountered the following error: There was an error while trying to load the gem 'rbpdf'.
App 1289077 output: Gem Load Error is: This installation of RMagick was configured with ImageMagick 6.9.10 but ImageMagick 6.9.11-60 is in use.
# Pour régler cette erreur, il faut supprimer la gem RMagic existante et la réinstaller.
cd /opt/redmine
su redmine
Indiquer le mot de passe utilisateur redmine.
Sélectionner le bon gemset.
rvm list gemsets
rvm use gemset ruby-2.4.5@redmine-4.0-stable-prod-unis
# L'erreur suivante est retournée :
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
# Lancer la commande suivante devrait éviter d'avoir à rencontrer le message d'erreur :
/bin/bash --login
# Des problèmes de droits nécessitent de changer les droits des fichiers pour pouvoir interagir avec la gem à supprimer et à réinstaller.
sudo bash
/opt/redmine/.rvm/gems# chown -R redmine. ruby-2.4.5@redmine-4.0-stable-prod-unis/
exit
cd /opt/redmine
gem uninstall rmagick
Successfully uninstalled rmagick-2.16.0
# Pas sur que l'installation fonctionne dans le répertoire /opt/redmine :
gem install rmagick
# Réinstaller la gem dans le premier conteneur qui avait été créé :
cd /opt/redmine/redmine-4.0-stable-prod-unis
bundle update rmagick
# J'ai du relancer bundle install dans le répertoire du site qui refusait de s'afficher :
sudo chown -R redmine. redmine-4.0-stable-prod-canna/
/opt/redmine/$ cd redmine-4.0-stable-prod-canna/
/opt/redmine/redmine-4.0-stable-prod-canna$ bundle exec gem uninstall rmagick
bundle install
# La gem devrait avoir été réinstallée dans sa bonne version, le site peut à nouveau être consulté.
# Vérifier la remise des droits root et la bonne fonctionnalité du site :
# Remettre les droits root :
cd /opt/redmine/
sudo chown -R root. redmine-4.0-stable-prod-canna/
# Remettre les droits root :
sudo bash
cd /opt/redmine/.rvm/gems
chown -R root. ruby-2.4.5@redmine-4.0-stable-prod-unis/

Bibliographie

Ce tutoriel est partagé sur le wiki officiel de Debian

 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

 Redmine Upgrade : http://www.redmine.org/projects/redmine/wiki/RedmineUpgrade

Instances multiples

# Ressources complémentaires :
 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
 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
 Multiple instance of redmine does not work with passenger  : https://bugs.launchpad.net/ubuntu/+source/redmine/+bug/624598
 Multiple instances of redmine on Debian squeeze : http://www.redmine.org/boards/1/topics/16647

NAVIGATION

PARTICIPER ET PARTAGER

Bienvenue sur le wiki de Amis SH.
De nombreuses pages sont partagées sur ce wiki.
Créer un compte utilisateur pour participer sur le wiki.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Utiliser la recherche interne du wiki pour trouver votre contenu.
La page de discussion de Amis SH vous permet de poser vos questions.
Consulter le site amis-sh.fr pour installer votre propre serveur web.
Améliorer le contenu des pages avec vos retours depuis l'onglet discussion.
Ce contenu ne doit pas servir à nuire à autrui ou à un système informatique.
Protéger votre système Linux ou Windows avec cette page dédiée à la sécurité.

SOUTENIR CE WIKI

Soutenir 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 - Ğ1 - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Miner de la cryptomonnaie.