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

0x00 head

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

0x01 安装pip和easy_install

安装easy_install

wget -q http://peak.telecommunity.com/dist/ez_setup.py
python 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.gz
tar 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-fastestmirror
yum 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=QUIT
autostart=true
autorestart=true
stdout_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

你可能感兴趣的:(python)