Comment installer Redmine sur Ubuntu 16.04

Redmine est un outil de gestion de projet gratuit et open source basé sur le Web. Il est écrit en Ruby on Rails et prend en charge plusieurs serveurs de base de données pour stocker la base de données. Il s'agit d'une application riche en fonctionnalités prenant en charge plusieurs projets, une liste de contrôle d'accès basée sur les rôles et un système de suivi des problèmes. Il prend également en charge le diagramme de Gantt et le calendrier, la gestion des fichiers, par wiki et forum par projet, ainsi que de nombreuses autres fonctionnalités. Il prend en charge les systèmes de contrôle de version tels que Git, SVN ou CVS. Il est également multilingue, prenant en charge jusqu'à 49 langues.

Conditions préalables

  • Une instance de serveur Vultr Ubuntu 16.04.
  • Un utilisateur sudo .
  • Un nom de domaine pointé vers le serveur.

Pour ce didacticiel, nous utiliserons 192.168.1.1comme adresse IP publique et redmine.example.com comme nom de domaine pointé vers l'instance Vultr. Veuillez vous assurer de remplacer toutes les occurrences de l'exemple de nom de domaine et de l'adresse IP par celui-ci.

Mettez à jour votre système de base à l'aide du guide Comment mettre à jour Ubuntu 16.04 . Une fois votre système mis à jour, procédez à l'installation des dépendances.

Installer Apache

Redmine est écrit en Ruby on Rails, nous aurons donc besoin que Phusion Passenger s'intègre au serveur Web Apache pour servir l'application.

Installez Apache.

sudo apt -y install apache2 apache2-dev libcurl4-openssl-dev

Pour construire Ruby et Passenger, nous aurons également besoin d'outils de développement. Installez les outils requis.

sudo apt -y install imagemagick libmagickwand-dev git build-essential automake libgmp-dev

Installer PostgreSQL

Redmine prend en charge plusieurs types de serveurs de bases de données tels que MySQL, PostgreSQL et MSSQL. Dans ce tutoriel, nous utiliserons PostgreSQL pour héberger le serveur de base de données Redmine.

PostgreSQL est un système de base de données relationnelle objet. Le référentiel Ubuntu par défaut contient une ancienne version de PostgreSQL, alors ajoutez le référentiel PostgreSQL au système.

echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update

Installez le serveur de base de données PostgreSQL.

sudo apt -y install postgresql

Démarrez le serveur PostgreSQL et activez-le pour démarrer automatiquement au démarrage.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Modifiez le mot de passe de l'utilisateur PostgreSQL par défaut.

sudo passwd postgres

Connectez-vous en tant qu'utilisateur PostgreSQL.

sudo su - postgres

Créez un nouvel utilisateur PostgreSQL pour Redmine.

createuser redmine

Vous êtes autorisé à utiliser n'importe quel nom d'utilisateur au lieu de redmine. PostgreSQL fournit le psql shell pour exécuter des requêtes sur la base de données. Basculez vers le shell PostgreSQL.

psql

Définissez un mot de passe pour le nouvel utilisateur créé pour la base de données Redmine.

ALTER USER redmine WITH ENCRYPTED password 'DBPassword';

Remplacez-le DBPassword par un mot de passe sécurisé. Créez une nouvelle base de données pour l'installation de Redmine.

CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;

Sortez du psql shell.

\q

Passez à l' sudo utilisateur.

exit

Installez quelques autres dépendances PostgreSQL requises.

sudo apt -y install libpqxx-dev protobuf-compiler

Installer Ruby

Nous installerons la dernière version de Ruby à l'aide de RVM. Il est utilisé pour installer et gérer plusieurs versions de Ruby.

Ajoutez le référentiel RVM.

sudo apt-add-repository -y ppa:rael-gc/rvm
sudo apt update

Installez RVM.

sudo apt -y install rvm

Comme nous devons installer Ruby sur tout le système, nous basculerons temporairement sur l'utilisateur root.

sudo -i

Mettez à jour les variables d'environnement.

echo "source /etc/profile.d/rvm.sh" | tee -a /etc/profile
source /etc/profile.d/rvm.sh

Installez la dernière version de Ruby.

rvm install 2.5.1

Remarque: Si vous utilisez une version différente de Ruby, assurez-vous de mettre à jour le chemin Ruby en conséquence.

Utilisez la version installée de Ruby.

rvm use 2.5.1 --default

Vous pouvez vérifier sa version.

ruby -v

Vous verrez une sortie similaire.

root@vultr:~# ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

Install bundler, qui est le gestionnaire de dépendances de l'application Ruby.

gem install bundler

Ruby est maintenant installé. Avant d'installer Redmine, nous devons installer Phusion Passenger.

Installer le passager

Exécutez la commande suivante pour installer Passenger.

gem install passenger

Installez le module Apache pour Passenger.

passenger-install-apache2-module

Le script d'installation vous posera quelques questions. Tout d'abord, il vous fournira des informations sur le processus d'installation. Ensuite, il vous demandera de sélectionner la langue que vous utiliserez. Puisque notre application est écrite en Ruby on Rails, sélectionnez Ruby dans le menu et appuyez sur ENTERpour continuer.

Which languages are you interested in?

Use <space> to select.
If the menu doesn't display correctly, press '!'

 ‣ ⬢  Ruby
   ⬢  Python
   ⬡  Node.js
   ⬡  Meteor

Le programme d'installation va maintenant vérifier les exigences. Le programme d'installation ne rencontrera aucune dépendance manquante et procédera automatiquement à la compilation et à l'installation du module.

Une fois le module installé, il vous demandera d'ajouter le module au fichier de configuration Apache.

Almost there!

Please edit your Apache configuration file, and add these lines:

   LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
     PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
   </IfModule>

After you restart Apache, you are ready to deploy any number of web
applications on Apache, with a minimum amount of configuration!

Press ENTER when you are done editing.

Nous allons ignorer cela pour l'instant et le terminerons plus tard dans le didacticiel. Appuyez sur ENTERpour sauter cette étape.

Enfin, le script d'installation validera l'installation et vous verrez un avertissement indiquant que le module Passager n'est pas spécifié dans la configuration Apache.

Validating installation...

 * Checking whether this Passenger install is in PATH... ✓
 * Checking whether there are no other Passenger installations... ✓
 * Checking whether Apache is installed... ✓
 * Checking whether the Passenger module is correctly configured in Apache... (!)

   You did not specify 'LoadModule passenger_module' in any of your Apache
   configuration files. Please paste the configuration snippet that this
   installer printed earlier, into one of your Apache configuration files, such
   as /etc/apache2/apache2.conf.


Detected 0 error(s), 1 warning(s).
Press ENTER to continue.

Maintenant que nous avons installé le module Passenger pour Apache, téléchargez et installez Redmine. Basculez à sudonouveau vers l' utilisateur car nous n'avons plus besoin d'exécuter de commandes à l'aide de l' rootutilisateur.

exit

Installer Redmine

Il est recommandé d'utiliser un utilisateur non privilégié pour exécuter l'application afin de la maintenir isolée du reste du système. Créez un nouvel utilisateur pour Redmine et basculez vers l'utilisateur nouvellement créé.

sudo adduser --disabled-password --gecos "Redmine User" redmine
sudo su - redmine

Téléchargez la dernière version de Redmine à partir de la page de téléchargement officielle de Redmine .

cd ~
wget http://www.redmine.org/releases/redmine-3.4.4.tar.gz

Extrayez l'archive et renommez le répertoire par souci de commodité.

tar -xf redmine-*.tar.gz
mv redmine-*/ redmine/

Copiez les exemples de fichiers de configuration sur son emplacement de production.

cd redmine
cp config/configuration.yml.example config/configuration.yml
cp config/database.yml.example config/database.yml

Ouvrez le fichier de configuration de la base de données que nous venons de copier pour entrer les détails de la base de données.

nano config/database.yml

Par défaut, le fichier de base de données est configuré pour MySQL. Trouvez les configurations de production et de développement et testez qui utilise l'adaptateur MySQL. Mettez en commentaire toutes ces lignes.

#production:
#  adapter: mysql2
#  database: redmine
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#development:
#  adapter: mysql2
#  database: redmine_development
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

#test:
#  adapter: mysql2
#  database: redmine_test
#  host: localhost
#  username: root
#  password: ""
#  encoding: utf8

Furthur, retrouvez les lignes qui sont commentées, ayant la production configuration de l' postgresql adaptateur. Décommentez ces lignes et mettez à jour le nom de la base de données et les informations d'identification de l'utilisateur. Assurez-vous d'utiliser l'indentation correcte, qui est de deux espaces.

production:
  adapter: postgresql
  database: redmine
  host: localhost
  username: redmine
  password: "DBPassword"

Configurez l'application pour utiliser la configuration PostgreSQL.

bundle config build.pg --with-pg-config=/usr/bin/pg_config

Installez les dépendances requises par l'application.

bundle install --path vendor/bundle --without development test

Vous verrez le message suivant à la fin de l'installation.

Installing roadie-rails 1.1.1
Bundle complete! 31 Gemfile dependencies, 55 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`

La commande suivante génère des jetons secrets qui sont utilisés pour coder les données de session.

bundle exec rake generate_secret_token

Écrivez la base de données PostgreSQL.

RAILS_ENV=production bundle exec rake db:migrate

Exécutez la commande suivante, qui écrit les données par défaut dans la base de données PostgreSQL.

RAILS_ENV=production bundle exec rake redmine:load_default_data

La commande ci-dessus vous demandera de choisir la langue par défaut à utiliser avec l'application. Le choix par défaut est l'anglais; choisissez selon votre préférence.

[redmine@vultr redmine]$ RAILS_ENV=production bundle exec rake redmine:load_default_data

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, es-PA, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]
====================================
Default configuration data loaded.

L'installation de l'application Redmine est maintenant terminée. Modifiez la propriété et les autorisations des répertoires et des fichiers.

mkdir -p tmp tmp/pdf public/plugin_assets
chown -R redmine:redmine files log tmp public/plugin_assets
chmod -R 755 files log tmp public/plugin_assets

Nous avons configuré tout ce dont nous avons besoin de l'utilisateur non privilégié. Revenez à l' sudo utilisateur en exécutant su - <username>.

Configurer Apache

Ajoutez le module Passenger pour Apache dans le fichier de configuration Apache. Cela chargera automatiquement le module Passager.

echo "LoadModule passenger_module /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/buildout/apache2/mod_passenger.so" | sudo tee -a /etc/apache2/apache2.conf

Remarque: le chemin d'accès au module Passager peut changer lors de la sortie d'une nouvelle version de Passenger. Pour trouver le chemin d'accès au module, utilisez la sudo find / -name mod_passenger.socommande.

Créez un nouveau fichier hôte virtuel pour votre application Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Remplissez le fichier avec le contenu suivant.

<VirtualHost *:80>
    ServerName redmine.example.com

    DocumentRoot /home/redmine/redmine/public

    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine

    <Directory /home/redmine/redmine/public>
      Allow from all
      Options -MultiViews
      Require all granted
    </Directory>
</VirtualHost>

Assurez-vous de le remplacer redmine.example.com par votre nom de domaine réel. Assurez-vous également que le chemin d'accès à PassengerRoot et PassengerDefaultRuby est correct. Le chemin d'accès aux fichiers binaires peut changer lors de la sortie d'une nouvelle version de Ruby ou Passenger. Pour trouver ces chemins, exécutez la commande suivante.

passenger-config about ruby-command

Vous obtiendrez la sortie suivante.

user@vultr:~$ passenger-config about ruby-command
passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  Version: ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
  To use in Apache: PassengerRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use in Nginx : passenger_ruby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
  To use with Standalone: /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3/bin/passenger start


## Notes for RVM users
Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config about ruby-command'.

Une fois le fichier hôte virtuel créé. Activez la configuration.

sudo a2ensite redmine

Redémarrez le serveur Web Apache.

sudo systemctl restart apache2

Vous pouvez maintenant accéder à votre interface Redmine sur http://redmine.example.com. Connectez-vous avec le nom d'utilisateur adminet le mot de passe admin. Lors de votre première connexion, Redmine vous demandera de mettre à jour le mot de passe.

Sécuriser Apache avec Let's Encrypt SSL

Comme notre installation Redmine est sur un serveur public, il est recommandé d'utiliser SSL pour sécuriser l'échange des données du serveur.

Ajoutez le référentiel Certbot.

sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update

Installez Certbot, qui est l'application cliente de Let's Encrypt CA.

sudo apt -y install certbot

Remarque: Pour obtenir des certificats de Let's Encrypt CA, le domaine pour lequel les certificats doivent être générés doit être dirigé vers le serveur. Sinon, apportez les modifications nécessaires aux enregistrements DNS du domaine et attendez que le DNS se propage avant de refaire la demande de certificat. Certbot vérifie l'autorité de domaine avant de fournir les certificats.

Générez les certificats SSL.

sudo certbot certonly --webroot -w /home/redmine/redmine/public -d redmine.example.com

Les certificats générés sont susceptibles d'être stockés dans /etc/letsencrypt/live/redmine.example.com/. Le certificat SSL sera stocké sous cert.pem et la clé privée sera stockée sous privkey.pem.

Les certificats Let's Encrypt expirent dans 90 jours, il est donc recommandé de configurer le renouvellement automatique des certificats à l'aide des tâches Cron.

Ouvrez le fichier de travail Cron pour l' root utilisateur.

sudo crontab -e

Ajoutez la ligne suivante à la fin du fichier.

30 5 * * * /usr/bin/certbot renew --quiet

Le travail Cron ci-dessus s'exécutera tous les jours à 5h30. Si le certificat doit expirer, il sera automatiquement renouvelé.

Activez le module SSL pour Apache.

sudo a2enmod ssl

Modifiez le fichier hôte virtuel que nous avons créé précédemment pour Redmine.

sudo nano /etc/apache2/sites-available/redmine.conf

Modifiez le fichier hôte virtuel pour qu'il ressemble à ce qui suit.

<VirtualHost *:80>
    ServerName redmine.example.com
    Redirect permanent / https://redmine.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName redmine.example.com
    DocumentRoot "/home/redmine/redmine/public"
    <Directory "/home/redmine/redmine/public">
        Options None
        Require all granted
    </Directory>
    PassengerAppEnv production
    PassengerRoot /usr/share/rvm/gems/ruby-2.5.1/gems/passenger-5.2.3
    PassengerDefaultRuby /usr/share/rvm/gems/ruby-2.5.1/wrappers/ruby
    PassengerUser redmine
    PassengerHighPerformance on

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/redmine.example.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/redmine.example.com/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/redmine.example.com/chain.pem

    SSLProtocol             all -SSLv2 -SSLv3
    SSLHonorCipherOrder     on
    SSLCipherSuite          ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

    <IfModule headers_module>
        Header always edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains"
    </IfModule>
</VirtualHost>

Enregistrez le fichier et quittez l'éditeur.

Redémarrez Apache pour que les modifications prennent effet.

sudo systemctl restart apache2

Vous pouvez maintenant accéder Redmine plus HTTPS à https://redmine.example.com.

Félicitations, vous avez correctement installé Redmine sur votre instance Ubuntu 16.04. Commencez à développer votre projet en créant ou en important votre projet.



Leave a Comment

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

LIA peut-elle lutter contre un nombre croissant dattaques de ransomware

Les attaques de ransomware sont en augmentation, mais l'IA peut-elle aider à lutter contre le dernier virus informatique ? L'IA est-elle la réponse ? Lisez ici, sachez que l'IA est un boone ou un fléau

ReactOS : est-ce lavenir de Windows ?

ReactOS : est-ce lavenir de Windows ?

ReactOS, un système d'exploitation open source et gratuit est ici avec la dernière version. Cela peut-il suffire aux besoins des utilisateurs de Windows modernes et faire tomber Microsoft ? Découvrons-en plus sur cet ancien style, mais une expérience de système d'exploitation plus récente.

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Restez connecté via lapplication de bureau WhatsApp 24 * 7

Whatsapp a finalement lancé l'application de bureau pour les utilisateurs Mac et Windows. Vous pouvez désormais accéder facilement à Whatsapp depuis Windows ou Mac. Disponible pour Windows 8+ et Mac OS 10.9+

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Comment lIA peut-elle faire passer lautomatisation des processus au niveau supérieur ?

Lisez ceci pour savoir comment l'intelligence artificielle devient populaire parmi les petites entreprises et comment elle augmente les probabilités de les faire grandir et de donner à leurs concurrents un avantage.

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

La mise à jour du supplément macOS Catalina 10.15.4 cause plus de problèmes quelle nen résout

Récemment, Apple a publié macOS Catalina 10.15.4, une mise à jour supplémentaire pour résoudre les problèmes, mais il semble que la mise à jour cause davantage de problèmes, ce qui entraîne le bridage des machines mac. Lisez cet article pour en savoir plus

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux dextraction de données de Big Data

13 outils commerciaux d'extraction de données de Big Data

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Quest-ce quun système de fichiers de journalisation et comment fonctionne-t-il ?

Notre ordinateur stocke toutes les données d'une manière organisée connue sous le nom de système de fichiers de journalisation. C'est une méthode efficace qui permet à l'ordinateur de rechercher et d'afficher des fichiers dès que vous appuyez sur la recherche.https://wethegeek.com/?p=94116&preview=true

Singularité technologique : un futur lointain de la civilisation humaine ?

Singularité technologique : un futur lointain de la civilisation humaine ?

Alors que la science évolue à un rythme rapide, prenant le pas sur une grande partie de nos efforts, les risques de nous soumettre à une Singularité inexplicable augmentent également. Lisez, ce que la singularité pourrait signifier pour nous.

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques danalyse des mégadonnées : partie 1

Un aperçu de 26 techniques d'analyse des mégadonnées : partie 1

Limpact de lintelligence artificielle dans les soins de santé 2021

Limpact de lintelligence artificielle dans les soins de santé 2021

L'IA dans le domaine de la santé a fait de grands progrès au cours des dernières décennies. Ainsi, l'avenir de l'IA dans les soins de santé continue de croître de jour en jour.