Configuration d’Apache avec Passenger pour Rails 3

apache server Configuration d’Apache avec Passenger pour Rails 3Étant le premier billet que je présente sur le planet-libre, s’il n’est pas modéré, j’y place un petit mot à la fin du billet pour ses lecteurs, une petite présentation.

Le serveur WEBrick, proposé par défaut par rails fait très bien ce qu’on lui demande, et permet de faire des essais en local facilement et rapidement. Cependant, s’il y a bien une chose souhaitable pour déployer une application de Ruby on Rails, c’est bien d’avoir un serveur plus traditionnel, auquel on connaît déjà les bases de configurations et son comportement. Heureusement, Rails permet d’utiliser sur un serveur Apache ou Nginx, par l’intermédiaire d’un Gem appelé Passenger. Il doit être possible de faire fonctionner Rails sous d’autre serveur que ces deux là, en se redirigeant sur d’autre Gem. Quoi qu’il en soit, avec ces deux là, ça balaye déjà pas mal de possibilités.

Les étapes suivantes on été réalisé avec les versions indiqué ci dessus, l’installation de base de Rails et de Apache n’est pas expliqué ici :

  • Rails 3.0.3
  • Phusion Passenger version 3.0.0
  • Apache 2.2.17

On installe d’abord le Gem avec RubyGem de la sorte :

$ sudo gem install passenger
$ sudo passenger-install-apache2-module

On se retrouve face à une interface CLI guidant pas à pas l’installation, proposant les démarches suivantes :

  1. Le module d’Apache sera installé pour vous. (phase de compilation du module)
  2. Vous apprendrez à configurer Apache. (affichage des lignes à recopier dans la configuration d’Apache)
  3. Vous apprendrez comment déployer une application Ruby On Rails. (exemple basique pour les VirtualHost)

On suit ce qu’il dit, on commence donc par rajouter les lignes qu’il demande dans le fichier de configuration d’Apache, les lignes sont propre à l’environnement de chacun, mais doivent y être ressemblante. On redémarrera Le serveur Apache après cela pour s’assurer qu’il n’y a pas de problèmes rencontrés.

/etc/httpd/conf/httpd.conf (spécifique à Arch Linux) /etc/apache2/httpd.conf (pour Debian ou Ubuntu)

LoadModule passenger_module /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.0/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.9.1/gems/passenger-3.0.0
PassengerRuby /usr/bin/ruby

On créée le VirtualHost dans la configuration d’Apache, et là on se retrouve avec deux cas.

  • L’application correspond à la racine de l’host, c’est a dire mondomaine.net/ ;
  • L’application correspond à un répertoire du domaine, c’est à dire mondomaine.net/project/

Pour un projet se situant dans la racine :

<VirtualHost *:80>
  ServerName lvh.me
  DocumentRoot /home/nicolas/public_html/project/public
  <Directory /home/nicolas/public_html/project/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
  RailsEnv development
</VirtualHost>

lvh.me peut être utile parfois, c’est un nom qui retourne 127.0.0.1, ça permet de faire des essais sans mettre forcément localhost. De plus il permet d’avoir les sous domaines (coin.lvh.me) sans avoir à aller les définir dans le /etc/hosts. Mais il convient de remplacer les indications. Il faut bien noter que le DocumentRoot et Directory pointe vers public. Il est facile d’oublier et de faire pointer à la racine du projet, ce qui serait une erreur et ne fonctionnera pas.

Pour un projet ne se situant pas à la racine :

<VirtualHost *:80>
  ServerName lvh.me
  DocumentRoot /home/nicolas/public_html/
  <Directory /home/nicolas/public_html/rails/>
    AllowOverride all
    Options -MultiViews
    Options FollowSymLinks
  </Directory>
  RailsEnv development
  RailsBaseURI /project
</VirtualHost>

Et on rajoute un lien symbolique qui va du répertoire public de l’application, vers la base du DocumentRoot, donc pour un project situé dans le répartoire ~/rails et faire apparaître dans comme domaine.com/project, on fait le lien suivant, qui faut bien sûr adapter selon la configuration de chacun :

$ ln -s ~/rails/public ~/public_html/project

Et nous voilà avec un serveur Apache pouvant faire tourner des applications Rails.

En aparté, et à l’intention des lecteurs du planet-libre,

J’y ai pensé de temps en temps, mais souvent reporté, j’ai finalement inscris mon blog sur ce planète. La raison d’avoir autant reporté, est peut être que de publier sur ce genre de planet est une approche différente. En ne publiant que sur mon blog, il y a un petit côté rassurant, je suis chez moi, si une personne vient, c’est parce qu’elle a envie d’en lire le contenu. Alors que sur un planète comme celui-ci, cela revient un peu d’imposer un contenu à une large communauté, qui ne sera du coup pas forcément intéressé par le billet. Ça presque un côté intrusif. Ou peut être c’est plus simplement pour cacher une petite timidité :þ

Heureux utilisateur d’Arch Linux, je suis avant tout un passionné, quelqu’un aimant apprendre et découvrir. Ce que vous trouverez dans mon blog peut se diviser en deux catégories, le Libre et la programmation. Pour le Libre, on retrouve de façon classique des tutoriels pour des softs, des penses-bêtes ou des billets de fond, mais également des billets autour de la communauté d’Arch Linux, auquel je me sens rattaché. Pour la programmation, du langage C, un peu de python, et plus récemment du Ruby on Rails (qu’on peut de ne pas considérer comme de la programmation). Ce que vous ne trouverez pas dans ce blog, c’est la politique, même lié au Libre, comme Hadopi pour ne prendre que cette exemple, ou des billets personnel, musique, film ou je ne sais quoi.

Bref, un petit printf(« Hello World\n »); heu… que dis-je, un Hello Planet !

Vus : 1026
Publié par Nicolas Paris : 149