Créer un hébergement Ruby On Rails sous un serveur Ubuntu

Un excellent tuto trouvé chez blogbangbang.com :

Je vous avait parlé il y a peu de la création d’une application RubyOnRails.
C’est bien mais un site c’est fait pour être hébergé quelquepart !
Et malheureusement Mongrel, on connait pas trop, on a l’habitude d’Apache…

Et bien celà tombe bien, car c’est deux là vont très bien ensemble, il est en effet possible d’utiliser apache pour créer les virtual host, servir une partie des fichiers… et Mongrel pour le reste.

C’est même selon les spécialistes, le meilleur moyen d’héberger un site Rails actuellement.
C’est bien mais comment on fait ? Et bien je vous explique tout de suite la procédure sur une Ubuntu…

Je pars du princpe que vous avez une application rails (la mienne s’appellera mynewsite)avec un serveur mongrel qui fonctionne en local(accessible sur http://localhost:3000).

Avant tout, vous devez stoper votre serveur Mongrel afin de faire prendre le relais à Apache+Mongrel.

mongrel_rails stop //à éxécuter à la racine de votre aplication rails.

Puis, si vous suivez ce tuto à la lettre avec un nom de domaine qui ne vous appartient pas, vous devez ajouter à votre fichier /etc/hosts le site désiré, afin de ne pas etre redirigé vers le vrai mynewsite.com.
La ligne devrait donc ressembler à ça :

127.0.0.1 mynewsite.com

Dans un premier temps, nous devons activer le module proxy d’apache.

1- Activer le module proxy d’apache

sudo a2enmod proxy

2- Créer le virual host

Le virtual host se crée comme n’importe quel autre avec apache2 : donc on va creer un nouveau fichier : 001-myewsite dans le répertoire /etc/apache2/sites -available (si vous hébergez déjà des sites, pensez à modifier le 001 en 002 ou plus).

Le VirtuaHost doit donc ressembler à cela :


ServerName mynewsite.com
ServerAlias www.mynewsite.com

ProxyPass / http://www.mynewsite.com:3000/
ProxyPassReverse / http://www.mynewsite.com:3000
ProxyPreserveHost on

#Fix for Apache bug 39499
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1

# Ne pas rediriger les images, les CSS
# et les Javascripts vers Mongrel
ProxyPass /images !
ProxyPass /stylesheets !
ProxyPass /javascripts !

# Et précisons le path où se trouve
# les images, les CSS et les javascripts
Alias /images /var/www/mynewsite/public/images
Alias /stylesheets /var/www/mynewsite/public/stylesheets
Alias /javascripts /var/www/mynewsite/public/javascripts

CustomLog /var/www/mynewsite/log/access “%h %l %u %t \”%r\” %s %b \”%{Referer}i\” \”%{User-Agent}i\””
ErrorLog /var/www/mynewsite/log/error

Explications :

Les deux premières lignes sont évidentes, on indique que ce virtual host fera tourner les sites demandé sur mynewsite.com et www.mynewsite.com.

Notre appli tourne sur le port 3000 de la machine mais il est quand meme plus agréable de taper mynewsite.com que mynewsite.com:3000 pour acceder au site.
C’est le but des 3 lignes suivantes.

Pour ce faire on utilise le mod_proxy d’apache (que l’on vient d’installer) en lui indiquant que les demandes faites sur mynewsite.com doivent être redirigées vers mynewsite.com:3000 (cela se fait bien sur de maniere invisible et l’adresse dans la barre d’adresse ne changera pas.)

On trouve ensuite 2 lignes qui permettent de résoudre un bug d’Apache lorsqu’il est associé à Mongrel.

Par la suite, on précise grâce à ProxyPass que les demandes pour les dossiers images, stylesheets et javascripts ne seront pas redirigées vers Mongrel (Apache est plus rapide pour ces contenus).
On indique donc à Apache le chemin vers ces dossiers grâce aux directives Alias.

Enfin les directives CustomLog et ErrorLog indique à apache ou stocker les logs d’acces et d’erreur de notre site.
On les place logiquement dans le dossier log de notre application rails.
(il peut être nécessaire d’avoir créer les fichier et de leur avoir donné les droits pour l’utilisateur www-data).

3-Configuration du proxy

Cette étape est souvent oubliée dans ls différents tutos que j’ai pu trouver sur le net. Pourtant elle est indispensable et c’est elle qui à à mettre en cause si vous vous retrouvez avec une erreur :

Forbidden You don’t have permission to access / on this server.

Pour configurer notre proxy nous allons devoir modifier le fichier proxy.conf.

sudo nano /etc/apache2/mods-enabled/proxy.conf

et commenter la ligne Deny from all pour la remplacer par Allow from mynewsite.com.

4- relancer apache.

sudo /etc/init.d/apache2 restart

5- relancer mongrel

mongrel_rails start -d //à éxécuter à la racine de votre application rails.

Voilà on y est, vous pouvez désormais vous rendre sur http://mynewsite.com dans votre naviguateur et vous devriez y voir la page d’accueil de votre application.

Leave a Reply

Your email address will not be published. Required fields are marked *