gpt4 book ai didi

python - 为什么 django 在 hostgator 服务器上以这种方式使用 fcgi?

转载 作者:太空狗 更新时间:2023-10-30 01:29:15 26 4
gpt4 key购买 nike

我正在尝试在 hostgator 上部署一个简单的静态站点。我跟着这个tutorial最初在我的 .htaccess 中(abc.com 是网站):

AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On

RewriteRule (media/.*)$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(admin/.*)$ index.fcgi/$1 [L]
RewriteCond %{HTTP_HOST} ^abc\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.abc\.com$
RewriteRule ^/?$ "http\:\/\/abc\.com\/index\.fcgi" [R=301,L]

但这不起作用,并且出于某种原因只会从我的模板目录加载“home.html”。当我尝试点击任何链接时,我会收到 hostgator 404 错误页面。然后在做了一些研究并与 hostgator 支持人员交谈了几次之后,我将其更改为更简单的方法:

AddHandler fcgid-script .fcgi

RewriteEngine On

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

public_html 目录中的 index.fcgi 文件如下所示:

#!/usr/local/bin/python
import sys, os, user
from django.core.servers.fastcgi import runfastcgi

sys.path.insert(0, "/usr/lib/python2.6")
sys.path.insert(0, "/home/joeshmo/django")
sys.path.insert(0, "/home/joeshmo/django/Projects")
sys.path.insert(0, "/home/joeshmo/django/Projects/PersonalWebsite")

# Switch to the directory of your project.
os.chdir("home/joeshmo/django/Projects/PersonalWebsite/")

# Set the DJANGO_SETTINGS_MODULE environment variable.
os.environ['DJANGO_SETTINGS_MODULE'] = "PersonalWebsite.settings"

runfastcgi(method="threaded", daemonize="false")

这行得通,但现在我很好奇这里发生了什么。尽管我自己做了一些研究,但我对 fcgi 的作用感到困惑,更重要的是,它如何告诉 django 从我的模板目录加载正确的 html 文件,因为我与 hostgator 技术人员交谈时向我保证 html 文件只能是从 public_html 文件夹访问。我熟悉 url 调度程序、正则表达式、 View 等的一般概念,但我是一名自学成才的 Web 开发人员,所以请记住这一点。

最佳答案

听起来您可能已经习惯了 PHP 项目,其中 URL 和服务器上的路径之间存在 1:1 的对应关系。在 Django 项目中情况并非如此:您将所需的请求路径传递给知道将路径传递给 Django 代码的脚本(通常是 WSGI 脚本,但在您的情况下是 FCGI)。一旦路径到达 Django 代码,它就会在 urls.py 文件中查找匹配的路径模式,如果找到则返回。问题路径在 .htaccess 文件的 $1 变量中发送,这就是为什么在传递文字字符串 'home.html' 而不是实际请求时你只看到 home 模板的原因路径。

其他一切正常吗?我曾经被迫通过 FCGI 在 HostGator 上托管一个 Django 项目,所以我知道设置它的痛苦。如果还有其他问题,我也许能唤起一些可怕的记忆,但我强烈建议查看 Django-friendly host如果你认为你可以继续使用 Django(我很高兴 WebFaction 提供了一个安装程序,可以更容易地通过 WSGI 设置 Django)。

关于python - 为什么 django 在 hostgator 服务器上以这种方式使用 fcgi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20831432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com