【发布时间】:2018-10-06 07:45:20
【问题描述】:
我是 Bluehost 的新手,我正在尝试查找有关如何使用 WSGI 在 Bluehost 上部署 Django 的说明,因为在 Django 1.9 中已弃用并删除了 FastCGI 支持。但是,经过一整天的谷歌搜索,我仍然找不到任何说明。谁能帮帮我,好吗?
【问题讨论】:
标签: django python-3.x deployment wsgi bluehost
我是 Bluehost 的新手,我正在尝试查找有关如何使用 WSGI 在 Bluehost 上部署 Django 的说明,因为在 Django 1.9 中已弃用并删除了 FastCGI 支持。但是,经过一整天的谷歌搜索,我仍然找不到任何说明。谁能帮帮我,好吗?
【问题讨论】:
标签: django python-3.x deployment wsgi bluehost
通过执行以下操作,我能够让 Django 在 Bluehost 上工作。
我必须构建一个最近的 python 并设置一个可以很好地配置它的 virtualenv。然后我用 pip 安装了 django 和 Flup。因为我使用的是 postgresql,所以我还安装了 psycopg2。这是相当艰巨的,因为缺少许多依赖项,例如最新的 openssl 和 postgress,但对于这个问题来说,这完全是题外话。
使用 .htaccess 告诉 apache 运行 django.fcgi 脚本。您需要使 django.fcgi 可执行。
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
#!/bin/bash
HOME=/path/to/my/home/directory
# Useful for debugging. Kill it once things are working.
exec 2>> $HOME/fcgi.log 1>> $HOME/fcgi.log
echo Restarting fcgi
# Start up the virtualenvironment.
. $HOME/venv/bin/activate
python -m fcgi
from flup.server.fcgi import WSGIServer
from django.core.wsgi import get_wsgi_application
import os
if __name__ == '__main__':
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_project_name.settings'
application = get_wsgi_application()
# Remember to set debug to False once you have things working.
WSGIServer(application, debug=True).run()
我发现更改 django.fcgi 会导致应用程序重新加载。触摸该文件是不够的。实际上,我不得不说,添加/删除一些空格。
以这种方式运行似乎可行,但有时似乎会使 bluehost 资源限制不愉快。我有时会吐出来
-jailshell: fork: retry: Resource temporarily unavailable
当我进入时。我还没有完全弄清楚它何时执行此操作的模式。但是我在不使用fcgi的时候没有遇到过(嗯,make -j2也会触发)。
请注意,这种方法适用于我的 Django 3.2.5,在 fcgi 支持被删除之后。在这种方法中,flup 正在实现 fcgi,并将请求转换为 wsgi 用于 django。
【讨论】:
pwd 来扣除 HOME,但其他复制粘贴工作。