uwsgi 関連の設定

uWSGI は、WSGI プロトコル、uwsgi、http およびその他のプロトコルを実装する Python Web サーバーであり、Nginx とアプリケーションの間のブリッジとして、Django または Flask によって開発された Python Web プロジェクトをデプロイするときによく使用されます。

  • uWSGI は、WSGI 通信仕様と uwsgi プロトコルを実装する Python Web サーバーです。
  • WSGI の正式名称は Web Server Gateway Interface です。これは、Web サーバー (uWSGI サーバーなど) と Web アプリケーション (Django または Flask フレームワークで作成されたプログラムなど) 間の通信の仕様です。
  • uwsgi は、WSGI 通信仕様の独自プロトコルです。

uWSGI 共通コマンド

uWSGI サーバーを起動する

$ uwsgi --ini uwsgi.ini

uWSGI サーバーを再起動します

$ sudo サービス uwsgi 再起動

すべての uWSGI プロセスを表示

$ ps補助 | grep uwsgi

すべての uWSGI プロセスを停止します

$ sudo pkill -f uwsgi -9

uWSGI 共通設定

[uwsgi]
uid=www-data # Ubuntu系统下默认用户名
gid=www-data # Ubuntu系统下默认用户组
project=mysite1  # 项目名
base = /home/user1 # 项目根目录

home = %(base)/Env/%(project) # 设置项目虚拟环境,Docker部署时不需要
chdir=%(base)/%(project) # 设置工作目录
module=%(project).wsgi:application # wsgi文件位置

master=True # 主进程
processes=2 # 同时进行的进程数,一般

# 选项1, 使用unix socket与nginx通信,仅限于uwsgi和nginx在同一主机上情形
# Nginx配置中uwsgi_pass应指向同一socket文件
socket=/run/uwsgi/%(project).sock

# 选项2,使用TCP socket与nginx通信
# Nginx配置中uwsgi_pass应指向uWSGI服务器IP和端口
# socket=0.0.0.0:8000 或则 socket=:8000

# 选项3,使用http协议与nginx通信
# Nginx配置中proxy_pass应指向uWSGI服务器一IP和端口
# http=0.0.0.0:8000 

# socket权限设置
chown-socket=%(uid):www-data
chmod-socket=664

# 进程文件
pidfile=/tmp/%(project)-master.pid

# 以后台守护进程运行,并将log日志存于temp文件夹。
daemonize=/var/log/uwsgi/%(project).log 

# 服务停止时,自动移除unix socket和pid文件
vacuum=True

# 为每个工作进程设置请求数的上限。当处理的请求总数超过这个量,进程回收重启。
max-requests=5000

# 当一个请求花费的时间超过这个时间,那么这个请求都会被丢弃。
harakiri=60

#当一个请求被harakiri杀掉会,会输出一条日志
harakiri-verbose=true

# uWsgi默认的buffersize为4096,如果请求数据超过这个量会报错。这里设置为64k
buffer-size=65536

# 如果http请求体的大小超过指定的限制,打开http body缓冲,这里为64k
post-buffering=65536

#开启内存使用情况报告
memory-report=true

#设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒)
reload-mercy=10

#设置工作进程使用虚拟内存超过多少MB就回收重启
reload-on-as=1024

uWsgi と nginx に関する設定

注: uWSGI と Nginx、unix ソケット、http-socket、http との間には複数の通信方法があります。Nginx の構成は、uwsgi の構成と一致している必要があります。

# 选项1, 使用unix socket与nginx通信
# 仅限于uwsgi和nginx在同一主机上情形
# Nginx配置中uwsgi_pass应指向同一socket文件地址
socket=/run/uwsgi/%(project).sock
# 选项2,使用TCP socket与nginx通信
# Nginx配置中uwsgi_pass应指向uWSGI服务器IP和端口
socket==0.0.0.0:8000 或则 socket=:8000

# 选项3,使用http协议与nginx通信
# Nginx配置中proxy_pass应指向uWSGI服务器IP和端口
http==0.0.0.0:8000

nginx と uwsgi が同じサーバー上にある場合は、ローカル マシンの Unix ソケットを使用して最初に通信します。この時のnginxの設定ファイルは以下の通りです。

location/ {
       
            
    include /etc/nginx/uwsgi_params;
    uwsgi_pass unix:/run/uwsgi/django_test1.sock;
}

nginx と uwsgi が同じサーバー上になく、どちらも TCP ソケット通信を使用している場合、nginx は次の構成を使用できます。

location/ {
       
            
    include /etc/nginx/uwsgi_params;
    uwsgi_pass uWSGI_SERVER_IP:8000;
}

nginx と uwsgi が同じサーバー上になく、両者が http プロトコルを使用して通信する場合、nginx の構成を次のように変更する必要があります。

location/ {
       
            
    # 注意:proxy_pass后面http必不可少哦!
    proxy_pass http://uWSGI_SERVER_IP:8000;
}

おすすめ

転載: blog.csdn.net/m0_37780940/article/details/127151289