在共享主机上设置Django网站

4

如何在共享主机中设置Django网站?我已经检查了Django的安装,一切正常。

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

我遵循了http://www.djangobook.com/en/2.0/chapter12/中关于在共享托管提供商上使用Apache运行Django的部分,但没有成功。目前网站是这样的

/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 并不是按顺序的。这只是为了编号我尝试过的事情。另外,如果我选择了第四个,网站会显示 dispatch.fcgi 的内容。


在共享主机上,提供商可能会为了安全、限制等原因更改一些设置。尝试联系他们以获取配置帮助。 - Umur Kontacı
1
他们是否为您的URL提供错误日志访问权限?这将是故障排除的最佳方式。Apache error.log应该清楚地显示出问题所在。我正在编写一个Python共享托管平台,这总是我在这些情况下必须首先和最后查看的内容。 - aychedee
.htaccess和dispatch.fcgi文件中没有明显的错误,对吧? - 絢瀬絵里
3个回答

1

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


1
论坛是用西班牙语编写的,链接已失效。 - Yanick Rochon
论坛已上线,但对于更高版本的Django可能会有所不同。 - shakaran

0

大多数支持Python的共享主机平台使用Phusion Passenger来运行Python应用程序。您可以将Django应用程序上传到您的托管空间并使用WSGI来运行它。目前,Django 2.2会引起问题,因此您需要使用Django 2.1或更低版本。我已经写了一篇关于此的逐步教程,可以在这里访问。


0

来自GoDaddy的回应此线程

“对于我们的Linux托管账户,FastCGI可以从Python脚本中访问。但是,我们不允许在共享托管账户中添加自定义FastCGI处理程序。”

因此我认为你已经没有希望了。就像我一样,虽然我正在努力说服客户拥有Webfaction帐户,因为它支持mod_wsgi。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接