Définition des variables d'environnement pour Phusion Passenger applications
J'ai mis en place Passager dans le développement (Mac OS X) et il fonctionne parfaitement. Le seul problème est venu plus tard: maintenant, j'ai une coutume GEM_HOME
chemin et ImageMagick binaires installé dans "/usr/local"
. Je peux les mettre dans un de la coque rc fichiers obtenir de source et cela résout les variables d'environnement pour les processus engendré à partir de la console; mais qu'en est Passager? La même application ne trouve pas mes gemmes quand exécuter cette façon.
Mise à jour: depuis de Passagers 2.2.3, le "SetEnv est pris en charge:blog.phusion.nl/2009/06/17/... correctement. La Technique de Ben la réponse m'a été très bien, mais maintenant il n'y a pas besoin de l'utiliser plus (dans la plupart des cas).
OriginalL'auteur mislav | 2008-09-17
Vous devez vous connecter pour publier un commentaire.
Je connais deux solutions. La première (documenté ici) est essentiellement la même que manveru—définir la variable ENV directement dans votre code.
La deuxième est de créer un wrapper autour de l'interpréteur Ruby que Passager utilise, et est documenté ici (cherchez passenger_with_ruby). L'essentiel est que vous créez (et point PassengerRuby dans votre configuration Apache) /usr/bin/ruby_with_env, un fichier exécutable comprenant:
À la fois le travail; la première approche est un peu moins hackish, je pense.
chmod +x /usr/bin/ruby_with_env
.Puisque c'est une ancienne réponse, je veux juste confirmer cette réponse semble toujours être la meilleure façon de traiter de cette question. Plus de références: blog.phusion.nl/2008/12/16/... et: dev.mensfeld.pl/2011/09/...
Plus récemment, ressemble à ce qui a changé. Depuis Phusion 4.0, vous pouvez utiliser les directives Apache 'PassEnv" et "SetEnv': modrails.com/documentation/...
OriginalL'auteur Ben Scofield
Avant de faire toute demande (surtout avant d'exiger rubygems) que vous pouvez faire:
Cela va changer la variable d'environnement à l'intérieur de ce processus.
OriginalL'auteur manveru
J'ai découvert que si vous avez des privilèges root sur l'ordinateur, puis vous pouvez définir des variables d'environnement nécessaires à "envvars" fichier et apachectl va exécuter ce fichier avant de lancer Apache.
envvars est généralement situé dans le même répertoire où apachectl est situé sur Mac OS X, il est situé dans /usr/sbin. Si vous ne la trouvez pas puis regardez dans le source du script apachectl.
Après un changement de envvars fichier redémarrer Apache "apachectl -k restart".
OriginalL'auteur Raimonds Simanovskis
J'ai rencontrer ce genre de problème. Il apparaît que le Passager n'a pas de relais et les valeurs définies à l'aide de la
SetEnv
directive apache - ce qui est regrettable.Peut-être il pourrait être possible de définir des variables d'environnement dans votre environnement.rb ou de démarrage.rb (en supposant que vous parlez d'une application Rails; je ne suis pas familier avec Rack, mais sans doute qu'il a les mêmes fonctionnalités)
OriginalL'auteur Brian Phillips