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.comDans un premier temps, nous devons activer le module proxy d’apache.
1- Activer le module proxy d’apache
sudo a2enmod proxy2- 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.comProxyPass / 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/javascriptsCustomLog /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
etwww.mynewsite.com
.Notre appli tourne sur le port 3000 de la machine mais il est quand meme plus agréable de taper
mynewsite.com
quemynewsite.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 versmynewsite.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.confet commenter la ligne
Deny from all
pour la remplacer parAllow from mynewsite.com
.4- relancer apache.
sudo /etc/init.d/apache2 restart5- 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.