Comment installer RubyOnRails sur un VPS (OVH) ?

Rails août 27, 2017

On m'a proposé d'écrire un article sur l'installation de Rails sur un VPS. J'ai trouvé l'idée sympa car je suis très habitué à répondre qu'il suffit d'installer docker et de lancer un container ruby... On va donc voir ici comment préparer un VPS pour héberger une application Ruby on Rails !

Acquisition du VPS

La première étape consiste à acheter un VPS. Pour des tests, le premier prix chez OVH (ou n'importe quel hébergeur) suffit largement :
vps ssd cloud
Ensuite, il faut acquérir un nom de domaine, la encore, OVH propose une offre intéressante :
domain

Ce qui nous monte le total de l'opération à 49,668€ TTC pour une année. Sachant qu'il sera possible d'installer plusieurs site sur ce VPS, c'est assez rentable (je trouve) !

Une fois ce processus d'achat terminé (je ne le détaillerais pas, il est relativement simple). Il vous faut configurer le VPS !

Configurer son VPS

Un VPS ne mets que quelques minutes à être prêt mais il faut le configuré, il arrive nu et il vous faut choisir (durant la phase d'achat) une distribution. Je vous conseille fortement la distribution linux debian qui est la plus robuste pour faire de l'hébergement web !
Vous devriez arriver sur cet écran :
vps new
Vous avez donc :

  • un nom (modifiable), j'ai laissé Serveur 2
  • une localisation
  • une distribution (je vous conseille debian 9)
  • une clé ssh à configurer (on reviendra sur cette étape cruciale)
  • des options avancées (qui ne nous intéressent pas ici)
  • le type de facturation (à l'heure ou au mois)

Une fois que c'est fait, passons à la génération d'une clé SSH pour se connecter au VPS !
Pour éviter de refaire ce qui est bien fait, je vous propose pour cette étape de suivre le guide OVH sur le sujet, ici.

Il vous faudra donc le logiciel putty pour gérer votre VPS (disponible ici).
La première configuration nous donne quelque chose comme ça :
putty
Il vous faudra rentrer ici l'adresse IP de vos VPS et votre clé privée ici :
putty clé
une fois que vous cliquerez sur Open vous devriez avoir le message suivant :
vps ssg first
Il vous suffit de l'accepter (il vous annonce que vous vous connectez à un nouvel hôte distant).

La fenêtre de connexion s'ouvre alors et vous demande votre login (il s'agit de debian en minuscule) et enfin vous arrivez sur votre VPS :
vps shell

Premier pas avec le VPS

La première chose à faire est de s'assurer que le VPS est à jour en utilisant la commande sudo apt-get update qui va mettre à jour vos dépôts de paquets puis la commande sudo apt-get upgrade qui va mettre à jour les paquets installés sur votre VPS, cela prendre quelques secondes et vous aurez un affichage de ce type en sortie :
update
S'il vous est posée une question, répondez oui (y) !

Vous avez un VPS à jour, mais il n'est pas accessible de l'extérieur. Autre problème, comment y déposer vos fichiers ?

Installation de Ruby

La première étape pour faire tourner une application RoR (RubyOnRails) est l'installation de Ruby !
Si vous n'avez pas besoin de la dernière version de Ruby, vous pouvez utiliser la commande sudo apt-get install ruby-full cela installera (à l'heure ou j'écris ces lignes) la version 2.3.3p222 de Ruby. Cela peut être embêtant suivant la version de Rails que vous souhaitez installer...

Je vous conseille donc la façon suivante, plus complexe mais permettant d'installer n'importe quelle version de Rails :

  • sudo apt-get install -y build-essential tklib zlib1g-dev libssl-dev libffi-dev libxml2 libxml2-dev libxslt1-dev libreadline-dev pour installer toutes les librairies et dépendances !
  • sudo apt-get clean pour faire le ménage :)
  • git clone https://github.com/rbenv/rbenv.git ~/.rbenv pour récupérer rbenv qui va gérer la version de ruby que vous aller lancer !
  • cd ~/.rbenv && src/configure && make -C src pour compiler l'outil rbenv
  • echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile afin de spécifier le chemin de rbenv dans le PATH de votre VPS !
  • echo 'eval "$(rbenv init-)"' >> /home/debian/.bash_profile pour déclarer rbenv
  • source ~/.bash_profile pour redémarrer votre shell (exec bash est aussi possible)
  • mkdir -p "$(rbenv root)"/plugins pour préparer l'installation d'un plugin
  • git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build pour installer la commande install de rbenv !

Enfin, il ne reste plus qu'à tester tout cela via la commande suivante curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash, la sortie devrait être celle-ci :
rbenv install

Bravo, le plus dur est fait ! Sachez que pour mettre à jour cet outil (rbenv) il suffit de faire cette commande cd ~/.rbenv && git pull et c'est tout !

Maintenant, installons la dernière version de Ruby, la version 2.4.1. Il suffit de faire la commande rbenv install 2.4.1 et c'est parti !
ruby install
Pour info, il est possible d'afficher toutes les versions installable avec cet outil en exécutant la commande rbenv install -l !
Dernière étape : sudo .rbenv/plugins/ruby-build/install.sh pour installer le plugin permettant de "construire" les différentes version de ruby. Et enfin ruby-build 2.4.1 .rbenv/versions/2.4.1 et rbenv global 2.4.1 pour installer et déclarer notre dernière version récupérée :)

Une fois ruby installé, il faut installer Rails !
Pour s'assurer que vous être prêt à passer à la suite, faite ruby -v vous devriez avoir la sortie suivante :
ruby version

Ne vous inquiétez pas si cela prend un peu de temps, le VPS SSD d'OVH ne dispose pas d'un CPU propre (car il est sur le cloud public - donc avec des ressources partagées).

Installer Rails

Maintenant que Ruby est installé il ne reste qu'à installer rails, et là rien de plus simple : gem install rails ! On verifie avec rails --version que tout est correctement installé :
rails
Et nous voilà avec la dernière version de rails !!

Lancer notre application

Bon maintenant que l'on a fait tout ça, comment fait-on pour lancer une application Rails ?

Simple, il faut utiliser filezilla et envoyer nos fichiers dans un répertoire de notre VPS.
Pour cela il faut configurer cet outil (disponible ici, attention l'installeur officiel propose un logiciel secondaire non nécessaire, quand il vous sera demandé, "passez" son installation) comme ceci :
filezilla
Dans le premier cadre bleu, entrez l'ip de votre VPS et dans le second votre clé SSH !

Une fois connecté, vous arriverez ici :
dossiers
Sélectionnez le dossier de votre application sur la gauche et avec un clic droit, faites envoyer !

Maintenant vous avez votre application sur votre VPS il ne reste qu'à se rendre dans ce dossier et faire un coup de bundle install pour installer les gems dépendantes pour votre projet puis rails s pour lancer le serveur. A noter qu'il faut installer la librairie permettant d'installer la gem qui va gérer la base sqlite de l'application : sudo apt-get install libsqlite3-dev ainsi que node-js pour le serveur sudo apt-get install nodejs.

bundle install pour bien installer toutes les dépendances et c'est tout bon !

Accéder à notre application

Maintenant que l'application tourne, comment y accéder ??
Si l'on tape http://ip_de_notre_vps, nous n'arrivons nulle part... C'est normal, votre application Rails se lance par défaut sur le port 3000, il faut donc taper http://ip_de_votre_vps:3000 et le résultat est probant :
rails app

Mettre en place le nom de domaine

Il ne reste plus qu'une étape !! Lier notre nom de domaine à notre VPS de façon à avoir une jolie adresse du type http://www.monsuperdomain.fr au lieu d'avoir à taper une adresse IP...

Pour cela, il faut se rendre dans le manager OVH et se rendre dans la section WEB puis Domaines et cliquer sur le nom de notre domaine :
ovh domaines

Enfin, il faut se rendre dans la partie Zone DNS et cliquer sur le bouton "Ajouter une entrée" :
entrée dns
Ici il faut choisir une entrée A :
entrée A
Ici il faut entrer le nom que l'on veut (avant le domaine) comme www.monsuperdomaine.fr ou web.monsuperdomaine.fr ou encore dev.monsuperdomaine.fr dans le champ sous-domaine. Ensuite il faut spécifier la cible qui est l'adresse IP du VPS.

Il en reste plus qu'à attendre quelques minutes (généralement) et vous pourrez accéder à votre application via http://www.monsuperdomaine.fr:3000

Bonus

Si vous n'aimez pas le :3000 vous pouvez spécifier sur quel port va se lancer le serveur rails via la commande rails s -p 80 le port 80 étant celui du protocol http par défaut ! et vous accéderez à votre application via http://www.monsuperdomaine.fr !

Voilà, le tour est joué !

Nous verrons dans un prochain article comment sécuriser cette installation avec un outil très connu des développeurs : NGINX ainsi qu'un certificat qui permettra d'avoir une adresse en https://www.monsuperdomaine.fr, ce qui est bien mieux :)

Sources

Ici vous retrouverez les différentes sites que j'ai utilisé comme source pour obtenir une installation complète et propre de RBENV, Ruby et Rails !