Le framework Ruby on Rails développé en Ruby intègre un serveur web présenté par les concepteurs comme un serveur web de développement et ne doit en aucun cas dépasser ce stade et être placé en production. Ainsi, lors du passage en production de votre chef d'oeuvre en Ruby, il faut trouver LE serveur web. Un des plus connu du marché, Apache 2 ([url=http://httpd.apache.org/]Site officiel[/url]) ne communique pas par défaut avec Ruby et encore moins avec Ruby on Rails. Je vous propose ici de voir comment installer et sécuriser un minimum apache 2 avec Ruby et Rails. Ce tuto se basera sur un Debian 6. Nous en profiterons pour créer notre premier projet rails avec mysql.
[i]Prérequis :[/i]
[][b]1. Installation d'apache2, de MySQL et de Ruby[/b][/]
Pour installer tous ces paquets, nous allons passer par le gestionnaires de paquets. C'est la première chose à faire pour avoir une installation sécurisée et sans bugs ! En effet, les paquets Debian issue des dépôts officiels sont testés par les équipes Debian avant mise en production. C'est un gage de sécurité et de qualité reconnu dans toute la communauté Linux, profitons en !
[code]
apt-get update
apt-get upgrade
apt-get install apache2 ruby mysql-server rubygems ruby-dev libmysqlclient16 libmysqlclient-dev mysql-client mysql-common
[/code]
L'installer va vous demander de créer un mot de passe administrateur pour gérer MySQL (compte root). Après quelques secondes tout est installé.
Détaillons les paquets les plus importants:
[list]
Si vous choisissez d'avoir la dernière version de Ruby, c'est à vos risques et périls, je ne vous le conseil pas sur un environnement de production.
[][b]2. Installation de rails[/b][/]
Précédemment nous avons installer le gestionnaire de paquet Ruby appelé "gem". Pour installer Rails nous allons l'utiliser. Il suffit de faire :
[code]
gem install rake
Et pour tout le monde faitesgem install rails
[/code]
C'est un peu long... Une fois que c'est fait le fait de taper la commande rails ne fonctionne pas. Il faut l'ajouter dans le PATH c'est à dire dans la liste des répertoires que votre Debian va parcourir à la recherche des binaires. Pour cela nous allons faire :
[code]echo "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin" >> ~/.bashrc[/code]
Il vous suffit maintenant de vous déconnecter et vous reconnecter pour prendre en charge les modifications. Vous pouvez tester en tapant dans votre console :
[code]rails -v
Rails 3.1.3
[/code]
[][b]3. Installation de Passenger[/b][/]
Passenger va nous faciliter la vie ! Il va installer et configurer pour nous les modules apaches nécessaires pour gérer Ruby et Rails. Pour ce faire nous l'installons :
[code]gem install passenger[/code]
Et nous le configurons
[code]
passenger-install-apache2-module
[/code]
Suivez les étapes, c'est super simple à faire. Tout se passe normalement bien. Pour finir d'installer Passenger il suffit de créer un fichier de conf apache pour Ruby :
[code]
vi /etc/apache2/conf.d/ruby.conf
[/code]
Et d'y coller le résultat de Passenger et d'enregistrer:
[code]
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.11
PassengerRuby /usr/bin/ruby1.8
[/code]
Croyez moi sur parole mais maintenant Apache 2 comprend le Ruby mais ne sait pas encore fonctionné avec Rails. Voyons ça !
[][b]4. Création d'un projet Rails[/b][/]
Nous allons créer un projet rails que nous allons appeler "Toto". Nous le créons à la racine du serveur web :
[code]
cd /var/www
rails new Toto -d mysql -T
[/code]
Alors je précise grâce au [i]-d mysql[/i] que je veux qu'il utilise le SGBDR mysql et non sqllite3. Le [i]-T[/i] désactive les procédure de test de Rails que je n'utilise pas, j'utilise d'autres outils. A vous de voir...
Pour que passenger fonctionne j'ai besoin d'ajouter à mon projet le gem "[i]therubyracer[/i]". Pour ce faire j'édite le fichier Gemfile à la racine de mon projet Toto précédemment créé
[code]
cd Toto
vi Gemfile
gem 'therubyracer'
[/code]
Après avoir enregistré, il suffit d'installer ce fameux gem en faisant :
[code]bundle install[/code]
Si vous allez via votre navigateur interrogé votre serveur web dans le répertoire Toto, il va bêtement vous afficher l'arborescence sans vous rediriger vers le bon répertoire à savoir le répertoire public. Et si vous allez dans le répertoire "public" le lien "About your application’s environment" afficher une erreur au lieu des informations de votre application Rails. Nous allons remédié à cela !
[][b]5. Paramètrage d'apache[/b][/]
Pour cela nous allons modifié le site par défaut affiché par apache. Editez le fichier "000-default"
[code]
vi /etc/apache2/sites-enabled/000-default
[/code]
Effacez tout le contenu et mettez ceci :
[code]
<Virtualhost *:80>
DocumentRoot /var/www/Toto/public/
RailsEnv development # Définie l'environnement de Rails
<Directory /var/www/Toto/public>
Options ExecCGI FollowSymLinks
Options -Multiviews
AddHandler cgi-script .cgi
AllowOverride all
Order allow,deny
Allow from all
</Directory>
</Virtualhost>
Enregistrez et faite un reload d'apache/etc/init.d/apache2 reload
[/code]
Voila ! Si vous tapez dans votre navigateur web "http://monsite.org" vous tomberez sur "Welcome aboard" de l'application Toto de Rails et le lien "About your application’s environnement" fonctionne et vous affiche les variables Rails. Il ne reste plus qu'a développer votre site ou du moins le mettre en production.
Ce tutoriel n'est pas complet. Normalement j'utilise la version Passenger de Debian 6 mais c'est un peut plus compliqué à paramétrer, déjà vous avez de quoi vous amuser !
N'hésitez pas à me faire part de vos remarques et questions.