python项目启动uwsgi服务
WSGI、uWSGI和python项目之间的关系
首先,我们来介绍一下WSGI。WSGI是Python Web服务器网关接口(Python Web Server Gateway Interface)的缩写。简单来说,它是一个规范,定义了Python Web应用和Web服务器之间的交互接口帮助Python Web应与Web服务器之间互通。
那么uWSGI是什么呢?很简单,它是一个用于运行Python Web应用程序的高性能应用服务器,同时也是Web服务器。它可以与多种Web服务器协同工作,提贡了多进程、缓存、负载平衡和高可用性等强大的功能特性。uWSGI作为应用服务器来运行Python应用程序,并处理与Web服务器之间的通信问题。
最后,让我们来说说它们与Python之间的关系。在Python项目中,我们通常使用uWSGI来作为应用服务器,部署Python Web应用程序到Web服务器。uWSGI通过与Web服务器协同工作,与WSGI接口交互,处理Python Web应用程序和Web服务器之间的通信和交流。
总而言之,uWSGI和WSGI是帮助Python Web应用程序与Web服务器之间互通的重要工具,是Python项目中必不可少的一部分。
来看看图:
1 | +-----------------------------------------------+ |
配置uwsgi并启动http服务
运行在Linux服务的Django项目为例
0.安装uwsgi
1 | pip install uwsgi |
如有虚拟环境,请进入虚拟环境进行安装
1.书写uwsgi.ini配置
例如:
项目所在位置: /home/wskice/my_project/
项目的主应用名称: book_manage
以下为常用的配置
1 | [uwsgi] |
注意⚠️:项目目录必须为英文,避免程序运行出错!
配置的说明
- http 设置uwsgi服务器作为web服务使用,让其直接可以使用http协议进行访问
- chdir 本机项目目录路径
- static-map 静态资源映射
映射的url = 本机指定的目录路径
- wsgi-file 项目中
wsgi.py
文件的目录,相对于项目目录进行设置,一般位于主应用目录下 - processes 进程数(根据cpu核数进行设置,不可设置超过cpu核数)
- threads 线程数,指定一个进程可以模拟的线程数量(一般情况下设置成2)
- master 设置服务器的运行模式,True为一个主进程下创建多个工作进程,方便协同工作,False时将创建多个独立进程进行工作,这样容易发生空间资源和计算资源的竞争和浪费。
- pidfile 存放进程编号的文件(方便结束进程时查看进程id)
- daemonize 日志输出位置,相对于项目目录设置 (如果设置了日志输出的位置,项目默认就是后台运行并开启守护进程了的)
- virtualenv 指定运行python项目的虚拟环境,如不设置则默认使用全局的python环境
2.启动uwsgi服务
假如配置文件在项目目录下,并且配置文件名字为uwsgi.ini
启动命令:
1 | uwsgi --ini uwsgi.ini |
如果出现以下内容说明uwsgi服务启动成功啦
1 | [uWSGI] getting INI configuration from ./uwsgi.ini |
然后它会在项目的根目录生成uwsgi.pid文件
停止命令:
1 | uwsgi --stop uwsgi.ini |
验证是否启动
在浏览器输入你的服务器地址和端口进行访问,如果ok的话那么恭喜你成配置了uwsgi配置
如何启动https的uwsgi服务
需要修改一下配置
1 | # 设置uWSGI监听的地址和端口 |
其中https的 cert属性的值为ssl证书的crt文件路径 key属性的值为ssl证书的key文件路径
以上配置从官方扒拉的,官方文档