Comme beaucoup d'hébergeurs, o2switch utilise cPanel pour permettre à ses clients de gérer leurs applications, en les restreignant moins que ses concurrents d'ailleurs. Or, la version 11.30 actuelle de cPanel est incompatible avec la version 3 de Ruby on Rails.
La version 11.34 de cPanel est annoncée pour être compatible avec RoR 3 et utilisera Passenger au lieu de Mongrel pour la mise en production des applications et leur interface avec Apache.
En attendant cette version, la procédure décrite ci-dessous permet la mise en service d'une ou de plusieurs applications RoR 3 adressées depuis un ou plusieurs domaines et sous-domaines DNS, tout en conservant un usage standard d'hébergement sur le domaine principal (ce pourrait être un sous-domaine ou tout autre domaine). D'anciennes applications en RoR 2 continuent à être gérées par la procédure habituelle avec cPanel.
Cette procédure est effectuée exclusivement sous le compte linux du client en partie depuis cPanel, en partie en mode console avec SSH, à l'exclusion de toutes modifications système du serveur.
Les adaptations pour une application RoR 3 figurent aux chapitres « Adaptation de l'application » et « Installation de RoR 3 », le chapitre suivant « Installation de l'application » n'est pas spécifique et s'applique aussi à une application RoR 2. Enfin, le dernier chapitre « Lancement de l'application »vient terminer la procédure.
Adaptation de l'application
L'installation de Passenger demande le compte système du serveur et la version standard de Mongrel est incompatible avec RoR 3, il faut la remplacer par la version « 1.2.0.pre2 ».
Dans le fichier Gemfile de votre application, ajoutez les lignes suivantes pour Mongrel :
# Mongrel / Rails 3
gem "mongrel", '>=1.2.0.pre2'
gem "cgi_multipart_eof_fix"
gem "fastthread"
Avec ces ajouts, l'application peut être testée dans l'environnement de développement avant sa mise en production chez l'hébergeur.
Installation de RoR 3
Le répertoire personnel de l'utilisateur sur le serveur d'hébergement est supposé être /home/USER
. Cette valeur doit être modifiée par la valeur effective chaque fois qu'elle apparaît. Sa représentation abrégée ~/
sous Linux sera utilisée quand ce sera possible dans les commandes.
Vérification de la version de Ruby
Vérifiez avec SSH la version installée par la commande ruby -v
La valeur indiquée doit être au minimum de « 1.8.7-2010.02 ». Dans le cas contraire, RoR 3 ne fonctionnera pas correctement ; demandez une mise à niveau à votre hébergeur avant d'aller plus loin.
Définition d'un dossier pour les gems
Dans les lignes qui suivent, remplacez USER
par votre identifiant de compte.
La commande Ruby Gems de cPanel installe les gems de l'utilisateur dans le répertoire ~/ruby/gems et le module rails en version 2 est normalement celui installé sous /usr/bin.
Installez la version 3 des gems de RoR et ceux utilisés dans les applications dans un répertoire différent : /home/cp/.gems
par la commande mkdir /home/USER/.gems
Pour que les modules Ruby – à commencer par RubyGems, le gestionnaire des gems – utilisent ce nouvel espace, créez le fichier ~/.gemrc
avec comme contenu les cinq lignes suivantes :
---
gemhome: /home/USER/.gems
gempath:
- /home/USER/.gems
- /usr/lib/ruby/gems/1.8
Accès à Rails 3
Pour que les commandes console utilisent par défaut la nouvelle version de Rails que vous allez installer, modifiez le fichier ~/.bash_profile
avec le contenu suivant :
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.gems/bin:$HOME/bin
GEM_HOME=$HOME/.gems:/usr/lib/ruby/gems/1.8
GEM_PATH=$HOME/.gems:/usr/lib/ruby/gems/1.8
export PATH GEM_HOME GEM_PATH
Pour que ces modifications soient prises en compte dans votre session courante SSH, tapez la commande : source ~/.bash_profile
Installation des gems pour RoR 3
La commande gem install rails
installe la dernière version de RoR, actuellement la version 3.0.10. Pour installer, une version spécifique, taper par exemple : gem install rails -v 3.0.9
Pour vérifier la bonne activation de la nouvelle version installée, taper : rails -v
Installez de même les gems de Mongrel et ceux utilisés par votre application et donc listés dans votre fichier Gemfile
.
NB : Par sécurité, vous devez préciser la version de tous les gems sur les lignes de Gemfile ; sinon, mettez à niveau votre environnement de développement et testez votre application avec les gems des mêmes versions que celle du serveur d'hébergement.
Installation de l'application
Création de l'application avec cPanel
Activez la fonction Ruby on Rails de cPanel et remplir le premier cadre « Créer une application Ruby on Rails » :
- Nom d'application :
mon_appli
pour l'exemple ou ce que vous voulez
- Chargement au démarrage ? : ne pas cocher
- Chemin de l'application :
rails_apps/mon_appli
ou ce que vous voulez
Un clic sur le bouton « Créer une liste de destinataires » crée un squelette d'application RoR 2, mais aussi installe plusieurs fichiers qui seront utilisés par la suite notamment par cPanel ou par Apache.
Téléchargement de l'application
En FTP, remplacez le contenu du dossier ~/rails_apps/mon_appli
par tous les fichiers de votre application.
Création d'un sous-domaine
Pour un accès à l'application depuis un ou plusieurs sous-domaines, vous devez les créer :
Activez la fonction Sous-domaines de cPanel et remplir le formulaire « Créer un sous-domaine » :
- Sous-domaine : taper le nom souhaité et sélectionner le domaine ;
- Répertoire principal des documents :
rails_apps/mon_appli/public
Mise en place d'une réécriture
Une réécriture demande le transfert des flux entrants du port 80, standard pour http, vers le port affecté à votre application par cPanel (12001 ou une valeur suivante).
Activez à nouveau la fonction Ruby on Rails de cPanel et dans la cadre « Créer une réécriture », cliquez sur le bouton « Créer une réécriture » en face de mon_appli
. Sur le nouveau formulaire affiché, choisissez le sous-domaine précédemment créé ou un domaine spécifique, laissez vide le champ complémentaire et n'oubliez pas de cliquer sur le bouton « Enregistrer ».
Lancement de l'application RoR 3
Lancement manuel
Depuis une session SSH, tapez les deux commandes suivantes :
cd ~/rails_apps/mon_appli
rails s -p 12001 -e production -d
avec :
s : abréviation de server
-p 12001 : remplacer 12001 par la valeur affectée par cPanel
-e production : environnement de production
-d : détachement du processus de la console SSH
(sinon, l'application s'arrêterait à la fermeture de la session SSH)
Arrêt manuel
Depuis une session SSH, tapez la commande ps -fu USER
(remplacez USER
par votre identifiant de compte) et repérez le PID de la commande de lancement de l'application.
Tuez alors le processus par la commande kill -15 PID
(remplacez PID
par sa valeur).