Django共享主机设置

时间:2013-12-13 23:25:18

标签: python django apache fastcgi

我真的花了一整天的时间来设置我的Django应用程序,以便在我的BlueHost共享主机上运行。我的.htaccessmysite.fcgi文件位于域根目录,而不是帐户根目录,这意味着我的网站MySite.com指向public_html/mysite目录,因此上面提到的两个文件位于public_html/mysite文件夹下。

的.htaccess

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

mysite.fcgi

#!/home1/username/myvirtualenv/bin/python
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home1/username/myvirtualenv/bin/python")
sys.path.insert(13, "/home1/username/www/mysite")

open("/home1/username/public_html/mysite/cgi.log", "w").write("Before try")

try:
    os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings.dev'
    from django.core.servers.fastcgi import runfastcgi
    runfastcgi(method="threaded", daemonize="false")
except Exception:
    open("/home1/username/public_html/mysite/cgi.log", "w").write(format_exc())
    raise

当我通过ssh运行./mysite.fgci时:

WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Status: 200 OK
X-Frame-Options: SAMEORIGIN
Content-Type: text/html; charset=utf-8

HTML here

当我在浏览器中访问mysite.com时:

Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

尝试替换

sys.path.insert(13, "/home1/username/www/mysite")

sys.path.append("/home1/username/www/mysite")

希望它有所帮助。

答案 1 :(得分:0)

这个答案有点晚,但我希望它对其他人有用。

接下来是我的.htaccess和django.fcgi文件。 这些文件在JustHost中正常工作。 注意第一行和最后一行的差异 我不知道BlueHost的配置是否相同。

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

假设.fcgi和.htaccess文件位于同一目录中。 但在你的情况下,你可以调整最后一行。

我使用的是简约的.fcgi文件(在我的情况下是django.fcgi)

#!/home/.../venv/bin/python
# DO NOT USE SOMETHING LIKE THIS #!/usr/bin/env python
import sys, os

# Add a custom Python path.
sys.path.insert(0, "/home/.../django_project_directory")

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

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")