Comment installer RubyOnRails sur un VPS (OVH) ?
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 :
Ensuite, il faut acquérir un nom de domaine, la encore, OVH propose une offre intéressante :
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 :
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 :
Il vous faudra rentrer ici l'adresse IP de vos VPS et votre clé privée ici :
une fois que vous cliquerez sur Open
vous devriez avoir le message suivant :
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 :
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 :
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 rbenvecho '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 rbenvsource ~/.bash_profile
pour redémarrer votre shell (exec bash
est aussi possible)mkdir -p "$(rbenv root)"/plugins
pour préparer l'installation d'un plugingit 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 :
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 !
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 :
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é :
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 :
Dans le premier cadre bleu, entrez l'ip de votre VPS et dans le second votre clé SSH !
Une fois connecté, vous arriverez ici :
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 :
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 :
Enfin, il faut se rendre dans la partie Zone DNS et cliquer sur le bouton "Ajouter une entrée" :
Ici il faut choisir une 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 !