Cet article décrit l’installation d’un serveur Redmine avec Nginx configuré en HTTPS via Let’s Encrypt.
L’installation de Redmine sera mise en œuvre à partir des dépôts officiels de Debian Jessie et en version 3.0, qui est la version stable à ce jour. Dans les dépôts Testing (Strech) la version est 3.2.1-1.
A savoir, ici je vais configurer Nginx en tant que revers proxy pour qu’il redirige les requêtes au serveur Ruby, qui ne sera accessible qu’en local sur le port 3000.
Tout comme PHP, pour interpréter le langage Ruby il faut un moteur. Dans mon cas, je vais laisser le moteur Ruby par défaut : WEBrick.
C’est quoi Redmine
Brièvement, Redmine est un gestionnaire de projets web écrit en Ruby. Redmine est un logiciel libre sous licence GNU/GPLv2.
Pour plus d’informations, je vous invites à lire cet article très complet : https://www.projet-plume.org/fiche/redmine
Configuration du serveur MariaDB
Pour l’installation du SGBD MariaDB, tout est expliqué dans cet article : https://memo-linux.com/debian-installer-un-serveur-web-hyper-performant-lnhm-nginx-hhvm-mariadb/
Création de la base de données pour Redmine :
mysql -p CREATE DATABASE redmine CHARACTER SET utf8; CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost'; flush privileges; exit;
Installation de Redmine via Apt
apt install redmine redmine-mysql
Configuration de Redmine
Donner les droits à www-data sur le répertoire du serveur web
cd /usr/share/redmine chown -R www-data public
Règle Iptables
Ouvrir le port d’écoute 3000 pour 127.0.0.1 :
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 3000 -j ACCEPT
Création du certificat Let’s Encrypt
Pour installer Let’s Encrypt sur Debian voir cet article : https://memo-linux.com/installer-facilement-lets-encrypt-sous-debian-et-ubuntu-serveur-via-apt/
Création du certificat pour la connexion HTTPS :
letsencrypt certonly -d redmine.domaine.tld --rsa-key-size 4096
Server Block Nginx pour Redmine en HTTPS
nano /etc/nginx/sites-enabled/redmine.domaine.conf
server { listen 80; server_name redmine.domaine.tld; rewrite ^ https://redmine.domaine.tld$request_uri?; } server { listen 443 ssl; server_name redmine.domaine.tld; root /usr/share/redmine/public/; access_log /var/log/nginx/redmine-access.log; error_log /var/log/nginx/redmine-error.log; ssl_certificate /etc/letsencrypt/live/redmine.domaine.tld/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/redmine.domainetld/privkey.pem; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH"; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_dhparam /etc/ssl/private/dhparams.pem; ssl_buffer_size 16k; ssl_stapling off; ssl_stapling_verify on; ssl_trusted_certificate /etc/letsencrypt/live/redmine.domaine.tld/fullchain.pem; resolver 127.0.0.1 8.8.8.8;##j'ai mon propre serveur dns en local location / { try_files $uri @fcgi; } location @fcgi { include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/share/redmine/public/$fastcgi_script_name; proxy_pass http://127.0.0.1:3000; proxy_connect_timeout 15; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; fastcgi_param HTTPS "on"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; } include global/php-fpm.conf; }
Contenu de global/php-fpm.conf
:
location ~ \.php$ { location ~ ^/(status|ping)$ { include fastcgi_params; deny all; } try_files $uri =404; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffers 4 256k; fastcgi_buffer_size 128k; #fastcgi_buffers 256 16k; #fastcgi_buffer_size 16k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; }
Une fois le block serveur Nginx pour Redmine configuré, faire un test de la conf :
ngnix -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Si tout est ok, relancer le serveur :
systemctl restart nginx
Lancement du serveur Redmine
cd /usr/share/redemine/ ruby bin/rails server -e production
Vérification si le serveur est bien écoute sur le port 3000 :
netstat -lapute | grep 3000
tcp 0 0 *:3000 *:* LISTEN root 2083713546 31914/ruby
Création d’un service pour systemd
Création d’un service pour systemd afin de faciliter la gestion du démarrage du serveur.
- Création du service pour gérer le serveur Redmine :
nano /etc/systemd/system/redmine.service
[Unit] Description=Redmine server After=syslog.target After=network.target [Service] Type=simple ExecStart=/usr/bin/ruby /usr/share/redmine/bin/rails server -e production TimeoutSec=300 [Install] WantedBy=multi-user.target
systemctl enable redmine.service
systemctl start redmine.service
systemctl status redmine.service
Ce qui donne :
● redmine.service - Redmine server Loaded: loaded (/etc/systemd/system/redmine.service; enabled) Active: active (running) since Thu 2016-03-31 17:08:37 CEST; 2s ago Main PID: 31914 (ruby) CGroup: /system.slice/redmine.service └─31914 /usr/bin/ruby /usr/share/redmine/bin/rails server -e production
Connection à l’interface web de Redmine
Ouvrir votre navigateur web et saisir l’url : https://redmine.domaine.tld/login
Image may be NSFW.
Clik here to view.
Voici les identifiants par défaut, à changer de suite :
- username: admin
- password: admin
Suivront d’autres articles sur le paramétrage avancé et l’installation de plugins…