Django+Nginx+uWSGI部署
Posted faramita2016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django+Nginx+uWSGI部署相关的知识,希望对你有一定的参考价值。
一.介绍
Django的部署有多种方式,采用nginx+uWSGI的方式是最常见的一种方式。在这种方式中,将Nginx作为服务器前端,接收Web的所有请求,统一管理请求。Nginx自己处理所有静态请求,所有非静态请求通过uWSGI传递给Django,由Django来进行处理,从而完成一次Web请求。
Django工程创建:Django Web框架入门
二.安装配置
环境:Python(3.5.2)、Django(1.11.6)
1.安装pip
root@787c084a44e4:~# apt-get install -y python3-pip
2.安装uWSGI
root@787c084a44e4:~# python3 -m pip install uWSGI
3.安装Django
root@787c084a44e4:~# python3 -m pip install Django
4.安装Nginx
root@787c084a44e4:~# apt-get install -y nginx
5.通过文件配置uwsgi,新建文件/root/web/uwsgi.ini
[uwsgi] # 监听IP和端口 socket = 127.0.0.1:9090 # 项目主目录 chdir = /root/web/Django # uwsgi文件路径 module = Django.wsgi:application # 允许主进程存在 master = True # 开启的进程数 workers = 1 # 服务器退出时自动清除环境 vacuum = True # 设置工作进程请求上限 max-requests = 1000 # 记录主进程的pid pidfile = /var/uwsgi.pid # 使进程在后台运行 daemonize = /var/uwsgi.log
6.配置nginx虚拟主机,新建文件/etc/nginx/sites-enabled/django.conf
# nginx需要连接的后端代理 upstream django { server 127.0.0.1:9090; } # 虚拟主机配置 server { # 监听端口 listen 8080; # 域名 server_name 127.0.0.1; # 编码 charset utf-8; # 静态文件路径 location /static { alias /root/web/Django/static; } # 将动态请求转发到uwsgi运行的django程序 location / { uwsgi_pass django; include /etc/nginx/uwsgi_params; } }
7.修改nginx默认运行用户,修改/etc/nginx/nginx.conf文件,user www-data修改为user root
三.验证部署
运行工程
root@787c084a44e4:~/web# uwsgi --ini uwsgi.ini & nginx
访问地址http://127.0.0.1:8080/list,数据和页面css样式正常
四.异常情况
1.出现DisabllowedHost
修改Django/Django/settings.py文件
ALLOWED_HOSTS = ["*"]
2.出现静态文件403异常
Nginx使用www-data用户运行,无web目录读取权限,修改/etc/nginx/nginx.conf文件,user www-data修改为user root
以上是关于Django+Nginx+uWSGI部署的主要内容,如果未能解决你的问题,请参考以下文章
debian完整部署 Nginx + uWSGI + Django
Django + Uwsgi + Nginx 实现生产环境部署
centos7下部署Django(nginx+uWSGI+Python3+Django)