Django:从开发服务器迁移到部署(Apache + mod_wsgi)

时间:2011-01-26 14:10:38

标签: django apache2 mod-wsgi django-dev-server

我正在开发Django上的应用程序,并准备转移到部署服务器。我可以在apache上运行一个新的django项目(我可以看到欢迎页面)。 但是,当我将原始项目的文件复制到apache项目目录时,我开始收到错误。以下是apache / error.log中的示例。

[Wed Jan 26 19:22:08 2011] [error] [client 127.0.0.1] TemplateSyntaxError: Caught     ImportError while rendering: No module named charts
[Wed Jan 26 19:22:36 2011] [error] [client 127.0.0.1] mod_wsgi (pid=4670): Exception   occurred processing WSGI script '/srv/www/enpass/apache/django.wsgi'.
[Wed Jan 26 19:22:36 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
[Wed Jan 26 19:22:36 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
[Wed Jan 26 19:22:36 2011] [error] [client 127.0.0.1]     response = self.get_response(request)
[Wed Jan 26 19:22:36 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 141, in get_response

我的django.wsgi文件看起来像

import os
import sys

path = '/srv/www'
if path not in sys.path:
    sys.path.insert(0, '/srv/www')

os.environ['DJANGO_SETTINGS_MODULE'] = 'enpass.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我已经更改了文件中的所有路径以适应新的目录结构,所以我很确定这不是问题所在。 FIY,我按照本教程http://blog.stannard.net.au/2010/12/11/installing-django-with-apache-and-mod_wsgi-on-ubuntu-10-04/

中给出的步骤进行操作

2 个答案:

答案 0 :(得分:1)

我自己想通了。我们需要将项目目录路径添加到sys.path。以下代码解决了django.wsgi中的问题

path = '/srv/www/enpass'
if path not in sys.path:
    sys.path.append(path)

答案 1 :(得分:0)

看起来你错过了图表模块..

安装pip

sudo easy_install pip

列出包

pip freeze

在开发计算机上执行相同操作并查找图表模块,然后使用

将其安装在生产服务器上
sudo pip install <packagename>