我正在尝试设置一个由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/"
答案 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。