抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
+-----------------------------------------------+
| 客户端 |
+-----------------------------------------------+
|
v
+------------------------------------------------+
| Web 服务器 |
| |
| +-------------------+ |
| | uWSGI | |
| +-------------------+ |
| | |
| | |
| v |
| +-------------------+ |
| | WSGI | |
| +-------------------+ |
| | |
| v |
| +-------------------+ |
| | Python 项目 | |
| +-------------------+ |
| | |
| | |
| v |
| +-------------------+ |
| | ORM/数据库驱动程序 | |
| +-------------------+ |
| | |
| v |
| +-----------------------+ |
| | 数据库服务器 | |
| +-----------------------+ |
+------------------------------------------------+

配置uwsgi并启动http服务

运行在Linux服务的Django项目为例

0.安装uwsgi

1
pip install uwsgi

如有虚拟环境,请进入虚拟环境进行安装

1.书写uwsgi.ini配置

例如:

项目所在位置: /home/wskice/my_project/

项目的主应用名称: book_manage

以下为常用的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[uwsgi]
# 使用Nginx连接时使用,Django程序所在服务器地址
# socket = 0.0.0.0:8000
# 直接做web服务器使用,Django程序所在服务器地址
http = 0.0.0.0:8000
# 项目目录
chdir = /home/wskice/my_project/
# 静态文件路径
static-map /static=/home/wskice/my_project/static
# 项目中wsgi.py文件路径
wsgi-file = book_manage/wsgi.py
# 进程数
processes = 1
# 线程数
threads = 2
# uwsgi服务器运行模式
master = True
# 存放进程编号的文件
pidfile = uwsgi.pid
# 日志文件输出位置
daemonize = uwsgi.log
# 指定依赖的虚拟环境
virtualenv = /Users/wskice/.virtualenvs/python3.11_django4

注意⚠️:项目目录必须为英文,避免程序运行出错!

配置的说明

  • 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
2
3
4
5
# 设置uWSGI监听的地址和端口
http-socket = 0.0.0.0:8000

# 开启HTTPS支持
https = =0,cert=/home/wskice/nginx/certificate.crt,key=/home/wskice/nginx/private.key

其中https的 cert属性的值为ssl证书的crt文件路径 key属性的值为ssl证书的key文件路径

以上配置从官方扒拉的,官方文档

评论