2013-12-13 195 views
0

我真的花了我所有的一天設置我的Django應用程序運行在我的BlueHost共享主機上。我的.htaccessmysite.fcgi文件位於域根目錄中,而不是帳戶根目錄,這意味着我有一個指向public_html/mysite目錄的網站MySite.com,因此上述兩個文件位於public_html/mysite文件夾下。Django共享主機設置

的.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. 

任何幫助,高度讚賞!

回答

0

嘗試

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

更換

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

希望它能幫助。

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")