2010-05-16 77 views
1

我有一段時間的魔鬼讓Phusion Passenger與Google的App Engine一起使用django-nonrel。我似乎可以讓它適用於GoogleAppEngineLauncher和生產服務器,但不是Passenger;或Passenger和GoogleAppEngineLauncher而不是生產服務器;或Passenger和生產服務器,但不是GoogleAppEngineLauncher。如何讓Phusion Passenger與Django一起使用App Engine?

如何讓我的應用程序在所有三個應用程序上部署?

回答

0

這就是我需要在Mac OS X雪豹做:

  1. 直接把djangoappengine目錄「ROOT /共應用」。如果你將它放在common-apps目錄之外,appengine可能會感到困惑,並將djangoappengine目錄用作PROJECT_DIR,而不是將ROOT用作PROJECT_DIR。您可能還需要將init .py添加到您的common-apps目錄。
  2. 將django-nonrel放到ROOT目錄的外面,並將ROOT/common-apps/django創建一個符號鏈接到NONROOT/django-nonrel/django。如果您將django-nonrel直接放入通用應用程序目錄,那麼當您部署時,您可能會超過應用程序引擎的3000文件上傳限制。
  3. 創建一個空的ROOT /公共目錄。乘客使用此目錄的父目錄作爲項目根目錄。
  4. 如下配置您的apache vhost,假設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() 

希望我沒有留下任何顯著出來。

相關問題