Comme je ne trouve aucun guide correct, voici un guide pour l’installation de redmine 6 sur debian sans passer par les paquets disponibles dans les dépots de la distribution. Cette méthode permet d’avoir une installation de redmine plus récente que celle proposée par les dépots.
Lors de l’installation de Debian je ne saisi pas de mot de passe pour root, il faut utiliser sudo
J’utilise vi comme éditeur, si vous préférez nano, remplacez vi dans les commandes par nano
Mon installation utilisera postgresql pour la base de données, il s’agit actuellement de l’outil le plus mis en avant par l’équipe de redmine, une installation sous mysql ou mariadb est également possible
Je laisse également debian installer les versions par défaut de postgresql et ruby, cela permet de simplifier les mises à jour
Je part du principe que nous installerons un environnement de production
Préparation
Pour commencer, il faut une machine sous Debian 12 installée et mise à jour. Pour les ressources, 1 processeur et 1Go de ram suffisent.
Installation des paquets qui vont être nécessaires sous debian:
sudo apt install apache2 postgresql ruby imagemagick ruby-dev make patch libxslt1-dev libxml2-dev libpq-dev libcurl4-openssl-dev zlib1g-dev gcc g++ libyaml-dev libapache2-mod-passenger
Pour les autres distributions (redhat) il faut adapter le nom des paquets
Préparation de la base de données de postgresql
Se connecter au serveur postgre avec la commande:
sudo su - postgres
Création du compte qui servira à la connexion au serveur et de la base de données
Pensez à changer my_password par un vrai mot de passe
createuser redmine
createdb redmine -O redmine
psql -c "alter user redmine with password 'mypassword'"
Sortir du shell de l’utilisateur postgresql avec la commande exit
Optionnel: Installer passenger si libapache2-mod-passenger n’est pas installé
Installation puis configuration de passenger:
gem install passenger
passenger-install-apache2-module
Modifier la configuration d’apache pour ajouter le chargement du module passenger:
vim /etc/apache2/conf-available/passenger.conf
LoadModule passenger_module /var/lib/gems/3.1.0/gems/passenger-6.0.18/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /var/lib/gems/3.1.0/gems/passenger-6.0.18
PassengerDefaultRuby /usr/bin/ruby3.1
</IfModule>
Recharger Apache2:
a2enconf passenger
systemctl restart apache2
Installation
Ici je fait toutes les manipulations en tant que root pour plus de facilité et éviter les sudo, avec sudo il faut utiliser la commande sudo -i
Télécharger la dernière version de redmine (le lien n’est à ajout, à vous de le récupérer ici):
wget https://www.redmine.org/releases/redmine-6.0.1.tar.gz -O /tmp/redmine.tar.gz
On crée le dossier qui acceuillera redmine
mkdir /var/www/redmine
On extrait l’archive et on déplace le contenu extrait à l’emplacement d’installation de redmine:
tar -xzf /tmp/redmine.tar.gz -C /var/www/redmine --strip-components=1
Préparation des dossiers supplémentaires
Pour le coté pratique en cas de mise à jour et le coté sécuritaire, certains dossiers de redmine seront déplacé et ne seront pas utilisés à leurs emplacements initiaux:
mkdir -p /var/lib/redmine/{files,config,tmp}
mkdir -p /var/log/redmine
Paramétrages des fichiers de configration
Pour l’utilisation d’un autre sgdb, les configurations d’exemple sont disponibles dans le fichier config/database.yml.example de redmine
Fichier de configuration pour l’installation de redmine avec postgresql:
cat <<EOF > /var/www/redmine/config/database.yml
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "mypassword"
EOF
Création de la configration
On commence par copier le fichier d’exemple de la configuration:
cp /var/www/redmine/config/configuration.yml.example /var/www/redmine/config/configuration.yml
Mise en place de l’envoi de mails pour les notifications
Je n’utilise pas de serveur de mail pour ce guide donc les informations seront approximative
Chercher dans le nouveau fichier configration.yml la partie email_delivery
et copier la configuration à utiliser sous la ligne email_delivery:
Gérer l’emplacement des pièces jointes
Par sécurité, on n’utilisera pas le dossier files par défaut de redmine, les pièces jointes seront stockées dans /var/lib/redmine/files, ceci permet de garder les pièces jointes en cas de montée de version de redmine: Ligne 74: attachments_storage_path: remplacer par: attachments_storage_path: /var/lib/redmine/files cela peux être fait en une commande:
sed -i -e "s|^ attachments_storage_path:$| attachments_storage_path: /var/lib/redmine/files|" /var/www/redmine/config/configuration.yml
Déplacement des dossiers et création des liens symboliques
Pour simplifier les mises à jours, on va déplacer/supprimer des dossiers pour ne pas avoir à copier coller à chaque mise à jour:
rm -r /var/www/redmine/log
mv /var/www/redmine/config/configuration.yml /var/lib/redmine/config/
mv /var/www/redmine/config/database.yml /var/lib/redmine/config/
ln -s /var/lib/redmine/config/configuration.yml /var/www/redmine/config/configuration.yml
ln -s /var/lib/redmine/config/database.yml /var/www/redmine/config/database.yml
ln -s /var/log/redmine /var/www/redmine/log
Gestion des droits du site
Pour terminer avant de passer à l’installation, on donne les droits à www-data sur tous les fichiers de redmine:
chown -R www-data:www-data /var/www/redmine/
On change le propriétaire des autres dossiers:
chown -R www-data:www-data /var/lib/redmine
chown -R www-data:www-data /var/log/redmine
Installation de ruby
On se place dans notre installation de redmine:
cd /var/www/redmine
On installe gem:
gem install bundler
On prépare la configuration de bundle puis on télécharge les dépendances:
Si vous n’utilisez pas postgresql, retirez le nom du serveur de base de données de la commande et ajoutez postgresql
bundle config set --local without 'development test mysql sqlite'
On lance l’installation:
bundle install
Ici je fait mon installation en tant que root mais normalement il faut le faire depuis un utilisateur classique
Attention: si la commande bundle install échoue, corriger l’erreur puis relancer la commande, souvent le problème viens du manque de dépendances
On génère le secret de l’installation:
bundle exec rake generate_secret_token
On génère la base de données:
bundle exec rake db:migrate RAILS_ENV=production
Créer la configuration apache du site
cat <<EOF > /etc/apache2/sites-available/redmine.conf
<VirtualHost *:80>
ServerName redmine.tld
DocumentRoot /var/www/redmine/public
</VirtualHost>
<Directory "/var/www/redmine/public">
Options FollowSymLinks
AllowOverride All
</Directory>
EOF
activer le site:
a2dissite 000-default.conf
a2ensite redmine.conf
On donne les droits à www-data sur le dossier:
chown -R www-data:www-data /var/www/redmine
Redémarrer le serveur apache:
systemctl reload apache2
On arrive sur la page d’accueil, les identifiants pour la connexion sont admin / admin
Exploitation
Redmine est installé mais il reste quelques étapes utiles pour éviter les problèmes futur
Logrotate
crée le fichier logrotate pour redmine:
Note: Redmine log beaucoup, ici je met logrotates à weekly mais il peux être passé à daily
La durée de stockage pour les logs doit être d’au moins 6mois, ce qui explique le weekly / rotate 26 (+/- 6mois), en daily le rotate serait de 180
cat <<EOF > /etc/logrotate.d/redmine
/var/log/redmine/*.log {
weekly
dateext
dateformat .%Y-%m-%d
missingok
rotate 26
compress
delaycompress
notifempty
copytruncate
}
EOF
Mises à jour
On commence par arrêter le serveur web et backup l’installation actuelle (à lancer en tant que root):
systemctl stop apache2
tar -czvf ~/redmine-backup.tar.gz -C /var/www redmine
mv /var/www/redmine /var/www/redmine-old
mkdir /var/www/redmine
wget https://www.redmine.org/releases/redmine-6.0.3.tar.gz -O /tmp/redmine.tar.gz
tar -xzf /tmp/redmine.tar.gz -C /var/www/redmine --strip-components=1
cp -r /var/www/redmine-old/plugins /var/www/redmine/plugins
rm -r /var/www/redmine-old
Recréer les liens:
rm -r /var/www/redmine/log
ln -s /var/lib/redmine/config/configuration.yml /var/www/redmine/config/configuration.yml
ln -s /var/lib/redmine/config/database.yml /var/www/redmine/config/database.yml
ln -s /var/log/redmine /var/www/redmine/log
On donne les bon droits:
chown -R www-data:www-data /var/www/redmine
On se place dans notre installation:
cd /var/www/redmine
Configuration de Bundle:
bundle config set --local without 'development test mysql sqlite'
bundle install
Regénération du secret:
bundle exec rake generate_secret_token
Migration de la base de données:
bundle exec rake db:migrate RAILS_ENV=production
Si des plugins sont installés:
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
Nettoyage du cache:
bundle exec rake tmp:cache:clear RAILS_ENV=production
Relancer le serveur apache:
systemctl start apache2