①安装python3(可以更改系统默认的python为python3)
②创建python虚拟环境(当然也可以直接用系统的python环境)
③部署项目到服务器
④以development WSGI server方式直接运行项目
⑤结合Nginx服务器用uWSGI部署 Flask
1.在CentOS7上安装python3
详见:
python2与python3共存文档 。
2.不使用python虚拟环境
若想使用python虚拟环境, 请看之后的内容.
①得到开发环境需要的依赖
1 | 在本地的 Flask 开发环境中 env 下执行: |
②pip3安装依赖
1 | 将 requirements.txt 上传到服务器, 执行: |
③上传项目并运行(确保端口开放)
将 Flask 项目上传到 服务器, 测试运行. 这里直接在 /opt/project/hello.py 简单测试.
第一步: 新建 hello.py
文件, 注意: app.run(host=‘0.0.0.0’), 否则外网无法访问.
1 | # hello.py |
第二步: 运行 Flask 应用, hello.py
1 | python3 hello.py |
第三步: 浏览器访问 http://你的服务器IP:端口号
测试结果.
3.创建python虚拟环境
虚拟环境:
建议在开发环境和生产环境下都使用虚拟环境来管理项目的依赖。
为什么要使用虚拟环境?随着你的 Python 项目越来越多,你会发现不同的项目会需要 不同的版本的 Python 库。同一个 Python 库的不同版本可能不兼容。
①安装python虚拟环境
1 | pip3 install virtualenv |
②配置虚拟环境
一般用 pip 安装完后都是OK的, 可以直接使用. 若不能使用, 再来配置 python 虚拟环境.
- 编辑文件
vim ~/.bashrc
, 在最后添加:
1 | export WORKON_HOME=$HOME/.virtualenvs |
- 执行
source ~/.bashrc
生效. - 利用 find 找出 virtualenv 的路径, 一般会在 /usr/local/python3.x.x/bin/ 中.
1 | sudo find / -name "virtualenv" |
- 建立 virtualenv 的软连接
1 | ln -s /usr/local/python3.7.1/bin/virtualenv /usr/bin/virtualenv |
③创建 python 虚拟环境
1 | --python 指定python版本, wpwl-env为虚拟环境的名字. |
4.在虚拟环境中运行Flask
①虚拟环境简单命令
1 | 进入虚拟环境 |
②将项目打包放到服务器
这里直接在 /opt/project/hello.py 简单测试.
第一步: 新建 hello.py
文件, 注意: app.run(host=‘0.0.0.0’), 否则外网无法访问.
1 | # hello.py |
第二步: 进入虚拟环境运行 Flask 应用, hello.py
1 | workon wpwl-env |
第三步: 浏览器访问 http://你的服务器IP:端口号
测试结果.
5.结合Nginx服务器用uWSGI部署 Flask
将 uWSGI 和 Nginx Web 服务器结合使用,实现更高的并发性能。
①python安装uwsgi
1 | pip3 install uwsgi |
②uwsgi启动Flask应用
第一种启动方式: 命令行参数启动.
1 | uwsgi --http 0.0.0.0:5000 --wsgi-file /opt/project/hello.py --callable app -H /root/.virtualenvs/wpwl-env |
之后, 可通过浏览器访问 http://你的服务器IP:端口号
测试结果.
第二种启动方式: .ini 配置文件启动.
先在项目根目录下创建 .ini 配置文件. 这里的是: /opt/project/hello.ini
1 | [uwsgi] |
再通过命令行运行 Flask 应用.
1 | uwsgi hello.ini |
- 之后, 可通过浏览器访问
http://你的服务器IP:端口号
测试结果.
③通过Nginx代理到uwsgi
之前用 uwsgi 启动的 Flask 应用, 并不是我们想要的, 我们想通过 直接访问 WEB 应用(80端口) 来访问 Flask 应用.
因此, 我们需要用 Nginx 来做代理, 将请求代理到 Flask 应用. 同时, 不能再为 uwsgi 配置 http 协议, 而改用 socket:
1 | [uwsgi] |
Nginx配置:
注意, 若是有其他代理信息, 要注意多个代理之间的顺序.
1 | # 当然在 listen 80的 server 块中 |
- 之后, 可通过浏览器访问
http://你的服务器IP/
测试结果.
注意: 若是不想 Nginx 直接代理网站根路径 ‘/’ 到 Flask应用, 而是想将 '/flask’代理到 Flask 应用, 则需修改两部分:
①修改 Nginx 配置: location /flask {
②修改应用 py 文件, 每个路由添加上 ‘/flask’前缀, 如 hello.py更改为: @app.route(’/flask’)
- 之后, 可通过浏览器访问
http://你的服务器IP/flask
测试结果.