Keyword - RubyOnRails

Fil des billets - Fil des commentaires

dimanche 13 mai 2007

Héberger un site RubyOnRails avec Mongrel et Apache

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 :

<VirtualHost mynewsite.com:80>
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
</VirtualHost>

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.

vendredi 11 mai 2007

Livre : Ruby on rails seconde édition

Un nouveau livre sur ruby on rails est sorti il y a quelques jours et le moins que l'on puisse dire c'est que c'est du lourd (1.5kg le bousin tout de même)

couverture du livre

Au menu, un ouvrage collant à la dernière version de Rails (les traducteurs ne se sont pas contentés de retranscrire la version anglaise mais ont adaptés les exemples pour coller à la dernière version de rails sortie entre temps).

Le livre est constitué de deux grandes parties, dans la première vous apprendrez à vous servir de rails en créant pas à pas une application e-commerce, il sera donc question de bonnes pratiques, de méthodes...

Cette partie est très sympa à lire et vous permet de mettre au clair certaines questions sur la conception tel que comment décider de créer un nouveau controller, quand utiliser les helpers...

La deuxième partie décrit tout les composants du framework, elle est ce fait un peu plus indigeste mais c'est le prix à payer pour accéder à un puits d'informations qui semble sans fond.

On y trouvera donc un chapitre pour découvrir Active Record en profondeur et percer tout les secrets de celui ci.
Un autre chapitre décrit l'utilisation d'AJAX et les composants prototype et script.aculo.us

Vous l'avez surement déjà compris mais je suis vraiment ravi de mon investissement, j'ai quelques idées de projets à développer avec RoR (Je développe actuellement mon projet Gobelins avec celui ci et aimerais lancer une appli communautaire dans le domaine du sport), j'ai même commencé à convaincre mon voisin fan de Python de passer à Ruby.
Si vous souhaitez découvrir ou approfondir vos connaissance sur rails et bénéficier d'un ouvrage que vous aurez toujours à portée de main, foncez à la Fnac, chez Eyrolles et dites m'en des nouvelles.

J'allais oublier : un grand merci aux rédacteurs et aux traducteurs pour le job colossal qu'ils ont fournis.

mercredi 21 mars 2007

En vrac, en retard et pour rire

C'est toujours quand on part en vacances qu'il se passe plein de choses :

  • Nos députés passent aux libre, si ça ce n'est pas une preuve que tout le monde peut utiliser Linux.
  • Ça fait 2 ans que mes parents sont passés à Ubuntu et pas un problème : encore une preuve.
  • La nouvelle version de Netvibes elle est plus mieux que celle d'avant qui était très bien.
  • Je me mets sérieusement à RubyOnRails et quelques tutoriels devrait arriver d'ici peu sur ce blog !
  • Mon école, les Gobelins, ouvre ses portes vendredi et samedi, et vous êtes les bienvenus.

Bon et puis puisqu'il n'y as pas de raison que je me marre tout seul, je vais vous faire partager quelques requêtes ayant amené sur ce site depuis sa création, c'est parfois insolite.

  • recetes bang : Ah non désolé je fais pas.
  • logiciel john : disponible en béta seulement et hautement instable !
  • blog do bang : No entiendo !
  • vidéo petite chirurgie : euh la je vois vraiment pas ?
  • blog pleurer ou pleure blog : non ici on préfère en rire.
  • blog sans confirmation : euh oui ça doit être ici ?
  • j'aime pas le flash : le dis pas trop fort, je me suis fait taper sur les doigts avec ce billet.
  • blog etudiante gang bang : seulement après 22 heures !

page 3 de 3 -