在Alwaysdata上部署Django
我看了来自Alwaysdata的部署Django应用的内容,但遇到了一些问题。
当我运行 bash django.fcgi
时,终端显示:
import: unable to open X server `' @ import.c/ImportImageCommand/367.
django.fcgi: line 5: syntax error near unexpected token `('
django.fcgi: line 5: `PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))'
我按照他们说的做了,但还是无法解决这个问题。我使用的是Django 1.5。
- mymodule
- mysite
... __init__.py
... settings.py
... urls.py
.. wsgi.py
- public
... django.fcgi
... .htaccess
... static
... media
- manage.py
- statics
- templates
- __init__.py
这是我的 django.fcgi
文件和 .htaccess
文件:
#!/usr/bin/python
import os, sys
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, PROJECT_DIR)
sys.path.insert(0, os.path.dirname(PROJECT_DIR))
PROJECT_NAME = PROJECT_DIR.split('/')[-1]
os.environ['DJANGO_SETTINGS_MODULE'] = "settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ django.fcgi/$1 [QSA,L]
我的问题出在哪里呢?我把我的django.fcgi文件编码成了Unicode BOM,就像这里说的那样,但没有任何效果。你们有什么想法吗?谢谢...
补充:我的网站现在无法正常工作,出现了500内部服务器错误。
服务器配置:Apache,Python 2.6,Django 1.5
1 个回答
1
我觉得你不应该那样运行那个文件。虽然文件开头有个特殊的标记(shebang),但它应该被当作一个shell脚本(bash)来解释,而不是Python脚本,所以才会出现“导入”错误(import
看起来像是一个ImageMagick的命令,用来做一些像截图的操作)。
所以正确运行这个文件的方法是下面这些之一:
bash -c "./django.fcgi" # file must have execution permission
python django.fcgi
./django.fcgi # also
500错误可以通过在settings.py
中把DEBUG=True
打开,或者查看日志来调试,如果你的应用配置了日志记录的话。
补充:
关于导入错误,我认为正确的配置是:
os.environ['DJANGO_SETTINGS_MODULE'] = "mysite.settings"
你现在的设置是Django试图加载public/settings.py
,但这失败了。更多信息可以在这里找到。
如果这样还不行,试着指定settings.py的完整路径:
os.environ['DJANGO_SETTINGS_MODULE'] = os.path.join(PROJECT_DIR, "mysite", "settings")
希望这能帮到你。