2012-03-19 2 views
0

Nginx에서 Passenger를 실행하기위한 전제 조건으로 "rvm use 1.9.3"및 "rvmsudo passenger start - 소켓 (sitename) .socket"이 있습니다. 나머지는 완벽하게 작동하지만 질문은 이제 시스템 시작시 부팅되는 Nginx로 모든 명령 또는 일부 동등한 명령이 작동하는지 확인하는 방법입니다. 이 모든 것을 자동화하고 싶습니다.Nginx에서 자동 시작 rvm'ed Passenger하는 방법

이는 (내가 전혀 시도하지 않았습니다. # 분명히 의 Nginx/승객의 일부 구성으로 작동하는 물건이다)처럼 nginx.conf받는 것을 내 추가 된 부분이다

upstream (sitename)_upstream{ 
    server unix:/(filepath) 
} 

server { 
    listen 80; 
    server_name (url); 
    root (filepath); 
    access_log (logpath); 
    error_log (logpath); 
# passenger_enabled on; 
# rails_spawn_method smart; 
# rails_env development; 
    location/{ 
    proxy_pass http://(sitename)_upstream; 
    proxy_set_header Host $host; 

    } 

} 

그럼 이제 어떻게해야합니까?

답변

5

시스템으로 시작하는 프로세스의 트릭은 관심있는 부분이 처음에 설정 한 것과 동일한 사용 권한과 사용자/그룹으로 시작하는지 확인하는 것입니다. 리눅스 시스템을 가정 할 때 부팅시 시작되는 프로세스는 /etc/init/d/<script>에서 실행되고 부팅시 루트 (기본적으로)로 실행됩니다. su을 사용하여 스크립트를 실행하여 별도의 사용자로 실행할 수 있습니다. 실제로 대부분의 서버 프로세스는 보호 된 사용자 환경에서 실행되도록 이러한 방식으로 처리합니다.

한편 RVM은 사용자 별 프로세스로 실행되도록 설계되었습니다. 몇 달 전에 RVM이 전 세계적으로 운영되는 서버를 설치하려고 시도 했었습니다. RVM을 사용하는 경우와 비슷하다고 생각합니다. 그래서 우리의 경우 웹 서버 (우리의 경우 Apache이지만 Nginx는 동일한 옵션을 가짐)를 시작하여 자식 프로세스 (실제로 웹 요청을 처리 한 프로세스)가 RVM이 있던 동일한 사용자로 실행되도록했습니다. 구성. 대안으로 Nginx와 RVM 사용자 모두에게 그룹 쓰기 권한을 부여하는 것이 더 많은 작업입니다.

RVM의 다른 문제는 쉘 스크립트가 실행될 때 (일반적으로 ~/.bash_profile 스크립트) 생성되므로 해당 환경을 유지해야하는 서버가 해당 쉘에서 실행되기를 원할 수 있습니다.

이 모든 것이 매우 힘들지 만 실제로는 최소한 앱을 실행 한 사용자 계정을 만들고 그 사용자로 RVM을 설치하고 조금만 설정하면 모두 " 작업 ", 특히 레이크, 번들, 카피 스트라노 및 기타 물건을 실행하는 경우에 유용합니다.

죄송합니다, 이것은 내가 기대했던 것보다 조금 더 일반적이지만 아마도 유용 할 것입니다.