跳过正文
  1. 文章归档/

指北·flask-app部署

·1075 字·3 分钟·
目录

摘要
#

看了许多视频、博客甚至一些关于flask的书,都没给我一个很好的解决方案,最终的解决方案是在YouTube上的一个老哥的视频,这篇文章主要是把视频的内容按照我的理解变成文字形式.

主要解决了nginx和flask的结合问题,并针对404和502的问题提出了解决方案。

开始部署
#

准备工作
#

  • GitHub账号(或者gitee)——托管你的flask-app代码
  • 云服务器(这里采用ubuntu,供应商采用了阿里云)
  • 你的域名(可选)

flask-app代码
#

为了尽可能的保持一致,我在这里提供一个示例的demo,你也可以在我的GitHub上下载,或者点击这个链接下载。

将示例代码或者你的flask-app放在你的GitHub账号上,以我的示例为例,项目的地址为https://github.com/sepinetam/my-flask-app-demo

云服务器
#

这里我采用的是阿里云的服务器,操作系统为ubuntu。

PS:Azure学生可以有一台免费的云服务器,Amazon也提供了一年免费的服务器。

域名
#

我在阿里云购买的域名为sepinetam.com,因为我想搭建的是一个小工具,所以使用了子域名tools.sepinetam.com作为项目的域名。

开始部署
#

  1. 在云服务器上安装依赖 你需要的包括但不限于python,nginx,gunicorn
apt install nginx
  1. 拉取你的项目 你需要从你的远程仓库拉取项目到服务器上。我的希望后续会部署更多的工具,所以我的项目路径放在了/root/app/tools/my-flask-app-demo/
cd /root
mkdir app/tools
cd app/tools
# 如果你的app不需要更新也可以直接clone项目,地址换成你自己的项目地址
# git clone https://github.com/sepinetam/my-flask-app-demo.git
git pull https://github.com/sepinetam/my-flask-app-demo.git

正经教程
#

  1. 登录你的服务器

如果是使用pem登陆的话,

ssh -i /path/to/your-pem my-user@my-server

进去之后我选择了更改用户,所以我新建了用户

adduser sepine

让服务器可以通过password登录

nano /etc/ssh/sshd_config
# 把PasswordAuthentication no改成PasswordAuthentication yes
# 重启ssh服务
systemctl restart sshd.service

退出服务器,重新登录(记得把IP与域名先链接上)

ssh sepine@my-domain
  1. 克隆项目到本地

这里假设你的项目远程仓库是https://github.com/sepinetam/wCloud-WebApp.git

mkdir app/wcloud
cd app/wcloud
git clone https://github.com/sepinetam/wCloud-WebApp.git
  1. 安装虚拟环境

为了管理方便,我这里采用的虚拟环境的路径在~/env/wcloud, 即/home/sepine/env/wcloud

python3 -m venv ~/env/wcloud
source ~/env/wcloud/bin/activate

cd ~/app/wcloud
pip install -r requirements.txt

到这里先简单做个测试。

python3 app.py

在浏览器中输入http://my-domain:5000/,如果看到页面,说明部署成功。