在Alwaysdata上部署Django

2 投票
1 回答
1915 浏览
提问于 2025-04-17 17:31

我看了来自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")

希望这能帮到你。

撰写回答