# 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](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) ~~~ BRANCHE=3.4-stable ~~~ Configuration du profile : ~~~ cat > ~/.profile < ~/www/config/configuration.yml < ~/www/config/additional_environment.rb < ~/www/config/database.yml < ~/www/Gemfile.local < "", :lastname => "", :mail => "", :mail_notification => "none", :status => 1) user.login = '' user.password = '' user.password_confirmation = '' 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 l’administrateur Dans le cas où il n’y a qu’un 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 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 ' ~~~ # FAQ ## Déterminer la version de Redmine L’information est accessible depuis l’interface dans _Administration_ puis _Informations_. En ligne de commande, il faut vérifier le contenu du fichier `//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! ~~~ ## Configuration email 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" ~~~