部署 Django、Flask 项目(一)

说明

1、使用 Git 做代码版本管理

2、使用 Gunicorn 做 Django 的多线程服务器

3、使用 Supervisor 做进程管理工具

备注:也可以不使用 Supervisor 做进程管理,请参考 第二种方案 。

一、Gunicorn

是一个 Python WSGI UNIX 的HTTP服务器,它的作用是用来代替 Django 自带 Server,自带的 Server 只能单线程运行。Gunicorn 能并发多线程,轻量级的资源消耗,以及高性能等特点。

pip install gunicorn

命令说明

gunicorn 模块名:变量名 [OPTIONS]

1、运行项目

Django:gunicorn 项目名.wsgi:application

Flask:gunicorn wsgi:application

说明--模块名:变量名

模块名就是引导用的 python 文件名称(不包括后缀/模块名),变量名就是 Flask 或 Django 实例的名称。

2、绑定socket

-b ip:port

3、以守护进程运行

-D

4、工作进程数

-w 数量

gunicorn是一个pre-fork worker模式,就是指gunicorn启动的时候,在主进程中会预先fork出指定数量的worker进程在处理请求时,gunicorn依靠操作系统来提供负载均衡,通常推荐的worker数量是:(2 x $num_cores) + 1

二、Supervisor

supervisor 是一个制作守护进程的工具,用户可以在 UNIX 系统中监控、管理进程。常用于管理与某个用户或项目相关的进程,帮助维护各种服务器的进程,即使有软件崩了也能帮我们自动重启。

pip install supervisor

1、配置文件

类似于 Nginx 虚拟服务器一样,Supervisor 管理的每一个进程都以 /etc/supervisor/conf.d/ 目录下的一个配置文件形式存在,扩展名为 conf。配置文件如下:

部署 Django、Flask 项目(一)_第1张图片

2、虚拟环境的使用

特别感谢 @李阳良 老师

command 使用绝对路径。例如,使用 gunicorn,使用 /path/to/pipenv/gunicorn。


3、命令使用

(1)启动进程

supervisorctl start [xxxx|all]

(2)关闭进程

supervisorctl stop [xxxx|all]

(3)加载新的配置文件,重启所有进程

supervisorctl reload

(4)只加载新的配置文件,不重启

supervisorctl reread

(5)根据 reread 的最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启

supervisorctl update

注:一般(4)和(5)配合使用

(6)查看运行状态

supervisorctl status

你可能感兴趣的:(部署 Django、Flask 项目(一))