4

如何在共享主机中设置 Django 网站?我检查了django安装,没问题

>>> import django
>>> django.VERSION
>>> (1, 4, 0, 'final', 0)

我已经关注了http://www.djangobook.com/en/2.0/chapter12/部分 Running Django on a Shared-Hosting Provider with Apache 无济于事。目前网站是这样的

/home/django_projects/WebsiteName
/sites/WebsiteName.co.id/www/.htaccess
/sites/WebsiteName.co.id/www/dispatch.fcgi

.htaccess 文件是这样的

AddHandler fastcgi-script .fcgi

RewriteEngine On
RewriteBase /
RewriteRule ^(media/.*)$ $1 [QSA,L]
RewriteRule ^(admin_media/.*)$ $1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L]

dispatch.fcgi 是这样的

#!/usr/bin/python
import sys, os
sys.path = ['$HOME/lib/python/Django-1.4'] + sys.path
sys.path = ['$HOME/django_projects'] + sys.path

os.chdir("$HOME/django_projects")
#from flup.server.fcgi import WSGIServer
from django.core.servers.fastcgi import runfastcgi

os.environ['DJANGO_SETTINGS_MODULE'] = 'WebsiteName.settings'
runfastcgi(["method=threaded", "daemonize=false"])

当我访问该网站时,它不断生成错误 500,内部错误。到目前为止我尝试的是,

[1] Changing AddHandler fastcgi-script .fcgi to AddHandler fcgid-script .fcgi
[2] Removing AddHandler fastcgi-script .fcgi
[3] Putting the website directory to /sites/WebsiteName.co.id/www/WebsiteName instead of /home/django_projects/WebsiteName/
[4] Do no. 3 and move dispatch.fcgi to /sites/WebsiteName.co.id/www/WebsiteName

如果这个问题如此愚蠢,我很抱歉。我是 Django 的新手。顺便说一句,没有 1-4 不按顺序排列。这只是对我迄今为止尝试过的事情进行编号。另外,如果我不这样做。4、网站显示dispatch.fcgi的内容。

4

3 回答 3

1

在共享主机上使用 mod_wsgi 部署更容易。我在Quijost上工作,我们在 mod_wsgi 下使用 nginx 作为后端提供了一个带有 Django 1.4 和 Python 2.7 的内置包。我们在我们的论坛中为 mod_wsgi 编写了一个小教程,也许它对您使用 fastcgi 的示例很有用。

于 2012-07-03T09:02:21.643 回答
0

GoDaddy对此线程的回复:

“我们的 Linux 主机帐户可以通过 Python 脚本访问 FastCGI。但是,我们不允许在我们的共享主机帐户中添加自定义 FastCGI 处理程序。”

所以我认为你很不走运。和我一样,虽然我试图说服客户拥有 webfaction 帐户是个好主意,因为它支持 mod_wsgi。

于 2012-07-31T20:05:21.983 回答
0

大多数支持 python 的共享主机平台都使用 phusion Passenger 来运行 python 应用程序。您可以将您的 django 应用程序上传到您的主机并使用 wsgi 来运行它。就目前而言,django 2.2 会导致问题,因此您必须使用 django 2.1 或更低版本。我已经写了一个关于它的分步教程,可以在这里访问。

于 2019-11-01T03:01:46.677 回答