centos+flask+uwsgi+nginx+supervisor部署小结

来源:互联网 发布:3d效果图软件 代码 编辑:程序博客网 时间:2024/05/17 06:58

0x00 head

以前喜欢用ubuntu,但实际部署项目实验室还是要求用centos,只好再搭一遍,中途遇到了不少的坑,做个笔记以备之后查询,不想再去翻那一堆书签了,乱七八糟的,还是自己总结的东西看着舒服。

0x01 安装pip和easy_install

安装easy_install

wget -q http://peak.telecommunity.com/dist/ez_setup.pypython ez_setup.py

安装pip

先安装依赖:

yum groupinstall "Development tools"yum install zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gztar zvxf 1.5.5.tar.gz   cd pip-1.5.5/python setup.py install

0x02 安装uwsgi

pip install uwsgi

在项目的根目录下创建配置文件:

vim config.ini

填写以下内容:

[uwsgi]socket = 127.0.0.1:8001     //启动程序时所使用的地址和端口chdir = /home/www/          //你的项目目录wsgi-file = manage.py       //flask程序的启动文件callable = app              //程序内启用的application变量名processes = 2               //处理器个数threads = 4                 //线程个数stats = 127.0.0.1:9191      //获取uwsgi统计信息的服务地址

关于wsgi在web服务中的作用,请看这里:python wsgi 简介

启动服务:

uwsgi config.ini

0x03 安装nginx

配置源并安装:

yum install yum-fastestmirroryum install nginx

查看nginx应用的配置文件:

nginx -t

我们需要改动配置文件的地方如下(注意是需要改动的地方,其余的地方按你的需要去改):

server {        listen       80;        server_name  www.test.com;  # nginx在只有一个server的时候会忽略这个选项,所以随便填吧        access_log  /logs/python.flask.access.log;  # 日志位置        location / {            include      uwsgi_params;            uwsgi_pass   127.0.0.1:8001;            uwsgi_param UWSGI_PYHOME /usr/bin/python; # 指向虚拟环境目录(我没用虚拟环境,写的直接是python程序的位置)            uwsgi_param UWSGI_CHDIR  /usr/apps/python/your_pro; # 指向网站根目录            uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序        }

其余的按需修改吧。

在开启uwsgi后,继续开启nginx,基础的配置就OK了。

0x04 安装Supervisor

经过以上的配置,其实你的网站已经可以正常访问了,速度嗖嗖的。但有很多时候会有意外情况,uwsgi 挂了怎么办?这个时候就需要一个进程守护的程序来帮助你重新启动它。

Supervisor是一个进程管理工具,通俗点就是帮你监控某个进程,如果发现它挂了,立马把它续起来。

安装:

pip install supervisor

生成配置文件:

cd /usr/bin/./echo_supervisord_config > /etc/supervisord.conf

接下来修改配置文件,在配置文件中;是注释符,去掉前面的分号:

[program:project_name]          # project_name为项目名称command = uwsgi --ini /home/flask/config.ini  # 把启动uwsgi的命令写在这,将config.ini的路径替换为绝对路径stopsignal=QUITautostart=trueautorestart=truestdout_logfile=/var/log/uwsgi/supervisor_flask.log      # 运行日志stderr_logfile=/var/log/uwsgi/supervisor_flask_err.log  # 错误日志

启动:

supervisord -c /etc/supervisord.conf

之后先查看 uwsgi 的进程:

ps aux | grep uwsgi

这里写图片描述

kill掉它,之后再ps一下看进程起来没有:

killall uwsgi

完。

最后放上一张美美的截图,界面用的妹子UI:

这里写图片描述

参考文档:
http://www.tuicool.com/articles/Ejm2u2
http://www.cnblogs.com/dspace/archive/2016/07/06/5647587.html
https://segmentfault.com/a/1190000004294634

1 0
原创粉丝点击