wiki/HowtoRedmine.md

442 lines
9.5 KiB
Markdown
Raw Permalink Normal View History

2016-12-29 11:25:39 +01:00
# Installation Redmine
Ce document explique l'installation du logiciel Redmine depuis les sources.
2017-07-04 18:35:14 +02:00
Cette installation à été testé sur une Debian Jessie avec Redmine en version 3.0, 3.1, 3.2, 3.3 et 3.4.
2016-12-29 11:25:39 +01:00
À noter :
2017-07-04 18:35:14 +02:00
* La catégorie nommées prérequis ne sont à faire qu'une seule fois par serveur.
2016-12-29 11:25:39 +01:00
* Les commandes sont à lancer avec l'utilisateur entre parenthèse.
2023-11-08 16:59:13 +01:00
## Prérequis (User = root)
2016-12-29 11:25:39 +01:00
Installations des dépendances :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-08-28 15:49:54 +02:00
# aptitude install libpam-systemd libmysqlclient-dev ruby ruby-dev bundle imagemagick git-core git-svn gcc build-essential libxml2-dev libxslt1-dev libssl-dev
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Installation des dépendances 2 (L'installation en une fois crée des conflits !) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-01-14 00:06:38 +01:00
# aptitude install libmagickwand-dev libmagickcore-dev
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Si Squid est présent vous devez rajouter les sites github et rubygems dans sa liste blanche !
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
echo "https://github.com/.*" >> /etc/squid3/whitelist.conf
echo "http://rubygems.org/.*" >> /etc/squid3/whitelist.conf
echo "http://.*.rubygems.org/.*" >> /etc/squid3/whitelist.conf
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2023-11-08 16:59:13 +01:00
**/home ne doit pas avoir l'attribut noexec !!!**
2016-12-29 11:25:39 +01:00
2023-11-08 16:59:13 +01:00
## Création du compte Unix (User = root)
2016-12-29 11:25:39 +01:00
Choix de l'utilisateur $REDMINE propriétaire de l'application
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
REDMINE='redmine'
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Création de l'utilisateur $REDMINE :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
useradd $REDMINE -d "/home/$REDMINE" -c "Redmine $REDMINE" -s "/bin/bash" -m
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Ajout de l'utilisateur www-data au groupe $REDMINE :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
adduser www-data $REDMINE
~~~
2023-11-08 16:59:13 +01:00
## Création de la base de donnée (User = root)
2016-12-29 11:25:39 +01:00
2017-07-04 18:35:14 +02:00
[HowtoMySQL]()
2016-12-29 11:25:39 +01:00
2023-11-08 16:59:13 +01:00
## Installation (User = $REDMINE)
2016-12-29 11:25:39 +01:00
Se connecter avec l'utilisateur $REDMINE :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
su - $REDMINE
~~~
Choisir la $BRANCHE de la version de Redmine :
* voir le dépôt [Github](https://github.com/redmine/redmine) pour choisir une version
* vérifier les prérequis sur [redmine.org](http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Exigences)
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
BRANCHE=3.4-stable
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 18:02:25 +02:00
Configuration du profile :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
cat > ~/.profile <<EOF
# ~/.profile: executed by the command interpreter for login shells.
umask 027
export XDG_RUNTIME_DIR=/run/user/$UID
2017-08-01 14:40:42 +02:00
export PATH="\$HOME/.gems/ruby/2.1.0/bin:\$PATH"
2017-07-04 17:52:58 +02:00
export RAILS_ENV=production
2016-12-29 11:25:39 +01:00
EOF
2017-07-04 17:52:58 +02:00
source ~/.profile
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Clonage du dépôt Git du projet Redmine :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
git clone https://github.com/redmine/redmine.git -b $BRANCHE ~/www
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Création des dossiers nécessaires :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
mkdir -m 0750 ~/files
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Copie de la configration de Redmine :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
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
2018-06-15 11:19:04 +02:00
~~~
Configuration des logs :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2018-06-15 11:19:04 +02:00
cat > ~/www/config/additional_environment.rb <<EOF
config.paths['log'] = "/home/$USER/log/redmine.log"
config.log_level = :warn
EOF
~~~
2016-12-29 11:25:39 +01:00
Récupération du mot de passe Mysql :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
MYSQLPASS=`grep password ~/.my.cnf|cut -d'=' -f2|tr -d ' '`
~~~
2017-01-03 11:20:35 +01:00
2018-06-15 11:19:04 +02:00
Configuration de la base de donnée :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
cat > ~/www/config/database.yml <<EOF
production:
adapter: mysql2
database: $USER
host: localhost
username: $USER
password: "$MYSQLPASS"
encoding: utf8
EOF
~~~
2017-01-03 11:20:35 +01:00
2018-06-15 11:19:04 +02:00
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
~~~
2016-12-29 11:25:39 +01:00
Installation des dépendances Gem avec bundle (cela peut durer plusieurs minutes) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-08-01 14:40:42 +02:00
bundle install --gemfile=~/www/Gemfile --path=~/.gems
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Génération d'un clé aléatoire utilisé pour encoder les cookies de session :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
cd ~/www/
2017-07-06 16:15:13 +02:00
bundle exec rake -qf ~/www/Rakefile generate_secret_token
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Création des schémas de la base de données redmine :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-06 16:15:13 +02:00
bundle exec rake -qf ~/www/Rakefile db:migrate
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
Chargement des données par défaut :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-06 16:15:13 +02:00
bundle exec rake -qf ~/www/Rakefile redmine:load_default_data REDMINE_LANG=fr
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2023-11-08 16:59:13 +01:00
### Serveur d'application
2017-07-04 18:51:22 +02:00
2018-06-15 11:19:04 +02:00
Maintenant que Redmine est installé, il faut configurer [Puma](https://wiki.evolix.org/HowtoPuma).
2017-07-04 18:51:22 +02:00
2018-06-15 11:19:04 +02:00
**La Gem est déjà installe grâce au Gemfile.local.**
2023-11-08 16:59:13 +01:00
## Lancement de l'application
2017-07-04 17:52:58 +02:00
Démarrer/éteindre l'application :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
systemctl --user start/stop puma
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
Recharger la configuration après avoir modifier /etc/puma/$USER.rb (pas de coupure) :
2016-12-29 11:25:39 +01:00
2017-07-04 17:52:58 +02:00
~~~
systemctl --user reload puma
~~~
Redémarrer l'application :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
systemctl --user restart puma
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2017-07-04 17:52:58 +02:00
Activer/désactiver l'application au démarrage :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 17:52:58 +02:00
systemctl --user enable/disable puma
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2017-07-04 17:52:58 +02:00
2023-11-08 16:59:13 +01:00
## Gestions des plugins
### Taches post installation / post mise a jour
2017-07-04 17:52:58 +02:00
Mise à jour des gem :
2017-01-03 11:20:35 +01:00
2022-08-03 15:33:59 +02:00
~~~ { .bash }
2017-08-01 14:40:42 +02:00
bundle install --gemfile=~/www/Gemfile --path=~/.gems
2016-12-29 11:25:39 +01:00
~~~
2017-01-03 11:20:35 +01:00
2017-07-04 17:52:58 +02:00
Migration des plugins :
2017-01-03 11:20:35 +01:00
2022-08-03 15:33:59 +02:00
~~~ { .bash }
( cd ~/www && bundle exec rake -qf ~/www/Rakefile redmine:plugins:migrate )
2017-07-04 17:52:58 +02:00
~~~
2023-11-08 16:59:13 +01:00
### Desinstallation d'un plugin :
2017-07-04 17:52:58 +02:00
2022-08-03 15:33:59 +02:00
~~~ { .bash }
( cd ~/www && bundle exec rake -qf ~/www/Rakefile redmine:plugins:migrate[plugin_name,0] )
2016-12-29 11:25:39 +01:00
~~~
2017-07-04 18:02:25 +02:00
2023-11-08 16:59:13 +01:00
## Mise a jour
### Mineure
2017-07-04 18:02:25 +02:00
~~~
cd ~/www
git pull
bundle update
2017-08-31 11:57:47 +02:00
systemctl --user daemon-reload
2017-07-04 18:02:25 +02:00
systemctl --user restart puma
systemctl --user status puma
~~~
2023-11-08 16:59:13 +01:00
### Majeure
2017-07-04 18:02:25 +02:00
~~~
systemctl --user stop puma
cd ~/www
git pull
git checkout $BRANCHE
rm Gemfile.lock
bundle update
2017-07-06 16:15:13 +02:00
bundle exec rake -q db:migrate
2017-08-31 11:57:47 +02:00
systemctl --user daemon-reload
2017-07-04 18:02:25 +02:00
systemctl --user start puma
systemctl --user status puma
~~~
2023-11-08 16:59:13 +01:00
### Après une mise à jour de Debian
2020-07-21 10:23:00 +02:00
Après une mise à jour du type Debian 9 vers Debian 10, il faut remettre à jour les gems.
~~~
bundle install --redownload
~~~
2023-11-08 16:59:13 +01:00
## Taches d'administration
2016-12-29 11:25:39 +01:00
Lancer un shell ruby dans l'environnement de production :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
cd ~/www
2017-07-04 17:52:58 +02:00
bundle exec rails console
2016-12-29 11:25:39 +01:00
~~~
2023-11-08 16:59:13 +01:00
### Créer un compte admin / mot de passe admin
2016-12-29 11:25:39 +01:00
~~~
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
2016-12-29 11:25:39 +01:00
user.admin = true
user.save
2017-01-03 11:20:35 +01:00
~~~
2023-11-08 16:59:13 +01:00
### 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)
...
~~~
2023-11-08 16:59:13 +01:00
### 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](https://www.redmine.org/projects/redmine/wiki/FAQ#Reset-password-lost-without-admin-redmine-account-but-with-admin-redmine-database-account).
## API
2023-12-12 10:01:47 +01:00
<https://www.redmine.org/projects/redmine/wiki/rest_api>
Il y a besoin d'une clé pour questionner l'API en se rendant dans *les paramètres de son compte* (https://instance-redmine.net/my/account). Dans la colonne de droite, il y a la section *Clé d'accès API*. Soit :
~~~
INSTANCE="https://instance-redmine.org"
KEY=XXXXXXXXXXXXXXXXXXXXXXX
~~~
* Afficher les projets
~~~
curl -s -X GET "${INSTANCE}/projects.json?key=${KEY}" | jq '.projects[]'
~~~
* Lister les pages d'un wiki en rapport avec un $projet
~~~
curl -s -X GET "${INSTANCE}/projects/${projet}/wiki/index.json?key=${KEY}" |jq '.wiki_pages[] |.title'
~~~
* Récupérer le contenu d'une page d'un $projet
~~~
curl -s -X GET "${INSTANCE}/projects/${projet}/wiki/${page}.json?key=${KEY}" |jq '.wiki_page.text '
~~~
2023-11-08 16:59:13 +01:00
# 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` :
2022-12-12 17:54:21 +01:00
>
> ~~~
> $ awk '/^ *MAJOR/ { major = $NF } /^ *MINOR/ { minor = $NF } /^ *TINY/ { tiny = $NF } END { printf "%u.%u.%u", major, minor, tiny }' ./lib/redmine/version.rb
> ~~~
2023-11-08 16:59:13 +01:00
## 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!
~~~
2023-12-04 13:22:42 +01:00
## Configuration email
<https://www.redmine.org/projects/redmine/wiki/emailconfiguration>
Cela se passe dans `config/configuration.yml` :
Pour envoi via SMTP vers 127.0.0.1 sans SSL/TLS (Redmine supporte mal les certificats auto-signés) :
~~~
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: 127.0.0.1
port: 25
domain: example.com
enable_starttls_auto: false
openssl_verify_mode: "NONE"
~~~
> Note : sur certaines versions, pour désactiver SSL/TLS, il faut utiliser `disable_start_tls: true`
Pour envoi via Sendmail :
~~~
production:
email_delivery:
delivery_method: :sendmail
sendmail_settings:
arguments: "-oi -t -f redmine@example.com"
~~~
Pour envoi via serveur distant avec authentification :
~~~
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
enable_starttls_auto: true
openssl_verify_mode: 'none'
address: smtp.example.com
port: 587
domain: "example.com"
authentication: :login
user_name: "jdoe"
password: "PASSWORD"
~~~