2011-06-11 5 views
19

아파치 2와 mod_rails (Phusion Passenger)가있는 우분투 10.10의 레일즈 서버에 루비를 설치하려고합니다.레일 아파치 2의 승객 문제

이미 ruby ​​1.9.2-p0 및 3.0.8 레일을 설치하고 passenger-install-apache2-module 및 passenger gem (v3.0.7)을 사용하여 Passenger를 설치했습니다.

그런 다음 Apache 구성 파일에 3 줄을 추가하라고 알려줍니다. 그래서 나는 '/etc/apache2/apache2.conf'에이 라인을 추가 :

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 
PassengerRuby /usr/local/bin/ruby 

을 그리고 내 '/etc/apache2/httpd.conf을'편집 추가 :

NameVirtualHost *:80 

<VirtualHost *:80> 
ServerName 192.168.0.2 
DocumentRoot /var/www/webop/public 

<Directory /var/www/webop/public> 
Allow from all 
Options -MultiViews 
</Directory> 
</VirtualHost> 

나는 또한 /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/에있는 mod_passenger.so 파일이 실제로 존재하지 않는다는 사실을 발견했습니다. 이름은 mod_passenger.c입니다. 그러나 나는 그로부터 어떠한 오류도 느끼지 않습니다.

서버는 LAN을 통해서만 액세스 할 수 있어야합니다. 서버에 액세스 할 때 내 응용 프로그램의 공용 폴더에있는 모든 파일과 디렉토리를 볼 수 있지만 응용 프로그램 자체는 시작되지 않습니다.

아파치를 다시 시작하면 mod_rails가 이미로드되어 있으므로 승객이 실행 중이지만 내 앱이 시작되지 않는 이유를 알 수 없습니다.

미리 감사드립니다.

답변

12

마침내 문제가 무엇인지 알아 냈습니다. 나는 루비 설치를 엉망으로 만들었습니다.

/usr/local /에 ruby1.9.2-p0이 설치되었지만 (사용하고 싶은 버전)/usr/i에 ruby1.8.7이 설치되어 있습니다.

Passenger가 어떤 Ruby 버전을 사용하는지 혼란스러워서 apache2/mods-enabled/passenger.load와 .config 내에서 LoadModule, PassengerRoot 및 PassengerRuby 경로를 올바른 경로로 변경하고 마침내 작동했습니다! 두 파일 모두 자동으로 생성되어 재정의 문제가 발생했습니다. 아파치 시작시 'mod_passenger already loaded'라는 경고가 나타납니다. 그래서 제거했습니다.

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so 
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 
PassengerRuby /usr/local/bin/ruby 

아파치 설정에서 경고가 사라졌습니다.

아마도 누군가 언젠가는 도움이 될 것입니다!

+1

내 apache2 폴더에는 개조 기능이 없습니다! 무엇을 할 수 있었습니까? – vishB

+0

@vishB 더 자세한 정보가 필요하십니까? 튜토리얼을 따라 왔니? 너는 무엇을 이미 시도 했는가? –

1

나는이 세 줄을 apache2.conf가 아닌 httpd.conf 파일에 넣기를 원한다고 생각합니다. 적어도 그것은 내가 항상 해왔 던 방식입니다.

+0

나는 두 가지 방법을 시도했지만 둘 다 작동하지 않았습니다. apache2.conf에 httpd.conf가 포함되어 있지 않습니까? 어쨌든 귀하의 답변 주셔서 감사합니다! –

+0

그래, 네 말이 맞을거야. 그것은 어둠의 한 발이었습니다. 당신이보고있는 행동에 대한 더 많은 정보? 브라우저에서 URL을 탐색하려고하면 어떻게됩니까? 아파치 또는 레일 앱 로그에 아무것도 표시되지 않습니까? – dpb

+0

나는 마침내 문제가 무엇인지 알았고 승객은 이제 제대로 작동하고 있습니다. 당신의 도움을 주셔서 감사합니다! –

34

mod_passenger.so가 존재하지 않는 이유는 Apache 모듈을 설치하지 않았기 때문입니다. 이것은 당신의 보석 디렉토리 안에 mod_passenger.so 파일을 만듭니다

passenger-install-apache2-module 

, 당신에게 당신의 apache2.conf의 파일에 복사하는 세 줄을 제공 : 실행합니다.

승객 모듈이 현재 보석에 설치되어 있으므로 프로젝트간에 충돌이 없어야합니다. RVM 및 RBENV를 통해 원하는 호환 가능한 모든 버전의 Ruby 및 원하는 보석을 사용할 수 있습니다. 이렇게하면 Ruby의 한 버전에서 다음 버전으로 쉽게 업그레이드 할 수 있습니다.

+0

관심 대상이 될 수도 있습니다. https://rvm.io/integration/passenger/ – carnator

2

저는 오늘날보다 깨끗한 해결책을 발견했습니다. 이것은 미래의 사용자에게 도움이 될 수 있습니다.명령 -

passenger-install-apache2-module 

은 아파치 설정 파일에이 세 줄을 넣으라고 알려줍니다.

LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so 
    <IfModule mod_passenger.c> 
    PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59 
    PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby 
    </IfModule> 

그러나 구성 파일은 어디에 있습니까? 대답은 이며 구성 파일은 여러 개의 파일로 구분되어 있으며이며 /etc/apache2/mods-available에 있습니다.

  1. /etc/apache2/mods-available 폴더에 .load로 끝나는 파일을 만듭니다 -

    그래서 당신은 세 가지를해야한다. 나는 passenger.load을 사용했다.

  2. 해당 파일에 세 줄을 붙여 파일을 저장하십시오.

  3. 모듈을 사용하려면 터미널에 sudo a2enmod <module-conf-filename>을 사용하십시오. 제 경우에는 파일은 passenger.load입니다. 그래서, 지금

sudo a2enmod passenger 

를 사용하여 서버를 다시 시작하고 passenger 모듈이 활성화되는 것을 발견 명령 apache2ctl -M을 사용합니다.