La version 11.30 de cPanel ne permet de gérer l'hébergement collectif que d'applications RoR 2. Avec un peu d'effort, on peut faire tourner des application en version 3.

L'application est hébergée à Roubaix par la société OVH sur un serveur virtuel depuis aout 2013. L'article sur les conditions d'exploitation en hébergement mutualisé au travers du logiciel cPanel est maintenu à titre historique, pour bons et loyaux services rendus chez o2switch pendant deux ans.

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).

↑ Haut