2008-09-17 6 views
7

개발중인 Passenger (Mac OS X)를 설정했고 완벽하게 작동합니다. 나중에 문제가 발생했습니다 : 이제 GEM_HOME 경로와 ImageMagick 바이너리가 "/usr/local"에 설치되어 있습니다. 내가 가져온 셸 rc 파일 중 하나에 넣을 수 있으며 콘솔에서 생성 된 프로세스의 환경 변수를 해결합니다. 승객은 어떨까요? 같은 응용 프로그램이 이런 식으로 실행하면 내 보석을 찾을 수 없습니다.Phusion Passenger 응용 프로그램의 환경 변수 설정

+3

업데이트 : 여객 2.2.3부터 "SetEnv 지시문이 지원됩니다. http : //blog.phusion.nl/2009/06/17/phusion-passenger-223-released-bugfixedition/ 제대로. Ben의 답변에서 나온 기술은 나에게 매우 도움이되었지만 이제는 더 이상 사용할 필요가 없습니다. (대부분의 경우) – mislav

답변

12

나는 두 가지 해결책을 안다. 첫 번째 (문서화 된 here)는 본질적으로 manveru와 동일하지만 코드에서 직접 ENV 변수를 설정합니다.

두 번째는 Passenger에서 사용하는 Ruby 인터프리터 주위에 래퍼를 만들고 here (passenger_with_ruby를 찾으십시오)입니다. 요점은 실행 파일이 구성은/usr/빈/ruby_with_env 생성 (에와 아파치 설정에 PassengerRuby 포인트)이다 :

#!/bin/bash 
export ENV_VAR=value 
/usr/bin/ruby $* 

두 작업; 전 접근 방식은 조금 덜 익살 맞았다 고 생각합니다.

+0

다른 사람이 저와 같은 문제에 부딪 힐 경우를 대비해'chmod + x/usr/bin/ruby_with_env'. –

+0

이것은 오래된 대답이기 때문에,이 답변을 여전히이 문제를 해결할 수있는 권장 방법으로 생각합니다. 자세한 참조 : http://blog.phusion.nl/2008/12/ 16/pass-environment-variables-to-phusion-passenger/and : http://dev.mensfeld.pl/2011/09/phusion-passenger-and-environment-variables-with-ruby-rake- applications/ – Felixyz

+0

더 최근에는 다음과 같이 보입니다. c 교수형. Phusion 4.0부터 Apache 지시문 'PassEnv'와 'SetEnv'를 사용할 수 있습니다. http://www.modrails.com/documentation/Users%20guide%20Apache.html#env_vars_passenger_apps – nielsbot

1

이 문제도 발생했습니다. appears 승객이 SetEnv 아파치 지시문을 사용하여 설정된 값을 통과하지 못합니다. 이는 불행합니다.

아마도 당신의 environment.rb에 또는 boot.rb에서 환경 변수를 설정 할 수 있습니다 (당신은 레일 응용 프로그램에 대해 얘기하고 가정, 나는 랙을 잘 모르겠지만 아마도 그것은 유사한 기능을 가지고)

2

당신이 어떤 당신은 할 수있다 (특히 젬을 요구하기 전에)를 필요로 할 전에 :

ENV['GEM_HOME'] = '/foo' 

이이 프로세스 내에서 환경 변수를 변경합니다.

2

컴퓨터에 루트 권한이 있으면 "envvars"파일에 필요한 환경 변수를 설정할 수 있고 Apache를 시작하기 전에 apachectl이이 파일을 실행한다는 것을 알았습니다.

envvars는 일반적으로 apachectl이있는 디렉토리에 있습니다. Mac OS X의 경우 envvars는/usr/sbin에 있습니다. 찾을 수 없다면 apachectl 스크립트의 소스를보십시오.

envvars 파일을 변경 한 후에 "apachectl -k restart"를 사용하여 Apache를 다시 시작하십시오.

관련 문제