使用FastCGI在Hostmonster上部署django项目

使用FastCGI在Hostmonster上部署django项目,django,url,fastcgi,hostmonster,Django,Url,Fastcgi,Hostmonster,我觉得这可能是一个非常简单的问题,但我正在尝试学习使用python/django编写代码,这样我就可以为我的家人建立一些简单的博客网站,而无法将我的网站部署到Hostmonster上。我想我已经接近了,但我遇到了以下错误: Django使用newproject.URL中定义的URLconf,按以下顺序尝试了这些URL模式: ^管理员/ 当前URL与其中任何一个都不匹配` 我花了很多时间研究如何在我的共享HostMonster帐户上加载python、django等,并认为当我加载一个通用的、未经修

我觉得这可能是一个非常简单的问题,但我正在尝试学习使用python/django编写代码,这样我就可以为我的家人建立一些简单的博客网站,而无法将我的网站部署到Hostmonster上。我想我已经接近了,但我遇到了以下错误:

Django使用newproject.URL中定义的URLconf,按以下顺序尝试了这些URL模式: ^管理员/ 当前URL与其中任何一个都不匹配`

我花了很多时间研究如何在我的共享HostMonster帐户上加载python、django等,并认为当我加载一个通用的、未经修改的django
newproject
并获得django“it worked!”屏幕时,我已经解决了所有问题,但一旦我取消了url.py和settings.py中的行的注释以启用管理模块,我陷入了上述错误

这是我的
.htaccess
文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/mysite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/$1
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteRule ^(/)?$ /mysite/jarr.fcgi [QSA,L]
#!/home3/usr/python/bin/python
import sys, os
sys.path.insert(0, "/home3/usr/django/django_projects/newproject")
sys.path.insert(0, "/home3/usr/python")
sys.path.insert(0, "/home3/usr/python/lib")
sys.path.insert(0, "/home3/usr/python/lib/python2.7")
sys.path.insert(0, "/home3/usr/python/lib/python2.7/site-packages")
sys.path.insert(0, "/home3/usr/django/django_src")
os.environ['DJANGO_SETTINGS_MODULE'] = "newproject.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
这是我的
jarr.fcgi
文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteCond %{REQUEST_URI} !^/mysite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mysite/$1
RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$
RewriteRule ^(/)?$ /mysite/jarr.fcgi [QSA,L]
#!/home3/usr/python/bin/python
import sys, os
sys.path.insert(0, "/home3/usr/django/django_projects/newproject")
sys.path.insert(0, "/home3/usr/python")
sys.path.insert(0, "/home3/usr/python/lib")
sys.path.insert(0, "/home3/usr/python/lib/python2.7")
sys.path.insert(0, "/home3/usr/python/lib/python2.7/site-packages")
sys.path.insert(0, "/home3/usr/django/django_src")
os.environ['DJANGO_SETTINGS_MODULE'] = "newproject.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

经过数周的工作,我终于从我的hostmonster帐户中获得了“It worked!”的消息,这让我很沮丧,但是我甚至无法启用管理员,更不用说构建一个实际的站点了,这在我的本地机器上非常容易。任何建议都将不胜感激。

我为您创建了一个django项目示例,它可以轻松地托管在共享托管提供商上。您可以在github上找到它-

我有个问题,你也可以调查一下


如果您仍有一些问题,请在评论中发布。

注意错误消息:

The current URL, , didn't match any of these.`
这意味着Django没有得到任何URI信息。原因是这一行:

 RewriteRule ^(/)?$ mysite/jarr.fcgi [QSA,L]
请注意,导致调用
fcgi
脚本的唯一原因是访问“索引”,即使没有给出URI信息。 您希望您的
重写规则
类似

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite/jarr.fcgi/$1 [QSA,L]
(重要部分是
/$1

尝试将
jarr.fgci
移动到域的公共“根目录”(即,不在
mysite
下),并将规则更改为:

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

您仍然可以将文件放在apache直接提供服务的目录中。

您是否能够获得解决方案?我在godaddy共享主机上也面临同样的问题: