Django项目部署到服务器有三种方式
1.uwsgi
2.uwsgi+nginx项目部署(推荐)
3.uwsgi+nginx分布式项目部署
uwsgi项目部署
步骤
- 1.确定远程主机IP地址,登录账号,登录密码
包括FTP登录账号和密码
SSH远程终端登录账号+密码
- 2.确定远程主机软件环境(项目环境)
1.python是否安装配置完成(版本号要与开发环境一致)
2.Django模块是否安装配置完成(版本号要与开发环境一致)
3.mysql数据库是否安装配置完成
4.确定项目中使用的第三方模块是否安装配置完成
- 3.uwsgi项目部署
1.确认uwsgi是否安装成功[uwsgi是python的一个模块]
2.如果没有安装 pip3 install uwsgi
- 4.上传项目,部署web app
1.FTP上传已经打包压缩好的web项目
2.在服务器解压缩,检查项目的完整性
- 5.创建对应的数据库,同步数据模型对应的数据表
1.在setting的data中查看需要的数据库,注意配置密码
2.在数据库创建数据库
3.python manage.py makemigrations
4.python manage.py migrate
5.初始化导入需要的数据
- 6.处理静态文件
static_root=‘static的路径’
执行命令收集所有的静态文件 python manage.py collectstatic
- 7.命令运行Django项目
uwsgi --http=192.168.X.X:8000 --flie=项目名/wsgi.py ---static_map=/static=static_file '静态文件的地址'
- 8.配置所有需要的选项,通过配置文件启动uwsgi服务器
1.在项目路径下创建一个uwsgi.ini配置文件
2.写配置项
[uwsgi]
http=192.168.x.x:8000
chdir=项目路径 # 项目根目录
wsgi-file=项目名/wsgi.py # wsgi文件的目录
process=4 # 要启动多少个进程
threads=2 # 每个进程启动几个线程
master=true # 主管理进程
pidfile=uwsgi.pid # 主管理进程放到哪个文件中
daemonize=uwsgi.log # uwsgi日志
static-map=/static=static_file # 静态文件
3.用配置文件来启动 uwsgi --ini uwsgi.ini
4.查看启动是否成功 ps -ef|grep uwsgi
[启动6个进程,一个主进程,4个process工作进程,1个守护进程(监测工作进程是否启动)]
uwsgi+nginx项目部署(推荐)
- 分工
uwsgi部署web app
Nginx 反向代理服务器 静态文件服务器 - 原理
1.Nginx接收请求,转发给uwsgi
2.Nginx和uwsgi之间是通过socket连接的 - 步骤
- 1.修改uwsgi配置文件
1.http连接修改成socket连接
2.为了保证项目的安全性,将公网的地址修改成本机的地址 socket = 127.0.0.1:8000
3.静态文件映射注释掉
- 2.Nginx相关
1.确认服务是否安装了Nginx
2.修改nginx配置文件/etc/nginx/nginx.conf
- 添加虚拟服务器配置[service],service配置包含在http配置中,直接在http中追加即可,然后执行下面两条
- 添加反向代理路由配置[location -uwsgi_pass]
- 添加静态文件路由配置[location -alias]
- 3.重启nginx
与方案一比较
1.nginx对于静态文件的处理优于uwsgi
2.uwsgi对于动态请求的处理非常优秀,所以最好的方式就是nginx反向代理,让uwsgi处理动态请求
uwsgi+nginx分布式项目部署
单服务器模式[伪分布式]
- 原理
1.Nginx接收请求,作为负载均衡服务器分发请求给uwsgi
2.Nginx做静态服务器,处理静态文件 - 步骤
1.uwsgi改造
1.将uwsgi接收请求的方式修改为http
2.nginx配置
1.配置静态文件服务器[location -alias]
2.负载均衡
1.配置上行的数据流量upstream myweb {server ip:端口 server ip:端口} 将多个转发请求的服务地址配置上
2.路由配置[location / {Proxy_pass:http://myweb;}]
默认情况下,nginx的负载均衡,请求轮询分发给所有后端服务器
网友评论