在FastCGI模式下运行Django的ImportError

时间:2013-10-17 11:31:10

标签: django .htaccess fastcgi

我目前正在尝试部署我的第一个基于django的网站,并遇到一些问题,因为我很少配置服务器。

我按照主持人提供的指南,我的文件现在看起来像这样。

文件夹结构。

mysite/
    manage.py
    mysite/
        apps
        settings/
            __init__.py
            base.py
            local.py
            production.py
    requirements.txt
    venv
www/
    .htaccess
    mysite.fcgi

的.htaccess

AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ mysite.fcgi/$1 [QSA, L]

mysite.fcgi

#!/usr/local/bin/python
import sys
import os

sys.path.append("home/users/myuser")

from django.core.handlers.wsgi import WSGIHandler
from flup.server.fcgi import WSGIServer

os.chdir("/home/users/myuser/mysite/")
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

WSGIServer(WSGIHandler()).run()

主机提供的指南说他们正在运行FastCGI,但是当在.htaccess中添加处理程序时,我看到他们已经添加了fcgid-script而不是fastcgi-script。所以我都试过了。

使用 fcgid-script 时,我从错误日志中收到此错误:

mod_fcgid: stderr: ImportError: Could not import settings 'mysite.settings' 
(Is it on  sys.path?): No module named mysite.settings

使用 fastcgi-script 时,我从错误日志中收到此错误:

File does not exist: /home/users/myuser/www/mysite.fcgi/favicon.ico

此外,我正在使用virtualenv为我的项目看起来像这样。

requirements.txt

Django==1.4.2
Markdown
PIL=1.1.7
MySQL-python
South
flup

如果有人能看到我做错了什么,那将非常感谢帮助。谢谢。

当我使用virtualenv时,我必须将其添加到我的.fcgi文件中以解决问题

venv = '/home/users/myuser/mysite/venv/bin/activate_this.py'
execfile(venv, dict(__file__=venv))

1 个答案:

答案 0 :(得分:0)

我对FastCGI的了解并不多,但似乎第二个选择是抛出此错误File does not exist: /home/users/myuser/www/mysite.fcgi/favicon.ico必须是Apache配置文件中的设置。 mysite.settings似乎是正确的,所以可能找到一种方法来删除对.ico文件的引用(我在Mod-WSGI上的django设置将在apache2配置中)或者将ico文件添加到它当前不能的路径被发现。