{"id":335,"date":"2007-09-13T21:55:53","date_gmt":"2007-09-13T20:55:53","guid":{"rendered":"http:\/\/www.dotmana.com\/index.php\/?p=335"},"modified":"2007-09-13T21:55:53","modified_gmt":"2007-09-13T20:55:53","slug":"creer-un-hebergement-ruby-on-rails-sous-un-serveur-ubuntu","status":"publish","type":"post","link":"http:\/\/www.dotmana.com\/weblog\/2007\/09\/creer-un-hebergement-ruby-on-rails-sous-un-serveur-ubuntu\/","title":{"rendered":"Cr\u00e9er un h\u00e9bergement Ruby On Rails sous un serveur Ubuntu"},"content":{"rendered":"<p>Un excellent tuto trouv\u00e9 chez <a target=\"_blank\" href=\"http:\/\/www.blogbangbang.com\/post\/2007\/05\/13\/Heberger-un-site-RubyOnRails-avec-Mongrel-et-Apache\">blogbangbang.com<\/a> :<\/p>\n<blockquote>\n<div class=\"post-content\">Je vous avait parl\u00e9 il y a peu de la <a hreflang=\"fr\" href=\"http:\/\/www.blogbangbang.com\/post\/2007\/04\/03\/Installation-de-RubyOnRails-et-RadRails\">cr\u00e9ation d&#8217;une application<\/a> RubyOnRails.<br \/>\nC&#8217;est bien mais un site c&#8217;est fait pour \u00eatre h\u00e9berg\u00e9 quelquepart !<br \/>\nEt malheureusement Mongrel, on connait pas trop, on a l&#8217;habitude d&#8217;Apache&#8230;<\/p>\n<p>Et bien cel\u00e0 tombe bien, car c&#8217;est deux l\u00e0 vont tr\u00e8s bien ensemble, il est en effet possible d&#8217;utiliser apache pour cr\u00e9er les virtual host, servir une partie des fichiers&#8230; et Mongrel pour le reste.<\/p>\n<p>C&#8217;est m\u00eame selon les sp\u00e9cialistes, le meilleur moyen d&#8217;h\u00e9berger un site Rails actuellement.<br \/>\nC&#8217;est bien mais comment on fait ? Et bien je vous explique tout de suite la proc\u00e9dure sur une Ubuntu&#8230;<\/p>\n<p>Je pars du princpe que vous avez une application rails (la mienne s&#8217;appellera mynewsite)avec un serveur mongrel qui fonctionne en local(accessible sur <code>http:\/\/localhost:3000<\/code>).<\/p>\n<p>Avant tout, vous devez stoper votre serveur Mongrel afin de faire prendre le relais \u00e0 Apache+Mongrel.<\/p>\n<div class=\"code\">mongrel_rails stop \/\/\u00e0 \u00e9x\u00e9cuter \u00e0 la racine de votre aplication rails.<\/div>\n<p>Puis, si vous suivez ce tuto \u00e0 la lettre avec un nom de domaine qui ne vous appartient pas, vous devez ajouter \u00e0 votre fichier <code>\/etc\/hosts<\/code> le site d\u00e9sir\u00e9, afin de ne pas etre redirig\u00e9 vers le vrai mynewsite.com.<br \/>\nLa ligne devrait donc ressembler \u00e0 \u00e7a :<\/p>\n<div class=\"code\">127.0.0.1 mynewsite.com<\/div>\n<p>Dans un premier temps, nous devons activer le module proxy d&#8217;apache.<\/p>\n<h3>1- Activer le module proxy d&#8217;apache<\/h3>\n<div class=\"code\">sudo a2enmod proxy<\/div>\n<h3>2- Cr\u00e9er le virual host<\/h3>\n<p>Le virtual host se cr\u00e9e comme n&#8217;importe quel autre avec apache2 : donc on va creer un nouveau fichier : <code>001-myewsite<\/code> dans le r\u00e9pertoire <code>\/etc\/apache2\/sites -available<\/code> (si vous h\u00e9bergez d\u00e9j\u00e0 des sites, pensez \u00e0 modifier le 001 en 002 ou plus).<\/p>\n<p>Le VirtuaHost doit donc ressembler \u00e0 cela :<\/p>\n<div class=\"code\"><VirtualHost mynewsite.com:80><br \/>\nServerName mynewsite.com<br \/>\nServerAlias www.mynewsite.com<\/p>\n<p>ProxyPass \/ http:\/\/www.mynewsite.com:3000\/<br \/>\nProxyPassReverse \/ http:\/\/www.mynewsite.com:3000<br \/>\nProxyPreserveHost on<\/p>\n<p>#Fix for Apache bug 39499<br \/>\nSetEnv force-proxy-request-1.0 1<br \/>\nSetEnv proxy-nokeepalive 1<\/p>\n<p># Ne pas rediriger les images, les CSS<br \/>\n# et les Javascripts vers Mongrel<br \/>\nProxyPass \/images !<br \/>\nProxyPass \/stylesheets !<br \/>\nProxyPass \/javascripts !<\/p>\n<p># Et pr\u00e9cisons le path o\u00f9 se trouve<br \/>\n# les images, les CSS et les javascripts<br \/>\nAlias \/images \/var\/www\/mynewsite\/public\/images<br \/>\nAlias \/stylesheets \/var\/www\/mynewsite\/public\/stylesheets<br \/>\nAlias \/javascripts \/var\/www\/mynewsite\/public\/javascripts<\/p>\n<p>CustomLog \/var\/www\/mynewsite\/log\/access &#8220;%h %l %u %t \\&#8221;%r\\&#8221; %s %b \\&#8221;%{Referer}i\\&#8221; \\&#8221;%{User-Agent}i\\&#8221;&#8221;<br \/>\nErrorLog \/var\/www\/mynewsite\/log\/error<br \/>\n<\/VirtualHost><\/div>\n<h4>Explications :<\/h4>\n<p>Les deux premi\u00e8res lignes sont \u00e9videntes, on indique que ce virtual host fera tourner les sites demand\u00e9 sur <code>mynewsite.com<\/code> et <code>www.mynewsite.com<\/code>.<\/p>\n<p>Notre appli tourne sur le port 3000 de la machine mais il est quand meme plus agr\u00e9able de taper <code> mynewsite.com<\/code> que <code>mynewsite.com:3000<\/code> pour acceder au site.<br \/>\nC&#8217;est le but des 3 lignes suivantes.<\/p>\n<p>Pour ce faire on utilise le mod_proxy d&#8217;apache (que l&#8217;on vient d&#8217;installer) en lui indiquant que les demandes faites sur <code>mynewsite.com<\/code> doivent \u00eatre redirig\u00e9es vers <code> mynewsite.com:3000<\/code> (cela se fait bien sur de maniere invisible et l&#8217;adresse dans la barre d&#8217;adresse ne changera pas.)<\/p>\n<p>On trouve ensuite 2 lignes qui permettent de r\u00e9soudre un bug d&#8217;Apache lorsqu&#8217;il est associ\u00e9 \u00e0 Mongrel.<\/p>\n<p>Par la suite, on pr\u00e9cise gr\u00e2ce \u00e0 ProxyPass que les demandes pour les dossiers images, stylesheets et javascripts ne seront pas redirig\u00e9es vers Mongrel (Apache est plus rapide pour ces contenus).<br \/>\nOn indique donc \u00e0 Apache le chemin vers ces dossiers gr\u00e2ce aux directives Alias.<\/p>\n<p>Enfin les directives CustomLog et ErrorLog indique \u00e0 apache ou stocker les logs d&#8217;acces et d&#8217;erreur de notre site.<br \/>\nOn les place logiquement dans le dossier log de notre application rails.<br \/>\n(il peut \u00eatre n\u00e9cessaire d&#8217;avoir cr\u00e9er les fichier et de leur avoir donn\u00e9 les droits pour l&#8217;utilisateur www-data).<\/p>\n<h3>3-Configuration du proxy<\/h3>\n<p>Cette \u00e9tape est souvent oubli\u00e9e dans ls diff\u00e9rents tutos que j&#8217;ai pu trouver sur le net. Pourtant elle est indispensable et c&#8217;est elle qui \u00e0 \u00e0 mettre en cause si vous vous retrouvez avec une erreur :<\/p>\n<div class=\"code\">Forbidden You don&#8217;t have permission to access \/ on this server.<\/div>\n<p>Pour configurer notre proxy nous allons devoir modifier le fichier proxy.conf.<\/p>\n<div class=\"code\">sudo nano \/etc\/apache2\/mods-enabled\/proxy.conf<\/div>\n<p>et commenter la ligne <code>Deny from all<\/code> pour la remplacer par <code>Allow from mynewsite.com<\/code>.<\/p>\n<h3>4- relancer apache.<\/h3>\n<div class=\"code\">sudo \/etc\/init.d\/apache2 restart<\/div>\n<h3>5- relancer mongrel<\/h3>\n<div class=\"code\">mongrel_rails start -d \/\/\u00e0 \u00e9x\u00e9cuter \u00e0 la racine de votre application rails.<\/div>\n<p>Voil\u00e0 on y est, vous pouvez d\u00e9sormais vous rendre sur <code>http:\/\/mynewsite.com<\/code> dans votre naviguateur et vous devriez y voir la page d&#8217;accueil de votre application.<\/div>\n<\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Un excellent tuto trouv\u00e9 chez blogbangbang.com : Je vous avait parl\u00e9 il y a peu de la cr\u00e9ation d&#8217;une application RubyOnRails. C&#8217;est bien mais un site c&#8217;est fait pour \u00eatre h\u00e9berg\u00e9 quelquepart ! Et malheureusement Mongrel, on connait pas trop, &hellip; <a href=\"http:\/\/www.dotmana.com\/weblog\/2007\/09\/creer-un-hebergement-ruby-on-rails-sous-un-serveur-ubuntu\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,3],"tags":[],"class_list":["post-335","post","type-post","status-publish","format-standard","hentry","category-ruby-on-rails","category-ubuntu"],"_links":{"self":[{"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts\/335","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/comments?post=335"}],"version-history":[{"count":0,"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/posts\/335\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/media?parent=335"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/categories?post=335"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.dotmana.com\/weblog\/wp-json\/wp\/v2\/tags?post=335"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}