wiki/HowtoRedmine.md
2023-11-08 16:59:13 +01:00

7.6 KiB
Raw Blame History

Installation Redmine

Ce document explique l'installation du logiciel Redmine depuis les sources.

Cette installation à été testé sur une Debian Jessie avec Redmine en version 3.0, 3.1, 3.2, 3.3 et 3.4.

À noter :

  • La catégorie nommées prérequis ne sont à faire qu'une seule fois par serveur.
  • Les commandes sont à lancer avec l'utilisateur entre parenthèse.

Prérequis (User = root)

Installations des dépendances :

# aptitude install libpam-systemd libmysqlclient-dev ruby ruby-dev bundle imagemagick git-core git-svn gcc build-essential libxml2-dev libxslt1-dev libssl-dev

Installation des dépendances 2 (L'installation en une fois crée des conflits !) :

# aptitude install libmagickwand-dev libmagickcore-dev

Si Squid est présent vous devez rajouter les sites github et rubygems dans sa liste blanche !

echo "https://github.com/.*" >> /etc/squid3/whitelist.conf
echo "http://rubygems.org/.*" >> /etc/squid3/whitelist.conf
echo "http://.*.rubygems.org/.*" >> /etc/squid3/whitelist.conf

/home ne doit pas avoir l'attribut noexec !!!

Création du compte Unix (User = root)

Choix de l'utilisateur $REDMINE propriétaire de l'application

REDMINE='redmine'

Création de l'utilisateur $REDMINE :

useradd $REDMINE -d "/home/$REDMINE" -c "Redmine $REDMINE" -s "/bin/bash" -m

Ajout de l'utilisateur www-data au groupe $REDMINE :

adduser www-data $REDMINE

Création de la base de donnée (User = root)

HowtoMySQL

Installation (User = $REDMINE)

Se connecter avec l'utilisateur $REDMINE :

su - $REDMINE

Choisir la $BRANCHE de la version de Redmine :

  • voir le dépôt Github pour choisir une version
  • vérifier les prérequis sur redmine.org
BRANCHE=3.4-stable

Configuration du profile :

cat > ~/.profile <<EOF
# ~/.profile: executed by the command interpreter for login shells.

umask 027

export XDG_RUNTIME_DIR=/run/user/$UID
export PATH="\$HOME/.gems/ruby/2.1.0/bin:\$PATH"
export RAILS_ENV=production
EOF
source ~/.profile

Clonage du dépôt Git du projet Redmine :

git clone https://github.com/redmine/redmine.git -b $BRANCHE ~/www

Création des dossiers nécessaires :

mkdir -m 0750 ~/files

Copie de la configration de Redmine :

cat > ~/www/config/configuration.yml <<EOF
production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: localhost
      port: 25
      domain: "$(hostname -d)"
      ssl: false
      enable_starttls_auto: false
  attachments_storage_path: /home/$USER/files
  autologin_cookie_secure: true
EOF

Configuration des logs :

cat > ~/www/config/additional_environment.rb <<EOF
config.paths['log'] = "/home/$USER/log/redmine.log"
config.log_level = :warn
EOF

Récupération du mot de passe Mysql :

MYSQLPASS=`grep password ~/.my.cnf|cut -d'=' -f2|tr -d ' '`

Configuration de la base de donnée :

cat > ~/www/config/database.yml <<EOF
production:
  adapter: mysql2
  database: $USER
  host: localhost
  username: $USER
  password: "$MYSQLPASS"
  encoding: utf8
EOF

Ajout de la gem puma aux dépendances :

cat > ~/www/Gemfile.local <<EOF
gem "puma"
# En Debian Jessie il faut forcer la version de "xpath" pour être compatible Ruby 2.1
#gem "xpath", "< 3.0.0"
EOF

Installation des dépendances Gem avec bundle (cela peut durer plusieurs minutes) :

bundle install --gemfile=~/www/Gemfile --path=~/.gems

Génération d'un clé aléatoire utilisé pour encoder les cookies de session :

cd ~/www/
bundle exec rake -qf ~/www/Rakefile generate_secret_token

Création des schémas de la base de données redmine :

bundle exec rake -qf ~/www/Rakefile db:migrate

Chargement des données par défaut :

bundle exec rake -qf ~/www/Rakefile redmine:load_default_data REDMINE_LANG=fr

Serveur d'application

Maintenant que Redmine est installé, il faut configurer Puma.

La Gem est déjà installe grâce au Gemfile.local.

Lancement de l'application

Démarrer/éteindre l'application :

systemctl --user start/stop puma

Recharger la configuration après avoir modifier /etc/puma/$USER.rb (pas de coupure) :

systemctl --user reload puma

Redémarrer l'application :

systemctl --user restart puma

Activer/désactiver l'application au démarrage :

systemctl --user enable/disable puma

Gestions des plugins

Taches post installation / post mise a jour

Mise à jour des gem :

bundle install --gemfile=~/www/Gemfile --path=~/.gems

Migration des plugins :

( cd ~/www && bundle exec rake -qf ~/www/Rakefile redmine:plugins:migrate )

Desinstallation d'un plugin :

( cd ~/www && bundle exec rake -qf ~/www/Rakefile redmine:plugins:migrate[plugin_name,0] )

Mise a jour

Mineure

cd ~/www
git pull
bundle update
systemctl --user daemon-reload
systemctl --user restart puma
systemctl --user status puma

Majeure

systemctl --user stop puma
cd ~/www
git pull
git checkout $BRANCHE
rm Gemfile.lock
bundle update
bundle exec rake -q db:migrate
systemctl --user daemon-reload
systemctl --user start puma
systemctl --user status puma

Après une mise à jour de Debian

Après une mise à jour du type Debian 9 vers Debian 10, il faut remettre à jour les gems.

bundle install --redownload

Taches d'administration

Lancer un shell ruby dans l'environnement de production :

cd ~/www
bundle exec rails console

Créer un compte admin / mot de passe admin

user = User.new(:firstname => "<FIRSTNAME>", :lastname => "<LASTNAME>", :mail => "<MAIL>", :mail_notification => "none", :status => 1)
user.login = '<LOGIN>'
user.password = '<PASSWORD>'
user.password_confirmation = '<PASSWORD>'
user.valid?   # will return true if the user is valid
user.admin = true
user.save

Compter les issues d'un projet / les supprimer

Ceci est notamment utile à faire avant de supprimer un projet, ce qui est peut-être impossible via l'interfaces web si il y atrop d'issues :

> p = Project.find(42)
> p.issues.count
   (0.1ms)  SELECT COUNT(*) FROM "issues" WHERE "issues"."project_id" = 42
 => 1337
> p.issues.each(&:destroy)
...

Changer le mot de passe de ladministrateur

Dans le cas où il ny a quun seul utilisateur administrateur, on peut toujours changer son mot de passe en éditant directement la base de données. La procédure est dans la FAQ de Redmine.

FAQ

Déterminer la version de Redmine

Linformation est accessible depuis linterface dans Administration puis Informations. En ligne de commande, il faut vérifier le contenu du fichier /<racine_redmine>/lib/redmine/version.rb. La version est lisible dans les variable MAJOR, MINOR et TINY. Par exemple, pour une instance Redmine en 5.0.3 :

$ cat ./lib/redmine/version.rb
[…]
    MAJOR = 5
    MINOR = 0
    TINY  = 3
[…]

Commande AWK pour extraire la version au format x.y.z :

$ awk '/^ *MAJOR/ { major = $NF } /^ *MINOR/ { minor = $NF } /^ *TINY/ { tiny = $NF } END { printf "%u.%u.%u", major, minor, tiny }' ./lib/redmine/version.rb

Changer un mot de passe avec rails

# su - REDMINE
$ cd ~/www
$ RAILS_ENV=production bundle exec rails c
> user = User.where('login').first
> user.password = 'mon-nouveau-mot-de-passe'
> user.password_confirmation = 'mon-nouveau-mot-de-passe'
> user.save!