如何部署Flask程序
本文最后更新于65 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

要将Flask部署到公网,我们可以采用一下的形式

Nginx --> uWSGI --> Flask

其中uWSGI用于执行Flask代码,这一套是一套比较经典的Flask配置,也是官方推荐的配置之一。

安装配置uWSGI

我们先来看看如何安装uWSGI,同样还是以Debian为例

如何安装uWSGI

安装依赖包

sudo apt update && sudo apt upgrade && sudo apt install build-essential python-dev

安装uWSGI

sudo apt install uwsgi

配置uWSGI

在本地新建一个app.ini文件,在其中填入以下内容

[uwsgi]
module = app:app 
# 上面一行要视你的代码而定
# 比如你是在main.py中初始化了Flask的app,变量名是flask
# 那这里就要写main:flask
# 所以其规则是 文件名:APP变量名
base = # 这里写你的源码在服务器上的哪里
chdir = # 这里写你的程序的运行目录
master = true
processes = 5


# plugins-dir = /usr/lib/uwsgi/plugins
# plugins = python3
pidfile=/dev/shm/uwsgi.pid

socket = /dev/shm/app.sock
logto = # 这里写日志文件目录,如果不需要课删除
chmod-socket = 666
vacuum = true
threads = 4
enable-threads = true

将上述文件上传到服务器上,一个你能记得住的位置。

运行uWSGI

/etc/systemd/system中新建一个文件,用以下代码打开:

sudo vim /etc/systemd/system/my-flask.service

将输入法切换到英文状态下,按i进入输入模式,粘贴(大概率不是Ctrl-C,推荐直接用鼠标)以下内容:

[Unit]
Description=My Flask uWSGI Service

[Service]

PIDFile=/dev/shm/uwsgi.pid
ExecStart=/usr/bin/uwsgi --ini # 上述配置文件的位置 
KillSignal=SIGQUIT
Restart=always
Type=notify
NotifyAccess=all
StandardError=syslog

[Install]
WantedBy=multi-user.target

接下来的内容比较重要,按顺序执行,确保输入法在英文状态下:

按ESC(退出输入模式),按冒号,按x,按回车

这样我们就保存并退出了这个文件

执行以下命令以启动uWSGI,并设置开机启动

sudo systemctl enable my-flask --now

不出意外的话,uWSGI已经成功启动了

配置Nginx

我们已经实现了 uWSGI --> Flask 的部分,接下来是Nginx --> uWSGI

打开Nginx配置目录中的一个配置文件:

sudo vim /etc/nginx/site-enabled/my-flask.conf

填入以下内容

server
{
    listen 80 default_server;
    index index.html index.htm default.php default.htm default.html;
    
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary off;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/dev/shm/app.sock;
    }
}

退出该文件后,执行以下命令重启Nginx

sudo systemctl restart nginx

然后理论上,就能在80端口看到我们的服务啦!

作者:abanana

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议

转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇