2

我从 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]

我的问题在哪里?我在 Unicode BOM 中编码了我的 django.fcgi 文件,就像这里一样,但没有结果。你有什么想法吗?谢谢...

编辑:好吧,我的网站无法正常工作:500 内部服务器错误。

服务器配置:Apache、Python 2.6、Django 1.5

4

1 回答 1

1

我认为您不应该那样运行该文件。尽管开头有 shebang 行,但该文件应被解释为 shell 脚本 (bash) 而不是 python 脚本,因此会出现“导入”错误(import似乎是一个 ImageMagick 命令,它会生成类似于屏幕截图的内容)。

所以运行该文件的正确方法是其中之一

bash -c "./django.fcgi" # file must have execution permission
python django.fcgi
./django.fcgi           # also

DEBUG=True如果您的应用程序配置为在某处记录,则可以打开settings.py或读取日志来调试 500 错误。

编辑:

关于导入错误,我认为正确的配置是

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

希望能帮助到你。

于 2013-03-01T00:58:17.273 回答