Follow me
RSS feed
My sources
My Viadeo

Déployer une application Capcode avec Phusion Passenger

Greg | 01 Oct 2009

projetsPhusion Passenger, parfois appelé à tort modrails, est un module apache permettant de déployer de façon ultra simple des applications basées sur rack. Et si la documentation présente des exemples pour Camping, Halcyon, Mack, Merb, Ramaze et Sinatra, Capcode n'échappe pas à la règle. C'est ce que nous allons voir...

Bien entendu, il faut commencer par installer Phusion Passenger... Ensuite, il faut créer l'arborescence de l'application :

my_app/
my_app/tmp
my_app/public

Vous pouvez créer cette arborescence dans n'importe quel répertoire. Votre $HOME fera parfaitement l'affaire.

Placez le fichier de votre application Capcode dans le répertoire my_app/ et commentez ou supprimez la ligne de l'appel à Capcode.run.

Créez un fichier de configuration rack (config.ru) dans my_app/ :

require 'app'

run Capcode.application()

Capcode.application est l'équivalent du Capcode.run que l'on retrouve dans une application Capcode classique. Donc, vous pouvez y passer les mêmes paramètres et un bloc. Pour plus de détails, reportez-vous à la documentation.

Si vous utilisez le renderer static pour servir des fichiers, il faut faire attention à bien positionner la valeur du paramètre :root. En effet, par défaut ce paramètre prend comme valeur le répertoire dans lequel se trouve l'application Capcode. En interne, il est positionné via File.expand_path(File.dirname($0)). Or avec Phusion Passenger $0 ne correspondra ni au fichier de l'application ni au fichier de configuration rack. Dans la plus part des cas, utiliser File.expand_path(File.dirname(__FILE__)) comme valeur pour :root devrait être bon.

Voilà, vous pouvez maintenant déployer l'application comme une application rack classique.

Si vous optez pour une solution à base de Virtual Host, ajoutez ceci dans la configuration d'apache :

<VirtualHost *:80>
    ServerName my-app.mon-domaine.com
    DocumentRoot /chemin/vers/my_app/public
</VirtualHost>

Redémarrez apache et accédez à votre application via l'URL http://my-app.mon-domaine.com.

Si vous préférez passer par un sous répertoire, commencez par créer un lien symbolique dans votre DocumentRoot vers le répertoire public de l'application. Ce lien devant avoir le nom du sous répertoire que vous souhaitez utiliser :

ln -s /chemin/vers/my_app/public /document/root/my_app

Modifier ensuite la configuration d'apache :

<VirtualHost *:80>
    ServerName www.mon-domaine.com
    DocumentRoot /document/root
    RackBaseURI /my_app
</VirtualHost>

Après avoir redémarré apache, vous pourrez accéder à votre application via l'URL http://www.mon-domaine.com/my_app.

Tout ceci est possible à partir de la version 0.8.5 de Capcode. Cette version n'étant pas encore disponible vous devez, pour le moment, récupérer les sources dans Github si vous souhaitez en profiter.

Copyright © 2009 - 2011 Grégoire Lejeune.
All documents licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License, except ones with specified licence.
Powered by Jekyll.