ubuntu部署flask网站Nginx+Gunicorn+Supervisor

安装相关文件

python环境(看情况使用)
pip install virtualenv  # 如果已安装则跳过
cd /var/virtualenvs
python -m venv flask  # 新建flask虚拟环境
source flask/bin/activate  # 激活flask虚拟环境(退出虚拟环境:deactivate)

cd /var/www/flask
pip install -r requirements.txt  # 安装依赖库
# pip install -r requirements.txt --no-dependencies 包版本冲突时可忽略版本要求,解决冲突
# 生成依赖库文件用 pip freeze > requirements.txt
进入root模式安装Nginx/Gunicorn/Supervisor
su

输入密码

 apt-get install nginx
 pip install gunicorn
 apt-get install supervisor

写一段测试程序

cd /var/www/mysite
vi myapp.py
from flask import Flask

app = Flask(__name__)

.route('/') 
def index():
    return '<h1>Hello World!</h1>'

if __name__ == '__main__':
    app.run()
:wq

测试gunicorn运行

端口未开放的话需要先开放端口(在防火墙中设置,略),这里是8000端口。

gunicorn -w 4 -b 0.0.0.0:8000 myapp:app

在网站上测试,结果如下:
在这里插入图片描述
输入不加端口的网址,结果为502
在这里插入图片描述

配置ngnix

cd /etc/nginx/sites-available/
vi mysite
server {
    listen      80;
    server_name mysite.com www.mysite.com; # 这是HOST机器的外部域名,用地址也行
   root       /var/www/mysite/;
   # access_log /srv/NovBlog/log/access_log;
   # error_log  /srv/NovBlog/log/error_log;
    location / {
        proxy_pass       http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
:wq

添加引用链接

cd /etc/nginx/sites-enabled
ln -s /etc/nginx/sites-available/mysite ./mysite

再回去运行Gunicorn

cd /var/www/mysite
gunicorn -w 4 -b 0.0.0.0:8000 myapp:app

再打开网址,不加端口也可以正常加载。

配置Supervisor

cd /etc/supervisor/conf.d
vi mysite.conf
# 进程的名字,取一个以后自己一眼知道是什么的名字。(这行字不能删,第一行需要一行注释,删了就有问题)
[program:mysite]
# 定义Gunicorn启动命令
command=gunicorn -w 4 -b 0.0.0.0:8000 myapp:app
# 网站目录
directory=/var/www/mysite
# 进程所属用户
user=root
# 自动重启设置。
autostart=true
autorestart=true
# 日志存放位置(可能造成print中文UnicodeEncodeError)
#stdout_logfile=/var/www/mysite/logs/gunicorn_supervisor.log
# 设置环境变量。这里这行的意思是:设置环境变量MODE的值为UAT。请根据自己的需要配置,如没有需要这行可以删除。
#environment = MODE="UAT"

[supervisord]
:wq

进入supervisorctl控制台

supervisorctl
reread
update
start mysite

之后就会自动运行Gunicorn了。

控制台相关指令如下:

supervisorctl status: 查看当前运行的进程列表
supervisorctl stop xxx: 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值。
supervisorctl start xxx: 启动某个进程
supervisorctl restart xxx: 重启某个进程
supervisorctl stop groupworker: 重启所有属于名为groupworker这个分组的进程(start,restart同理)
supervisorctl stop all,停止全部进程,注:start、restart、stop都不会载入最新的配置文件。
supervisorctl reload,载入最新的配置文件,停止原有进程并按新的配置启动、管理所有进程。
supervisorctl update,根据最新的配置文件,启动新配置或有改动的进程,配置没有改动的进程不会受影响而重启。
注意:显示用stop停止掉的进程,用reload或者update都不会自动重启。

参考文献

Ubuntu配置环境3:Nginx+Gunicorn+Supervisor:https://www.jianshu.com/p/cdddc88f90cf
Linux下部署Flask项目——Ubuntu+Flask+Gunicorn+Supervisor+Nginx:https://zhuanlan.zhihu.com/p/27508488
centos下通过gunicorn+nginx+supervisor部署Flask项目:https://zhuanlan.zhihu.com/p/21262280

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bit_lin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值