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