摘要
看了许多视频、博客甚至一些关于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
作为项目的域名。
开始部署
在云服务器上安装依赖
你需要的包括但不限于python
,nginx
,gunicorn
1
apt install nginx
拉取你的项目
你需要从你的远程仓库拉取项目到服务器上。我的希望后续会部署更多的工具,所以我的项目路径放在了/root/app/tools/my-flask-app-demo/
1
2
3
4
5
6
7cd /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
正经教程
- 登录你的服务器
如果是使用pem登陆的话,
1 | ssh -i /path/to/your-pem my-user@my-server |
进去之后我选择了更改用户,所以我新建了用户
1 | adduser sepine |
让服务器可以通过password登录
1 | nano /etc/ssh/sshd_config |
退出服务器,重新登录(记得把IP与域名先链接上)
1 | ssh sepine@my-domain |
- 克隆项目到本地
这里假设你的项目远程仓库是https://github.com/sepinetam/wCloud-WebApp.git
1 | mkdir app/wcloud |
- 安装虚拟环境
为了管理方便,我这里采用的虚拟环境的路径在~/env/wcloud
, 即/home/sepine/env/wcloud
1 | python3 -m venv ~/env/wcloud |
到这里先简单做个测试。
1 | python3 app.py |
在浏览器中输入http://my-domain:5000/
,如果看到页面,说明部署成功。