【问题标题】:Deploying a django project on Hostmonster using FastCGI使用 FastCGI 在 Hostmonster 上部署 django 项目
【发布时间】:2012-09-15 15:07:37
【问题描述】:

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

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

我花了很多时间弄清楚如何在我的共享 HostMonster 帐户上加载 python、django 等,并认为当我加载一个通用的、未修改的 django newproject 并得到 django 时,我已经明白了这一切。有效!”屏幕,但是一旦我取消注释 urls.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]

这是我的jarr.fcgi 文件:

#!/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 帐户中提取,但是我什至无法启用管理员,更不用说构建一个实际的站点了,这在我的本地计算机上非常容易。任何建议将不胜感激。

【问题讨论】:

标签: django url fastcgi hostmonster


【解决方案1】:

我为您创建了一个示例 django 项目,它可以轻松地托管在共享托管服务提供商上。你可以在 github 上找到它 - https://github.com/psjinx/django-example-project-shared-hosting

alok 向我询问了answeredrelated question,您也可以调查一下。

如果您仍有问题,请在 cmets 中发布。

【讨论】:

    【解决方案2】:

    注意错误信息:

    The current URL, , didn't match any of these.`
    

    这意味着 Django 没有获取任何 URI 信息。原因是这一行:

     RewriteRule ^(/)?$ mysite/jarr.fcgi [QSA,L]
    

    请注意,唯一可以导致调用fcgi 脚本的是访问“索引”,即使这样也不会给出任何URI 信息。 你会希望你的RewriteRule 是这样的

    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 直接提供服务的目录中。

    【讨论】:

      猜你喜欢
      • 2012-11-09
      • 2011-03-24
      • 2016-10-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多