与女服务员一起托管Django应用程序

chr*_*son 6 python django

我正在尝试在我的Ubuntu VPS上托管一个Django应用程序.我安装了python,django和女服务员,目录移了过来.

我去了女服务员网站(http://docs.pylonsproject.org/projects/waitress/en/latest/)他们说要像这样使用它:

from waitress import serve
serve(wsgiapp, host='5.5.5.5', port=8080)
Run Code Online (Sandbox Code Playgroud)

我是否将我的应用名称替换为'wsiapp'?我是否需要在顶级Django项目目录中运行它?

abo*_*ron 13

用Django 1.9和Waitress 0.9.0测试

您可以waitress通过server.py在django项目根目录中创建脚本(例如)并从wsgi.py模块导入应用程序变量来使用django应用程序:

yourdjangoproject项目根结构

??? manage.py
??? server.py
??? yourdjangoproject
?   ??? __init__.py
?   ??? settings.py
?   ??? urls.py
?   ??? wsgi.py
Run Code Online (Sandbox Code Playgroud)

wsgi.py(您不必编辑此处的任何代码)

"""
WSGI config for olympics2016 project.

It exposes the WSGI callable as a module-level variable named ``application``.

For more information on this file, see
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "yourdjangoproject.settings")

application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)

server.py

from waitress import serve

from yourdjangoproject.wsgi import application

if __name__ == '__main__':
    serve(application, port='8000')
Run Code Online (Sandbox Code Playgroud)

用法

现在你可以跑了 $ python server.py


chr*_*son 9

我设法通过使用 bash 脚本而不是 python 调用让它工作。我制作了一个名为“startserver.sh”的脚本,其中包含以下内容(显然将 yourprojectname 替换为您的项目名称):

#!/bin/bash
waitress-serve --port=80 yourprojectname.wsgi:application
Run Code Online (Sandbox Code Playgroud)

我把它放在顶级Django项目目录中。

更改了所有者执行的权限:

chmod 700 startserver.sh
Run Code Online (Sandbox Code Playgroud)

然后我只是在服务器上执行脚本:

sudo ./startserver.sh
Run Code Online (Sandbox Code Playgroud)

这似乎工作得很好。