暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Uwsgi+Nginx 和 Supervisor 实操

ala阿拉 2021-12-28
598

神坑:

[uwsgi]

# uwsgi 启动时所使用的地址与端口

http-socket = 0.0.0.0:7778

#如果外部直接通过uwsgi访问服务,需将socket改为http-socket或者http,将127.0.0.1改为0.0.0.0  【一下午的坑】

socket = 127.0.0.1:7778

# python 启动程序文件

wsgi-file = app.py

callable = app

# 处理器数

processes = 1

#指的后台启动 日志输出的地方

daemonize = ala.log

#保存主进程的进程号

pidfile = uwsgi.pid

# 自动移除unix Socket和pid文件当服务停止的时候

vacuum=true

Nginx配置

server {

        listen       7777;

        server_name  192.***.***.***;

        location {

            # uwsgi.ini配置

            include      etc/nginx/uwsgi_params;

            uwsgi_pass   127.0.0.1:7778;  需要跟uwsgi对应上

            uwsgi_param  UWSGI_CHDIR srv/;

            uwsgi_param  UWSGI_SCRIPT app:app;


        }


}

这样启动nginx,再启动uwsgi就可以通过192.***.***.***:7777访问了

uwsgi --ini uwsgi.ini  启动
uwsgi --stop uwsgi.ini  结束

Flask----test.py

from flask import Flask

app = Flask(__name__)


@app.route('/')

def index():
return 'Hello World!'
if __name__ == '__main__':
app.run()


Supervisor

[program:sky]
command=python3 srv/sky-service/app.py ; 被监控的进程路径
priority=1 ;数字越高,优先级越高
redirect_stderr=true ; stderr重定向到stdout,默认false
stdout_logfile_maxbytes=200MB ; stdout 日志文件大小,默认50MB
stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10
#stderr_logfile=/srv/sky-service/log/err.log ; 错误日志文件
stdout_logfile=/srv/sky-service/log/out.log ; 输出日志文件
autostart=true ; 随着supervisord的启动而启动
autorestart=true ; 自动重启。。当然要选上了
startretries=10 ; 启动失败时的最多重试次数
stopsignal=KILL ; 用来杀死进程的信号
stopwaitsecs= 0 ; 发送SIGKILL前的等待时间
stopasgroup=true ; 杀死子进程
killasgroup=true ; 发送信号

supervisorctl status  查看状态

supervisorctl start sky  启动

supervisorctl stop sky  结束

supervisorctl restart sky 重启  

supervisord -c etc/supervisord.conf 启动supervisor

修改ini配置后,更新

supervisorctl update 更新配置

总结:

nginx + uwsgi 结合,其实适合于前端静态资源加载的时候或者高并发的情况适合nginx做一下转发,对于前后端分离的项目来说,直接用supervisor管理后台应用就可以了,个人理解




文章转载自ala阿拉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论