首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用WSGI在Bluehost上部署Django应用程序?

如何使用WSGI在Bluehost上部署Django应用程序?
EN

Stack Overflow用户
提问于 2018-10-06 15:45:21
回答 1查看 605关注 0票数 2

我是第一次接触Bluehost,我正在尝试找到关于如何使用WSGI在Bluehost上部署Django的说明,因为Django1.9已经不再支持FastCGI了。然而,经过一整天的谷歌搜索,我仍然找不到任何关于这方面的说明。有谁能帮我一下吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-13 14:48:44

通过执行以下操作,我能够让Django在Bluehost上工作。

  1. 我不得不构建了一个最新的python,并设置了一个virtualenv来很好地配置它。然后我使用pip安装了django和flup。我还安装了psycopg2,因为我使用的是postgresql。这是相当困难的,因为有许多缺少的依赖项,例如最新的openssl和postgress,但对于这个问题来说,这是一个相当离题的话题。

apache使用.htaccess告诉apache运行django.fcgi脚本。您将希望将django.fcgi设置为可执行文件。

代码语言:javascript
运行
复制
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]

  1. 编写一个django.fcgi bash脚本来设置virtualenv并运行python应用程序。

代码语言:javascript
运行
复制
#!/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

  1. 编写一个fcgi.py脚本,使用flup运行django。

代码语言:javascript
运行
复制
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资源限制不满意。我有时会把它吐出来

代码语言:javascript
运行
复制
-jailshell: fork: retry: Resource temporarily unavailable

当我被塞进去的时候。我还没有完全弄清楚它何时这样做的模式。但是当我不使用fcgi时,我还没有遇到过这种情况(嗯,make -j2也会触发它)。

请注意,这种方法适用于我的Django 3.2.5,在移除fcgi支持之后很久。在这种方法中,flup实现了fcgi,并将请求转换为django的wsgi。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52676866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档