我真的花了一整天的时间来设置我的Django应用程序,以便在我的BlueHost共享主机上运行。我的.htaccess
和mysite.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.
非常感谢任何帮助!
答案 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")