在 Nginx 上部署 Django
Posted
技术标签:
【中文标题】在 Nginx 上部署 Django【英文标题】:Deploying Django on nginx 【发布时间】:2013-07-04 21:21:24 【问题描述】:您好,我需要在 nginx 上部署一个 django 应用程序。我在我的 Fedora 中安装了 nginx 和 python-flup 我尝试了这个 guide 但 nginx 无法读取我的静态文件。 在我的项目目录中,我使用此命令运行 fastcgi:
[nima@ca005 bank]$ python ./manage.py runfcgi host=127.0.0.1 port=8080
[nima@ca005 bank]$
这是我在 /etc/nginx/sites-enable/ 中的 sample_project.conf :
server
listen 80;
server_name 192.168.16.161;
access_log /var/log/nginx/sample_project.access.log;
error_log /var/log/nginx/sample_project.error.log;
# https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-production
location /static/ # STATIC_URL
alias /home/nima/workspace/bank/media/; # STATIC_ROOT
expires 30d;
location /media/ # MEDIA_URL
alias /home/nima/workspace/bank/meli/static/; # MEDIA_ROOT
expires 30d;
location /
include fastcgi_params;
fastcgi_pass 127.0.0.1:8080;
fastcgi_split_path_info ^()(.*)$;
nginx.conf:
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /run/nginx.pid;
events
worker_connections 1024;
http
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enable/*;
我该怎么办?!
【问题讨论】:
【参考方案1】:首先,如果您选择使用 nginx,则使用 gunicorn
,这是最好的选择,如果您希望使用 Apache,则使用 mod_wsgi
。
This 将向您展示如何使用 gunicorn。只是为了告诉您它的服务效果如何,Instagram 使用 gunicorn,因为他们声称它可以为他们提供更好的性能。
设置gunicorn
非常简单易行,这里的this 教程为您提供了快速完成所需的一切。
This 是他们的网站。
【讨论】:
我使用 gunicorn 但是当我运行这个命令 gunicorn_django -b 0.0.0.0:8000 时它看不到我的静态 @nim4n:试试这个:***.com/questions/12800862/… 静态部分 yes 。但我对新贵部分有疑问。当我尝试启动服务时它给了我这个错误:root@ca005 nima]# service hello start Redirecting to /bin/systemctl start hello.service 未能发出方法调用:单元 hello.service 加载失败:没有这样的文件或目录.有关详细信息,请参阅系统日志和“systemctl status hello.service”。 这可能会有所帮助,我写了一个使用 upstart、nginx 和 gunicorn 部署 Django 的指南:ponytech.net/blog/2013/09/10/… gunicorn 实际上 做了什么?它的作用是什么?【参考方案2】:使用 fastcgi 模式尝试 this 链接 或者this链接使用uwsgi模式
编辑:fcgi 模式在 django 中已弃用,将被删除。 uwsgi 是有利的模式。众多参考资料之一,check this
【讨论】:
以上是关于在 Nginx 上部署 Django的主要内容,如果未能解决你的问题,请参考以下文章
DjangoDjango Debug Toolbar调试工具配置