Django的部署有多种方式,采用Nginx+uWSGI的方式是最常见的一种方式。在这种方式中,将Nginx作为服务器前端,接收Web的所有请求,统一管理请求。Nginx自己处理所有静态请求,所有非静态请求通过uWSGI传递给Django,由Django来进行处理,从而完成一次Web请求。
环境:Python(3.5.2)、Django(1.11.6)
root@787c084a44e4:~# apt-get install -y python3-pip
root@787c084a44e4:~# python3 -m pip install uWSGI
root@787c084a44e4:~# python3 -m pip install Django
root@787c084a44e4:~# apt-get install -y nginx
新建文件/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
新建文件/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;
}
}
修改/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样式正常
修改Django/Django/settings.py文件
ALLOWED_HOSTS = ["*"]
Nginx使用www-data用户运行,无web目录读取权限,修改/etc/nginx/nginx.conf文件,user www-data修改为user root