神坑:
[uwsgi]
# uwsgi 启动时所使用的地址与端口
#如果外部直接通过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 Flaskapp = 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管理后台应用就可以了,个人理解




