Déployer une application Ruby / ROR avec l'outil Setup Ruby App
L'outil Setup Ruby App permet de créer un environnement Ruby sur votre hébergement afin de mettre en ligne une application web conçu avec Ruby (ou Ruby on Rails - RoR). L'outil permet de :
- Choisir la version de Ruby qui sera utilisée dans le projet. A cet instant les versions suivantes de Ruby sont proposées : 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1
- L'outil va également faire le lien entre votre application Ruby/RoR et un nom de domaine de votre hébergement. En arrière plan Phusion Passenger est utilisé pour faire ce lien.
- Vous pouvez également gérer/installer vos dépendances avec l'outil gem (bundler est également installable et utilisable)
- Un environnement virtuel Ruby sera créé par l'outil. Une commande spéciale est donné par l'outil afin de travailler dans cet environnement virtuel lorsque vous travaillez en SSH par exemple.
En résumé, c'est l'outil à utiliser sur vous souhaitez installer une application web ruby sur votre espace d'hébergement o2switch. L'offre o2switch supporte également d'autres langages comme PHP, Python et NodeJS.
Icône | Nom | Catégorie | Description |
---|---|---|---|
Setup Ruby App | Logiciel | Permet de créer un environnement Ruby afin de d'installer une application web Ruby ou Ruby On Rails |
Présentation de l'outil
L'outil est assez simple, il ne contient qu'une seule page découpée en deux partie :
- une partie permettant de créer une nouvelle application Ruby (1 à 4 dans la capture)
- l'autre partie permet de lister et gérer les applications Ruby qui sont déjà déployées (5 à 11 dans la capture)
La page d’accueil de l'outil contient ces deux parties.
Page d’accueil de l'outil de création et de gestion d'une application Ruby
L'outil contient plusieurs éléments.
Ruby Version
permet de choisir la version de Ruby à utiliser lors de la création d'un nouveau projet Ruby. À cet instant les versions 1.8, 1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 3.0, 3.1 de Ruby sont proposées.App Directory
correspond au répertoire dans lequel va se trouver les fichiers sources de l'application Ruby. Généralement, il s'agit d'un dossier qui se situe à la racine de l'hébergement (recommandé). À ne pas confondre avec le dossier qui est associé au nom de domaine (cf. la note plus bas dans cet article)App Domain/URI
permet de choisir sur quel nom de domaine va être déployée l'application et si cela sera publié dans un sous dossierSetup
est le bouton de confirmation permettant de lancer la création du nouveau projetApp Directory
situé dans la partie des applications déjà installées indique dans quel dossier de l'hébergement se trouve les fichiers sources de l'application en place. Il est recommandé de ne pas modifier ce dossier une fois l'application créée, c'est mieux de supprimer/recréer l'application.App URI
dans la partie des applications installées indique sous quel domaine/URL répond l'applicationRuby Version
dans la partie des applications installées permet de changer la version de Ruby d'un projet existantModules
permet de lister et d'installer les dépendancesgems
de l'application. Pour une installation de dépendance, on recommande plutôt de faire cela en SSH ou avec l'outil Terminal c'est plus pratique.Execute command
permet de lancer une commande dans votre environnement Ruby, utile pour dépanner si vous ne souhaitez pas travailler en SSH ou avec l'outil TerminalCommand for entering to virutal environnement
est la commande à lancer lorsque vous travaillez SSH ou avec l'outil Terminal pour entrer dans votre environnement virtuel Ruby et travailler sur votre projetUpdate
,Reset
,Restart
,Remove
permet de gérer l'application en la mettant à jour, en remettant les réglages par défaut, en relançant l'application ou en la supprimant totalement
App Directory et racine du document de domaine
Il ne faut pas confondre leApp Directory
, qui est le répertoire dans lequel se trouve les fichiers sources de votre application et la racine du document
du nom de domaine qui est le dossier dans lequel pointe votre nom de domaine. Exemple : les fichiers sources de votre application vont se trouver dans le dossier
/monAppRuby
et votre nom de domaine va pointer dans /domaine.tld
. Il n'y aura pas grand chose dans le dossier /domaine.tld
et c'est normal. C'est l'outil Setup Ruby App
qui fait le lien entre ces deux dossiers. Nous recommandons à ce que ces deux dossiers restent séparés.
SSH et Terminal
Lorsque vous travaillez SSH ou avec l'outil Terminal, il faut absolument commencer par lancer la commande qui est donné dans la partieCommand for entering to virutal environnement
. C'est très important. Si vous ne faites pas cela, vous n'allez pas travailler dans votre environnement Ruby virtuel, donc vous n'aurez pas accès à la version de Ruby que vous avez choisie, ni aux dépendances que vous avez pu installer !
Déployer une application
Comment installer Redmine ?
Afin de prendre un exemple concret de déploiement d'application Ruby, nous allons voir comment installer l'application de gestion de projet Redmine sur un compte de l'hébergeur web français o2switch. C'est une application Ruby reconnue et complète, ça permet de voir l'installation d'une application réelle.
Pour cela, nous allons suivre la procédure d'installation générique. En résumé, nous allons :
- Créer un projet Ruby vide pour commencer, afin d'avoir accès à un environnement Ruby
- Nous allons récupérer les sources de l'application et les mettre dans le dossier du projet, puis créer/configurer la base de données.
- Ensuite, il faudra installer les dépendances de l'application, nous allons faire cela en ligne de commande car c'est bien plus pratique.
- Après, il faudra lancer quelques commandes permettant de remplir la base de données de Redmine avec des données et faire 2-3 configurations.
- Enfin, il ne restera plus qu'a relancer l'application dans l'outil Setup Ruby App
Création du projet Ruby
En premier, nous allons créer un projet Ruby afin que l'outil Setup Ruby App génère un environnement Ruby Virtuel.
Création d'une nouvelle application Ruby
Il n'y a pas grand chose à renseigner :
Ruby Version
on choisi la dernière version de Ruby car redmine supporte celaApp Directory
on respecte les recommandations et on créé un dossier à la racine de l'hébergement, dossier qui est différent du dossier dans lequel pointe le nom de domaine.App Domain
on choisi le sous domaine que l'on a créé pour ce projet
Une fois que le projet est créé, deux choses :
- Par défaut, l'outil met en place un
Hello World
donc si vous naviguez sur le domaine, unIts Work
s'affichera avec la version de Ruby. Ca génère aussi quelques fichiers dans le dossierApp Directory
et notamment le code qui sert à afficher ceIt works
. - Mais surtout, on peut se connecter en SSH et utiliser la commande
source
fourni par l'outil pour entrer dans l'environnement Ruby
Récupération des sources
Étape suivante, on se connecte en SSH (ou avec l'outil Terminal) puis on lance la commande source
permettant d'entrer dans l'environnement Ruby.
La commande source
permet de travailler dans l'environnement virtuel ruby
Dés que l'on lance la commande, on constate que le prompt SSH change. C'est à cela que l'on reconnaît que l'on est bien dans l'environnement virtuel.
Le prompt SSH change
Ensuite, on peut lancer nos commandes SSH pour récupérer les sources de l'application et le mettre dans le bon dossier de l'hébergement. On va également configurer la base de données qu'on aura préalablement créé avec l'outil base de données mysql de cPanel.
# On se place dans le dossier home cd # On télécharge les sources depuis le lien fourni sur Redmine.org wget https://www.redmine.org/releases/redmine-5.0.5.tar.gz # On extrait les sources tar -xvf redmine-5.0.5.tar.gz # On supprime le dossier de l'application créé par cPanel (It Works) rm -vfr monAppRedmine/ # Et on met Redmine à la place mv redmine-5.0.5 monAppRedmine/ # On entre dans le dossier de l'application cd monAppRedmine # On copie le fichier de configuration d'exemple pour la base de données cp -va config/database.yml.example config/database.yml # On édite le fichier de configuration (voir plus loin pour le détails) vi config/database.yml
# Modifications effectuées dans config/database.yml production: adapter: mysql2 database: o2dev_redmine host: localhost username: o2dev_redmine password: mot_de_passe_mysql # Use "utf8" instead of "utfmb4" for MySQL prior to 5.7.7 encoding: utf8mb4
Installation des dépendances
Ensuite, on suit le guide d'installation de Redmine et on installe les dépendances de l'application.
# On installe Bundler qui est nécessaire à l'installation de toutes les dépendances de Redmine gem install bundler # ajoute la ligne gem "bigdecimal" au fichier Gemfile, sinon l'une des commande suivante va planter sed -i -e "/gem \"rails\"/i\gem \"bigdecimal\"" Gemfile # Puis les dépendances bundle install --without development test
Données de démo et configuration
Maintenant, il faut que Redmine remplisse la base de données à commencer par les tables et le schéma de la base de données (migration) puis il faudra également installer quelques données d'exemples pour que Redmine ne soit pas vide. Il faut aussi faire quelques configurations comme la génération de clés secrètes.
# Génération de clés secrètes bundle exec rake generate_secret_token # Création du schéma de la base de données RAILS_ENV=production bundle exec rake db:migrate # Chargement des données par défaut RAILS_ENV=production bundle exec rake redmine:load_default_data # Création de dossiers mkdir -p tmp tmp/pdf public/plugin_assets # A présent, il ne reste plus qu'à éditer le fichier .htaccess qui se trouve à la racine du site internet afin d'indiquer que l'application devrait être lancée en mode de production, sinon cela va générer une erreur au lancement echo 'PassengerAppEnv production' >> /home/o2dev/redmine.o2dev.fr/.htaccess
Lancement de l'application
Il ne reste plus qu'à retourner dans l'outil Setup Ruby App puis à faire un Restart
de l'application. On peut se connecter avec les accès par défaut : admin / admin.
Usages avancés
Environnement
Il est possible d'indiquer à l'application web (RAILS_ENV
) qu'elle est en mode de production
ou de développement
en ajoutant la ligne suivante dans le .htaccess à la racine du nom de domaine :
# Valeurs possibles : production, developpement
PassengerAppEnv production
Mode debug
En cas d'erreurs, la page qui s'affiche dans le navigateur ne contient pas d'informations. Il est possible d'activer un mode d'erreur “friendly” en éditant le fichier .htaccess qui se trouve à la racine du nom de domaine :
PassengerAppEnv development
PassengerFriendlyErrorPages on
Les erreurs sont également loguées dans l'outil erreurs de cPanel.
CLI
Il est possible de déployer intégralement une application Ruby en ligne de commande. Cela dépasse le cadre de cette documentation, mais vous pouvez utiliser la commande cloudlinux-selector
qui est documentée ici.
Cela peut être utilisé lors d'un déploiement automatique, via GIT par exemple.
Chemins vers les différentes versions des exécutables
Plusieurs versions de Ruby sont installées, il est parfois nécessaire de connaitre le chemin vers les différentes versions des fichiers exécutables Ruby, notamment lorsque Ruby est utilisée comme une commande CLI, indépendante d'un projet web complet Ruby.
Pour un exemple d'utilisation, voir le tutoriel sur la modification du $PATH.
- Chemin vers les exécutables Ruby
# A noter que dans le dossier dans lequel se trouve ruby, vous retrouverez également d'autres exécutables comme # bundle, bundler, erc, gem, rake, rdoc /opt/alt/ruby18/bin/ruby /opt/alt/ruby19/bin/ruby /opt/alt/ruby20/bin/ruby /opt/alt/ruby21/bin/ruby /opt/alt/ruby22/bin/ruby /opt/alt/ruby23/bin/ruby /opt/alt/ruby24/bin/ruby /opt/alt/ruby25/bin/ruby /opt/alt/ruby26/bin/ruby /opt/alt/ruby27/bin/ruby /opt/alt/ruby30/bin/ruby /opt/alt/ruby31/bin/ruby