代码之家  ›  专栏  ›  技术社区  ›  emmby

我该如何让乘客与Django一起使用应用程序引擎?

  •  1
  • emmby  · 技术社区  · 15 年前

    我正苦恼地让普锐斯的乘客和DjangoUnrel一起为谷歌的应用引擎工作。我似乎可以让它为googleappenginelauncher和生产服务器工作,但不是为乘客;或为乘客和googleappenginelauncher而不是生产服务器;或为乘客和生产服务器而不是googleappenginelauncher工作。

    如何让我的应用程序在这三个应用程序上部署?

    1 回复  |  直到 15 年前
        1
  •  0
  •   emmby    15 年前

    以下是我在Mac OS X Snow Leopard上需要做的:

    1. 将djangoappengine目录直接放在“根/公共应用程序”中。如果将其放在公共应用程序目录之外,AppEngine可能会混淆,并使用djangoappEngine目录作为项目目录,而不是使用根目录作为项目目录。您可能还需要添加 初始化 .py到您的公共应用程序目录。
    2. 将django unrel放在根目录之外,并从root/common apps/django到nonroot/django unrel/django建立一个符号链接。如果将django nonrel直接放入公共应用程序目录,则在部署时可能会超过应用程序引擎上的3000个文件上载限制。
    3. 创建一个空的根目录/公用目录。passenger使用此目录的父目录作为项目根目录。
    4. 如下配置您的Apache vhost,假设myAppName.local是您的/etc/hosts
    5. 创建passenger_wsgi.py并将其放到根目录中,如下所示。

    Vist:

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

    乘客姓名:

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

    希望我没有遗漏任何重要的事情。