Как мне заставить Phusion Passenger работать с Django для App Engine? - PullRequest
1 голос
/ 16 мая 2010

У меня дьявольское время, когда Phusion Passenger работает с django-nonrel для Google App Engine. Я могу заставить его работать для GoogleAppEngineLauncher и для производственного сервера, но не для Passenger; или для Пассажира и GoogleAppEngineLauncher, но не для производственного сервера; или для Пассажира и производственного сервера, но не для GoogleAppEngineLauncher.

Как заставить мое приложение развернуться на всех трех?

1 Ответ

0 голосов
/ 16 мая 2010

Вот что мне нужно было сделать в Mac OS X Snow Leopard:

  1. Поместите каталог djangoappengine непосредственно в 'ROOT / common-apps'.Если вы поместите его за пределы каталога общих приложений, appengine может запутаться и использовать djangoappengine dir в качестве PROJECT_DIR вместо использования ROOT в качестве PROJECT_DIR.Вам также может понадобиться добавить init .py в каталог общих приложений.
  2. Поместите django-nonrel ВНЕ каталога ROOT и создайте символическую ссылку из ROOT / common-apps/ Django в NONROOT / Django-Nonrel / Django.Если вы поместите django-nonrel непосредственно в каталог общих приложений, вы, вероятно, превысите лимит загрузки файлов 3000 на app-engine при развертывании.
  3. Создайте пустой каталог ROOT / public.Пассажир использует родителя этого каталога в качестве корня проекта.
  4. Настройте свой Apache vhost, как показано ниже, предполагая, что MYAPPNAME.local - это ваш / etc / hosts
  5. Создайте passenger_wsgi.py и поместите его вВаш каталог ROOT, как показано ниже.

vhosts:

<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()

Надеюсь, я ничего не пропустил.

...