我在Django上开发了一个项目,在本地使用经典版本顺利运行:
python manage.py runserver
虽然python manage.py runfcgi
命令会抛出我网站的html代码,但在尝试通过创建的子域访问我的网站时,我尝试了一些问题。
场景:给定正确安装的django和flup(python -c "import django"
)版本,我的1and1服务器的主文件夹中有以下结构:
/bla/bla/bla/test_django
|-> manage.py
|-> test_django
| |-> __init__.py
| |-> settings.py
| |-> urls.py
| |-> wsgi.py
|-> dispatch.fcgi
|-> .htaccess
虽然我曾经认为.htaccess
应该放在我的“root”文件夹中,但我也将其复制到test_django
文件夹中。内容如下:
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi/$1 [QSA,L]
我dispatch.fcgi
的内容(已经被编组为755)如下:
import sys
import os
sys.path.insert(0, '~/.local/lib/python2.6/site-packages')
os.environ['DJANGO_SETTINGS_MODULE'] = 'test_django.settings'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
sys.path.insert
行是安装了python的本地版本(不确定是否正确链接。但是,我不确定这是用于什么。无论如何,如前所述,使用{{1 }或python manage.py runfcgi
,显示的输出是网站的HTML。
我现在的问题是:除了将我的子域test.whateverdomain.com指向我的./dispatch.fcgi
文件夹之外,是否还需要做其他事情?这引发了我500错误。我害怕错过了最重要的一点,那就是将用户重定向到将加载内容的可执行文件。
答案 0 :(得分:0)
您应该将.fcgi文件放在名为cgi-bin
的文件夹中。有关详细说明,请参阅Installing a Django app on 1and1 Linux shared hosting。
答案 1 :(得分:0)
修改系统路径的调用是正确的,以便可以访问必要的python包,这绝对是至关重要的。
FCGI文件中的那些行应如下所示:
sys.path.insert(0, "/home#/username/local_usr/lib/python2.7/site-packages")
sys.path.append("/home#/username/django_projects/mynewsite")
第一行是你的python环境,第二行是你的Django项目。我建议使用virtualenv,因此,将(改变你的python环境的位置包含在dir' .env'以及virtualenv命名为' env')你的整个FCGI文件应如下所示:
#!/home#/username/.env/env/bin/python
import sys
import os
sys.path.insert(0, "/home#/username/.env/env/lib/python2.7/site-packages")
sys.path.append("/home#/username/django_projects/test_django")
os.environ['DJANGO_SETTINGS_MODULE'] = 'test_django.settings'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
注意:第一行是不评论。
信用
http://www.binaryadventure.com/2013/10/23/django-on-bluehost-in-five-minutes/ https://help.asmallorange.com/index.php?/Knowledgebase/Article/View/305/0/installing-django-using-virtualenv