Installer Passenger Phusion et Rails 2.2.2 sur Ubuntu 8.04
Ca fait déjà un moment que la promesse des développeurs de Phusion, à savoir un déploiement d’une application Rails en quelques lignes dans apache.conf me faisait saliver. J’avais, comme tout le monde, essayé de configurer un stack apache + mongrel, mais la complexité de la tâche m’avait fait reculer. Je me suis dit que l’arrivée de Rails 2.2.2, avec ses nombreuses nouveautés, était l’occasion rêvée de tester Passenger.
Installation de Passenger
Avant de commencer l’installation de Passenger, il y a un certain nombre de pré-requis nécessaires à son bon fonctionnement. Il vous faut donc commencer par installer les paquets suivants, si vous ne les avez pas déjà installés :
sudo apt-get install build-essential
sudo apt-get install apache2
sudo apt-get install apache2-prefork-dev
sudo apt-get install rubygems
sudo gem update --system
sudo apt-get install ruby
sudo apt-get install ruby1.8-dev
Vous pouvez ensuite lancer l’installation de Passenger :
sudo gem install passenger
Pour une raison que je n’ai pas vraiment comprise, il ne m’a pas été possible de lancer lescript d’installation sans indiquer son chemin complet
sudo /var/lib/gems/1.8/bin/passenger-install-apache2-module
Si rake n’est pas reconnu comme installé par l’installeur, il vous suffit de faire un lien symbolique vers celui-ci afin que celui-ci soit vu dans le path par défaut d’Ubuntu :
sudo ln -s /var/lib/gems/1.8/bin/rake /usr/bin/rake
Relancez ensuite l’installation par la commande vue plus haut.
Paramétrage de Passenger
C’est là où s’exprime toute la puissance de Passenger. En quelques lignes, vous allez pouvoir déployer votre application Rails. Il vous faut tout d’abord ajouter quelques lignes à votre fichier apache2.conf (celui-ce se trouve dans le répertoire /etc/apache2) :
#Phusion passenger
LoadModule passenger_module /var/lib/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/bin/ruby1.8
PassengerDefaultUser www-data
La dernière ligne n’est pas indiquée dans la documentation de Phusion, mais sans elle, mes applications refusaient de se lancer. Vous remarquerez qu’elle indique comme utilisateur celui qui est créé par l’installation d’Apache.
Il faut ensuite paramétrer votre site (dans /etc/apache2/sites-available/) en remplaçant le paramétrage par défaut d’Apache par celui-ci (si vous ne souhaitez lancer que des applications Rails avec Passenger, bien sûr !)
<VirtualHost *>
ServerName monserveur
DocumentRoot /var/www/rails/sites/testapp/public
</VirtualHost>
Vous faites pointer Passenger vers le répertoire public de votre application Rails. Sauvegardez votre fichier de configuration, puis activez votre application en lançant les commandes suivantes :
sudo a2ensite monfichierdeconf
sudo apache2ctl -k restart
Ou monfichierdeconf est le nom de votre… fichier de configuration Apache. En vous connectant à l’URL http://monserveur, vous devriez voir apparaître votre application.
Plusieurs applications sur le même serveur
Vous pouvez également paramétrer plusieurs applications sur le même serveur ; la configuration n’est que légèrement plus complexe. Cela nécessite de créer des liens symboliques vers les répertoires public de vos applications, et de les référencer dans le fichier de configuration de votre site Apache.
Si votre application est déployée dans le répertoire /var/www/rails/apps/testapp
, et que vous avez choisi comme DocumentRoot de Passenger /var/www/rails/sites
, vous devez créer un lien symbolique de l’un vers l’autre de cette manière :
sudo ln -s /var/www/rails/apps/testapp/public /var/www/rails/sites/testapp
Vous paramétrez ensuite votre fichier de configuration de la mnière suivante :
<VirtualHost *>
ServerName monserveur
DocumentRoot /var/www/rails/sites
RailsBaseURI /testapp
</VirtualHost>
Vous pouvez ajouter d’autres applications en créant de nouveaux liens symboliques, et en ajoutant de nouvelles entrées RailsBaseURI.
Problèmes divers rencontrés pendant l’installation
Je vous livre quelques problèmes que j’ai pu rencontrés, et dont la résolution m’a demandé pas mal de recherche sur Internet. Ceux-ci sont souvent liés au fait que les applications que je déployais avaient été créées avant la version 2.2.2 de Rails.
- Mettre à jour l’application Rails : pour chaque application, faire un rake rails:update
- Pensez bien à faire un chown sur votre application :
chown -hR www-data:www-data testapp
- Commentez ou supprimez dans le fichier config/environments/production.rb la ligne suivante :
config.action_view.cache_template_extensions
- Si vous avez plusieurs applications Rails, ajouter dans le fichier config/environment.rb la ligne suivante, ou /testapp est la valeur de la variable RailsBaseURI :
config.action_controller.relative_url_root = "/testapp"
- J’ai également eu des problèmes avec sqlite (mais qui voudrait utiliser sqlite en prod ;o)). En effet, sur un système Ubuntu, l’application de gestion des photos F-spot utilise sqlite version 2. J’ai du la désinstaller avant de pouvoir faire fonctionner la version 3, en tapant :
sudo apt-get remove sqlite
Répondre
Se joindre à la discussion ?Vous êtes libre de contribuer !