2010-11-06 16 views
4

J'ai déployé une application Sinatra sur un serveur Ubuntu en utilisant Apache et Passenger. Grâce à quelques essais et erreurs, je réalise que l'application ne fonctionne que lorsque le module passager est désactivé. Après un redémarrage d'Apache, l'application s'exécute comme prévu.L'application Ruby ne fonctionne que lorsque le passager est "désactivé"

Si je Réactivez le module ...

$ a2enmod passenger 

... Je vois cet avertissement lors du redémarrage Apache:

[warn] module passenger_module is already loaded, skipping 

et l'application cesse de fonctionner. Apache répond, servant le contenu de la racine du document de vhost, mais n'est pas reconnu par Passenger. Je suis content que mon application fonctionne, mais je ne suis pas sûr de savoir comment expliquer l'effet inversé de l'activation/désactivation du module passager.

Répondre

4

J'ai rencontré le même problème: si vous suivez les instructions d'installation des passagers avec cette version d'Apache, vous pouvez dire à Apache de charger deux fois le passager.

Avant d'ajouter les 3 lignes célèbres à votre fichier de configuration Apache:

LoadModule passenger_module /usr/…/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/rvm/gems/ruby-1.9.2-p290/gems/passenger-3.0.11 
PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.2-p290/ruby 

Vérifiez le fichier de configuration apache2.conf pour les lignes comme celles-ci:

# Include module configuration: 
Include /etc/apache2/mods-enabled/*.load 
Include /etc/apache2/mods-enabled/*.conf 

Si ces lignes n'existe, cela signifie que au démarrage, votre serveur Apache inclura tous les fichiers * .conf et * .load de/mods-available vers/mods-enabled et les chargera. Par conséquent, si vous utilisez le message d'avertissement correspondant, cela signifie que vous chargez le module passager deux fois!

Vous pouvez profiter de cette fonctionnalité Apache allant à/mods-available, en recherchant les fichiers passenger.conf et passenger.load et en les éditant au lieu de apache2.conf. La ligne «LoadModule passenger_module» entre dans passenger.load, tandis que les deux autres lignes «PassengerRoot» et «PassengerRuby» entrent dans passenger.conf.

Puis redémarrez votre serveur et tout ira bien.

En savoir plus sur cette question ici: http://www.duccioarmenise.net/ruby-on-rails/warn-module-passenger_module-is-already-loaded/

+0

Apache ne copiera définitivement pas et ne configurera pas les fichiers au démarrage.Au lieu de cela, vous êtes censé créer des liens symboliques dans 'mods-available' pointant vers des fichiers dans' mods-available'. Il y a les deux scripts auxiliaires 'a2enmod' et' a2dismod' qui font exactement cela. –

+0

Vous avez raison, j'ai utilisé le mauvais mot, juste corrigé. Je suppose que vous vouliez dire _ "... pour créer des liens symboliques dans' mods-enabled' pointant vers des fichiers dans 'mods-available'." _. – Darme

0

Cela signifie très probablement que vous avez spécifié 'LoadModule passenger_module ...' deux fois. La première entrée est quelque part pas dans passenger.conf, la deuxième entrée est dans passenger.conf.

+0

I comprennent la directive LoadModule dans un fichier de configuration d'Apache spécifique au site. Il doit s'agir de la deuxième occurrence, mais lorsque je l'enlève, les directives Passenger restantes dans le fichier de configuration ne sont pas reconnues. Par exemple, PassengerRoot, PassengerRuby, PassengerDefaultUser, RackEnv entraînent désormais une erreur de syntaxe lors du redémarrage d'Apache. – grough

+0

C'est parce que Phusion Passenger n'est pas chargé du tout, ou chargé après avoir défini les options Passenger. Vous devez vous assurer que 1) Phusion Passenger est chargé une seule fois et 2) que les options Passenger sont spécifiées après le LoadModule. – Hongli