用nginx和uWSGI提供django

前端之家收集整理的这篇文章主要介绍了用nginx和uWSGI提供django前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我跟着this post去服务我的django项目.该项目与manage.py runserver运行良好,我想将其设置为生产.这是我的设置文件

Nginx.conf:

  1. upstream django {
  2. server /tmp/vc.sock;
  3. #server 10.9.1.137:8002;
  4. }
  5. server {
  6. listen 8001;
  7. server_name 10.9.1.137;
  8. charset utf-8;
  9. client_max_body_size 25M;
  10. location /media {
  11. alias /home/deploy/vc/media;
  12. }
  13. location /static {
  14. alias /home/deploy/vc/static;
  15. }
  16. location / {
  17. uwsgi_pass django;
  18. include /etc/Nginx/uwsgi_params;
  19. }
  20. }

uwsgi.ini:

  1. [uwsgi]
  2. chdir = /home/deploy/vc
  3. wsgi-file = vc/wsgi.py
  4. master = true
  5. processes = 2
  6. #socket = :8002
  7. socket = /tmp/vc.sock
  8. chmod-socket = 666
  9. vacuum = true

如果我使用TCP端口套接字(服务器10.9.1.137:8002和套接字=:8002),它会没事的.但是,如果我将它们注释掉并使用Unix套接字(服务器/tmp/vc.sock和socket = /tmp/vc.sock),服务器将返回502错误.我应该怎么解决

这是运行/etc/init.d/Nginx restart时的Nginx错误日志

  1. Nginx: [emerg] invalid host in upstream "/tmp/vc.sock" in /etc/Nginx/conf.d/vc.conf:2
  2. Nginx: configuration file /etc/Nginx/Nginx.conf test Failed

当我运行uwsgi –ini vc / uwsgi.ini时,这是警告:

  1. *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***

我不能以root身份运行uWSGI吗?

最佳答案
使用Unix域套接字的upstream server必须声明为:

  1. upstream django {
  2. server unix:/tmp/vc.sock;

是的,我想你可以以root身份运行uWSGI,但是you absolutely positively should not.这是安全性101. uWSGI项目甚至可以到call it common sense

Common sense: do not run uWSGI instances as root. You can start your uWSGIs as root,but be sure to drop privileges with the uid and gid options.

顺便说一下,你的服务器块可以使用root指令.这可以让你摆脱静态资产的那些毫无意义的冗余位置.

  1. root /home/deploy/vc;

猜你在找的Nginx相关文章