2010-05-16 5 views
1

저는 Phusion Passenger가 Google의 App Engine에서 django-nonrel과 함께 작업하는 악마를 만나고 있습니다. GoogleAppEngineLauncher 및 프로덕션 서버에서 작동하지만 Passenger에서는 작동하지 않는 것으로 보입니다. 승객 및 GoogleAppEngineLauncher는 사용할 수 있지만 프로덕션 서버는 사용할 수 없습니다. 승객 및 프로덕션 서버에 대해서는 있지만 GoogleAppEngineLauncher에는 해당되지 않습니다.Phusion Passenger를 App Engine 용 Django와 함께 사용하려면 어떻게해야합니까?

세 가지 모두에 내 앱을 배포하려면 어떻게해야합니까?

답변

0

는 여기에 내가 맥 OS X 스노우 레오파드 (Snow Leopard)에 할 필요가있는 작업은 다음과 같습니다

  1. 는 'ROOT/공통 응용 프로그램'에 직접 djangoappengine 디렉토리를 넣습니다. common-apps 디렉토리 외부에두면 appengine이 혼란 스러울 수 있으며 PROJECT_DIR로 ROOT를 사용하는 대신 djangoappengine 디렉토리를 PROJECT_DIR로 사용하십시오. .py를 common-apps 디렉토리에 추가해야 할 수도 있습니다.
  2. ROOT 디렉토리의 django-nonrel OUTSIDE를 입력하고 ROOT/common-apps/django에서 NONROOT/django-nonrel/django로 심볼릭 링크를 만드십시오. django-nonrel을 common-apps 디렉토리에 직접 배치하면 배포 할 때 app-engine의 3000 파일 업로드 제한을 초과하게됩니다.
  3. 빈 ROOT/public 디렉토리를 만듭니다. 승객은이 디렉토리의 부모를 프로젝트 루트로 사용합니다.
  4. 아래와 같이 MYAPPNAME.local이/etc/hosts 인 것으로 가정하여 아파치 가상 호스트를 구성하십시오.
  5. passenger_wsgi.py를 작성하고이를 ROOT 디렉토리에 넣으십시오.

가상 호스트 :

<VirtualHost *:80> 
    ServerName MYAPPNAME.local 
    DocumentRoot /Users/mike/Projects/ROOT/public 
    <Directory /Users/mike/Projects/ROOT/public> 
     AllowOverride all 
     Options -MultiViews 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

passenger_wsgi.py :

import os, sys 

# BUG there must be a better way than listing everything individually... 
sys.path.append('/Users/mike/Projects/ROOT/') 
sys.path.append('/Users/mike/Projects/ROOT/common-apps/') 
sys.path.append('/Users/mike/Projects/NONROOT/django-nonrel/') 
sys.path.append('/usr/local/google_appengine/') 
sys.path.append('/usr/local/google_appengine/lib/yaml/lib/') 
sys.path.append('/usr/local/google_appengine/lib/antlr3/') 
sys.path.append('/usr/local/google_appengine/lib/django/') 
sys.path.append('/usr/local/google_appengine/lib/cacerts/') 
sys.path.append('/usr/local/google_appengine/lib/ipaddr/') 
sys.path.append('/usr/local/google_appengine/lib/webob/') 
sys.path.append('/usr/local/google_appengine/google/appengine/api/') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

는 다행스럽게도 필자는 중요한 아무것도를 떠나지 않았다.

관련 문제