网站建设 服务器 预算报价清单,漳州做网站的公司,横向网站模板,做网站用框架好吗这已经是第N次来部署flask应用了, 但是每次都花了不少时间在配置上面, 这里一次性记录下, 备个忘~写在前面其实使用uwsgi来部署flask应用在官网上已经有较为详细的 文档 了, 推荐先读一下.先解决一些问题:为何使用 uwsgi 来部署应用? 方便管理; 较为常见的部署方式; 可配置性较…这已经是第N次来部署flask应用了, 但是每次都花了不少时间在配置上面, 这里一次性记录下, 备个忘~写在前面其实使用uwsgi来部署flask应用在官网上已经有较为详细的 文档 了, 推荐先读一下.先解决一些问题:为何使用 uwsgi 来部署应用? 方便管理; 较为常见的部署方式; 可配置性较强为何使用 supervisor 来管理? 方便管理下面介绍尝试用它俩部署个最简单的flask应用.准备首先请使用pip安装好flask, uwsgi, supervisor. 我们的小应用是这样子的:test.pyfrom flask import Flaskapp Flask(__name__)app.route(/)def hello():return Hello World!if __name__ __main__:app.run()配置uwsgiuwsgi我们采用 master 多进程 non-daemon 方式来启动我们的应用, 对应的配置文件是像这样子的:uwsgi.ini[uwsgi]http 0.0.0.0:8080## 指定应用目录chdir /path/of/test.py## 配置下访问日志格式log-format %(addr) - %(user) [%(ltime)] %(method) %(uri) %(proto) %(status) %(size) %(msecs)need-app 1master 1processes 2umask 022module test:app这里使用了 http , 而非 http-socket , 推荐可以阅读下uwsgi的 quickstart编辑好配置文件后, 使用 uwsgi --ini uwsgi.ini 来看看我们应用是否ok. uwsgi的参数特别多, 推荐使用前阅读一下官方文档.配置supervisor使用pip安装的supervisor因为没有默认的配置文件, run起来稍微有点麻烦, 这里提供一个最最简单的可用的配置(用对应发行版的包更好):supervisord.conf[unix_http_server]file /home/of/supervisor/etc/supervisord/supervisor.sock[supervisord]logfile /home/of/supervisor/etc/supervisord/log/supervisord.logloglevel infopidfile /home/of/supervisor/etc/supervisord/supervisord.pid[supervisorctl]serverurl unix:///home/of/supervisor/etc/supervisord/supervisor.sock[rpcinterface:supervisor]supervisor.rpcinterface_factory supervisor.rpcinterface:make_main_rpcinterface[include]files /home/of/supervisor/etc/supervisord/conf/*.conf我们把所有supervisor的信息都存放到 /home/of/supervisor 里面, 然后我们做个软链放到 /etc/supervisord.conf (默认配置文件), 避免supervisorctl启动时指定配置文件.然后启动下supervisord, 顺便看下supervisord.log日志;)接下来我们要做的就是把各个应用的supervisor配置放到 etc/supervisord/conf/ 下面. 简单配置下test对应的supervisor配置:test.supervisor.conf[program:test]command uwsgi --ini /path/of/test.uwsgi.confautorestart trueredirect_stderr truestdout_logfile /path/of/test.logstopsignal INT请注意 stopsignal INT 这个配置, 因为supervisor使用 SIGTERM 来停止应用, 而uwsgi则是接手 SIGINT 来停止的, 所以我们需要显示修正下. 更多信息请参考 这里改完之后需要使用 supervisorctl reload 来让supervisord重新加载配置文件. 可以通过 supervisorctl status/stop/restart test 分别来 查看 , 停止 , 重启 我们的test应用.最后到这里整个应用就部署完毕了, 管理起来也蛮方便的. 如果有更细化的需求基本可以通过配置uwsgi和supervisor的配置来实现.