Nginx+uwsgi+supervisor在Ubuntu上部署flask应用

9 篇文章 0 订阅
6 篇文章 0 订阅

原文地址:Nginx+uwsgi+supervisor在Ubuntu上部署flask应用

这个部署架构中Nginx主要作为前置服务器,负责分发处理来自客户端的请求,uwsgi作为后端Flask应用的容器,supervisor作为监控程序,即看门狗。

环境配置:

sudo apt-get install uwsgi-plugin-python # 这个不装的话当发起请求时uwsgi会报错
若是Python3的话改为:
sudo apt-get install uwsgi-plugin-python3

STEP 1: Nginx安装配置

安装Nginx
1. 输入Nginx安装命令
sudo apt-get install nginx

  1. 启动Nginx服务器:
    sudo service nginx start
    启动Nginx服务器并用浏览器访问测试一下Nginx是否安装成功,若成功,进入下一步。

  2. 配置Nginx
    进入/etc/nginx/sites-enabled/文件夹 注意不是sites-available
    直接配置/etc/nginx/nginx.conf也可以,不过要根据其语法来配置,其实最后nginx.conf还是会调用/etc/nginx/sites-enabled/default的配置。
    先将默认配置文件default备份(养成修改配置前先备份的习惯):
    mv default default.bak
    编辑配置文件:
    vim default
    写入配置内容:

    server {
    listen 80; # 服务器监听端口 server_name 110.110.110.110; # 这里写你的域名或者公网IP charset utf-8; # 编码 client_max_body_size 75M; # 之前写的关于GET和POST的区别,这里应该是原因之一吧
    location / {
    include uwsgi_params; # 导入uwsgi配置 uwsgi_pass 127.0.0.1:8000; # 转发端口,需要和uwsgi配置当中的监听端口一致
    uwsgi_param UWSGI_CHDIR /home/chihu; # 项目根目录 uwsgi_param UWSGI_SCRIPT manage:app; # 项目的主程序 }
    }

    输入:wq保存配置文件。配置好了之后别急着启动Nginx,记得先通过nginx -t测试一下配置文件是否正确,若检测配置文件失败,再好好检查下配置文件有没有疏漏。

此时访问Nginx服务器应该会得到502 Bad Gateway的提示,因为请求被Nginx转发了,但是并没有转发服务器来处理请求(还没有配置好uwsgi)。

STEP 2: uwsgi安装配置

安装uwsgi
sudo apt-get install uwsgi
编写uwsgi配置文件
在项目文件根目录新建配置文件uwsgi.ini(uwsgi支持多种配置文件格式, xml, ini, json等)

vim uwsgi.ini
写入配置内容如下:

[uwsgi] socket = 127.0.0.1:8000 # uwsgi的监听端口 plugins = python # 这行一定要加上,不然请求时会出现– unavailable modifier requested: 0 –错误提示 chidir = /home/chihu # 项目根目录 wsgi-file = manage.py # flask程序的启动文件 callable = app # 程序变量名
输入:wq保存配置文件,可以通过uwsgi uwsgi.ini来启动uwsgi。

STEP 3: 启动及测试

Nginx和uwsgi都配置好了之后下一步就是启动Nginx和uwsgi了。

启动Nginx

sudo service nginx restart
启动uwsgi
进入项目根目录,即uwsgi.ini所在的目录,执行以下命令。

uwsgi wsgi.ini
若一切正常的话就可以在终端上看到uwsgi的启动信息了。

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

STEP 4: 进程监控

单独一个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:chihu]
command = uwsgi –ini /home/chihu/uwsgi.ini # 跟手动启动的命令一样
stopsignal=QUIT
autostart=true
autorestart=true
stdout_logfile=/var/log/uwsgi/supervisor_chihu.log # 运行日志stderr_logfile=/var/log/uwsgi/supervisor_chihu_err.log # 错误日志

  1. 启动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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值