django + uwsgi + ngnix + debug off =服务器错误(500)

时间:2013-06-17 14:47:23

标签: django

我正在尝试设置一个由django + uwsgi + ngnix组成的生产服务器。 我正在关注的教程位于http://www.panta.info/blog/3/how-to-install-and-configure-nginx-uwsgi-and-django-on-ubuntu.html

生产服务器正在运行,因为我可以在启用调试时看到管理页面,但是当我关闭调试时。它再次显示服务器错误(500)。我不知道该怎么办 。 Ngnix应该服务于django请求。我现在很无能为力,请有人帮助我。

我的/etc/nginx/sites-available/mysite.com

server {
  listen  80;
  server_name mysite.com www.mysite.com;
  access_log /var/log/nginx/mysite.com_access.log;
  error_log /var/log/nginx/mysite.com_error.log;


  location / {
    uwsgi_pass  unix:///tmp/mysite.com.sock;
    include     uwsgi_params;
  }



  location /media/  {
    alias /home/projects/mysite/media/;
  }



  location  /static/ {
   alias  /home/projects/mysite/static/;
  }
}

我的/etc/uwsgi/apps-available/mysite.com.ini

[uwsgi]
vhost = true
plugins = python
socket = /tmp/mysite.com.sock
master = true
enable-threads = true
processes = 2
wsgi-file = /home/projects/mysite/mysite/wsgi.py
virtualenv = /home/projects/venv
chdir = /home/projects/mysite
touch-reload = /home/projects/mysite/reload

我的settings.py

root@localhost:~# cat /home/projects/mysite/mysite/settings.py
# Django settings for mysite project.

DEBUG = False
TEMPLATE_DEBUG = DEBUG





min/css/base.css" failed (2: No such file or directory), client: 160.19.332.22, server: mysite.com, request: "GET /static/admin/css/base.css HTTP/1.1", host: "160.19.332.22"
2013/06/17 14:33:39 [error] 8346#0: *13 open() "/home/projects/mysite/static/admin/css/login.css" failed (2: No such file or directory), client: 160.19.332.22, server: mysite.com, request: "GET /static/admin/css/login.css HTTP/1.1", host: "174.200.14.200"
2013/06/17 14:33:39 [error] 8346#0: *14 open() "/home/projects/mysite/static/admin/css/base.css" failed (2: No such file or directory), client: 160.19.332.22, server: mysite.com, request: "GET /static/admin/css/base.css HTTP/1.1", host: "174.200.14.2007", referrer: "http://174.200.14.200/admin/"
2013/06/17 14:33:39 [error] 8346#0: *15 open() "/home/projects/mysite/static/admin/css/login.css" failed (2: No such file or directory), client: 160.19.332.22, server: mysite.com, request: "GET /static/admin/css/login.css HTTP/1.1", host: "174.200.14.200", referrer: "http://174.200.14.200/admin/"

2 个答案:

答案 0 :(得分:18)

我认为这是你的ALLOWED_HOSTS设置(Django 1.5中的新功能)

settings.py

中尝试以下操作
ALLOWED_HOSTS = ['*']

这将允许所有内容连接,直到您对域名进行排序。

值得一提的是,当您获得已排序的域名时,请确保更新此值(允许的域名列表)。作为ALLOWED_HOSTS州的文档:

  

这是一项防止攻击者中毒的安全措施   缓存和密码重置电子邮件,其中包含指向恶意主机的链接   使用伪造的HTTP主机标头提交请求,这是可能的   即使在许多看似安全的网络服务器配置下也是如此。

另外(稍微一点) - 我不知道你的每个环境的django设置是否有不同的设置,但这就是我的工作:

settings.py包括:

的最后
try:
    from local_settings import *
except ImportError:
    pass

然后在与settings.py相同的目录中创建local_settings.py文件(如果使用与初始模板不同的结构,则创建__init__.py文件)并在那里设置每个环境的设置。同时从版本控制系统中排除local_settings.py

e.g。我的DEBUG=False中有settings.py(安全默认设置),但我可以在开发本地设置中使用DEBUG=True覆盖。

我还将所有数据库信息保存在我的本地设置文件中,因此它不受版本控制。

如果您还不知道,请提供一些信息: - )

答案 1 :(得分:0)

我遇到了同样的问题,但就我而言,原来是STATICFILES_STORAGE被错误地设置为:

STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'

这个问题已经被接受了,但是如果有人遇到同样的情况,我将离开这个问题。对于相同的错误,您也可以看到此similar answer