让你的django在linux上,支持并发形式启动,支持多进程,多线程,乃至于协程的一个C语言编写的高性能工具
-
安装uwsgi工具
pip3 install -i https://pypi.douban.com/simple uwsgi
-
在项目文件夹内编写uwsgi.ini配置文件,以多进程形式启动tf_crm
touch uwsgi.ini #手动创建此uwsgi的配置文件,写入如下的内容参数,去启动crm # 写入如下的功能性的参数配置,用于启动项目 # 这些部署的流程,是国外的uwsgi官网,给与的用法,我们照着用即可 # 注意要根据你自己的目录,修改如下的参数
[uwsgi] # Django-related settings # the base directory (full path) # 填写crm项目的第一层绝对路径 chdir = /opt/tf_crm/ # Django's wsgi file # 填写crm项目第二层的相对路径,找到第二层目录下的wsgi.py # 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件 module = tf_crm.wsgi # the virtualenv (full path) # 填写虚拟环境解释器的第一层工作目录 home = /opt/tf_crm/venv_crm # process-related settings # master master = true # maximum number of worker processes # 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几? # 如果是单进程,十万个请求,都丢给一个进程去处理 # 3个工作进程,十万个请求,就分给了3个进程去分摊处理 processes = 3 # the socket (use the full path to be safe # 这里的socket参数,是用于和nginx结合部署的unix-socket参数,这里临时先暂停使用 # socket = 0.0.0.0:8000 # 线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问 # 后端程序是运行在防火墙内部,外网是无法直接访问的 # 临时使用http参数,便于我们用浏览器调试访问 http = 0.0.0.0:8000 # ... with appropriate permissions - may be needed # chmod-socket = 664 # clear environment on exit vacuum = true
-
启动 uwsgi
uwsgi --ini ./uwsgi.ini #指定配置文件启动后端
此时crm项目,已经用uwsgi支持了3个进程的启动了,但是由于uwsgi对静态文件的解析性能很弱,线上是丢给nginx去处理的