Nginx+uWSGI+Supervisor在Ubuntu上部署Flask应用(2)

测试:
打开浏览器访问服务器,若可以正常访问,说明Nginx和uwsgi配置成功了,但离真正项目上线还差一段,因为uwsgi是直接在前台启动的,当我们的连接终端跟服务器断开的时候uwsgi进程也被关闭了,所以我们需要让uwsgi在后台运行。
---

STEP 4: 进程监控

原本打算用uwsgi emperor的方式运行uwsgi即让uwsgi成为守护进程(daemon),但是折腾了一天还是没解决问题,遂换supervisor。(折腾uwsgi emperor到后面发现问题是,当单独使用uwsgi的时候一切正常,但一使用uwsgi emperor就会出现os.environ.get()获取不到环境变量的问题,但环境变量明明可以通过env看到,直接在Python终端上执行os.environ.get()也可以获取到.....等有时间再回过头了折腾。)

单独一个uwsgi程序运行短时间可能没问题,但是网络状况瞬息万变,万一uwsgi进程挂了网站也就访问不了了.....为了防止出现意外情况,还需要一个监控程序来监控uwsgi的状况,这里该supervisor出场了。具体什么是supervisor可以Google之。

1. 首先安装supervisor

sudo apt-get install supervisor

2. 生成默认配置文件

echo_supervisord_config > supervisord.conf

3. 加入监控程序的配置

[program:project_name] # project_name这里写上你的项目名称,如我的为[project:linuxidc] command = uwsgi --ini /home/linuxidc/uwsgi.ini # 跟手动启动的命令一样 stopsignal=QUIT autostart=true autorestart=true stdout_logfile=/var/log/uwsgi/supervisor_linuxidc.log # 运行日志 stderr_logfile=/var/log/uwsgi/supervisor_linuxidc_err.log # 错误日志

4. 启动supervisord

supervisorctl reload

5. 检查uwsgi进程是否正常运行

ps aux|grep uwsgi

如果一切正常,此时应该可以看到uwsgi进程
尝试kill掉uwsgi进程看supervisor会不会重新启动一个新的uwsgi进程

sudo killall uwsgi

若再次通过ps aux|grep uwsgi查看发现有新的uwsgi进程在运行,那差不多可以祝你成功了, God bless you。

后记:
折腾了两天终于搞定,有时候教程看着简单,你的配置也和教程一样,但就是由于各种错误无法运行,虽然说计算机非0即1,是我们人类最忠实可靠的伙伴,但是有时候就差那么一点点,有可能是软件环境不对亦或是我们电脑的打开方式不对...总之,就是要有那么个折腾的过程,所谓吃一堑长一智,不折腾折腾估计过后就忘了怎么回事了,还是要勤动手不放弃,虽然被一个uwsgi emperor折腾得快要怀疑人生了,但我还是坚定不移地...改道supervisor了 :)
---
初次写教程,文中可能有疏漏或写得不够恰当的地方,还请各位看官多多包涵,欢迎指正和交流。如果部署的过程中有问题也欢迎留言,虽然不能保证可以解决。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/72885d240f0b72368350c632b767cb3b.html