Deploy Flask App to EC2

Web App 的基础概念

一个 Webapp 本质上就是一台将他的 http = 80, https = 443 端口向公网世界开放的电脑. 而在这台电脑上运行着一个 http 服务器. http 服务器的实现方式有非常多种, 简直数不过来.

在 flask 中使用的是 wsgi http server.

一个极简的运行在 EC2 上的 Flask Web 服务器

  1. 需要一个 VPC, 拥有一个 Public Subnet

  2. 在 Public Subnet 上启动一个 EC2, 最好使用 amazon linux, 因为 amazon linux 预装 python

  3. 给这个 EC2 配置 Security Group, 其中必须开放用于 HTTP 的 TCP 80 端口, 以及用于 SSH 的 TCP 端口

  4. SSH 到你的虚拟机, 先安装 pip, flask:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python get-pip.py
sudo pip install flask
  1. 然后创建一个 app.py 文件, 填入以下内容:

touch app.py
vim app.py
from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'
  1. 用 flask 命令行启动服务器:

sudo flask run -h 0.0.0.0 -p 80
  1. 现在你可以从公网用浏览器访问这个网站了 http://ec2-111-111-111-111.compute-1.amazonaws.com