1、整体架构
前后端分离架构,部署在同一台物理服务器上,使用前端路由,前后端通过json数据通信,前端通过axios访问后端api,需要解决跨域访问问题。
2、前端部署
我使用的是@vue/cli 4.x,直接npm run build后,将dist文件夹中的内容放在nginx服务器的html文件夹中,配置nginx服务器404页面指向前端主页index.html。 Vue CLI:官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目。
首先全局安装vue Cli:npm install -g(全局安装),npm下载的国外的依赖,可以使用淘宝的cnpm。
下载淘宝的cnpm
3、flask部署
flask生产环境部署需要uwsgi程序,pip install uwsgi可安装此程序。配置好uwsgi.ini文件,使用ini文件启动uwsgi。
首先解决跨域问题,将前端访问后端的api都加上/api前缀,在nginx中配置rewrite规则,将/api及之前的部分整体替换成要访问的ip和端口地址。
然后配置nginx服务器第二个端口(假设前端文件占用的是第一个端口),即上述/api改写后指向的端口,将此端口指向uwsgi代理的地址,即完成配置
首先安装Flask和Flask-CORS扩展。
Flask—CORS: 如果使用不同的协议,或者请求来自于其他的 IP 地址或域名或端口,就需要用到 Cross Origin Resource Sharing (CORS),这正是 Flask-CORS 扩展帮我们做到的。实际环境中只配置来自前端应用所在的域的请求。
(venv) Mac:flask-vue-crud hubo$ pip install Flask Flask-Cors 1 然后在根目录下创建app.py文件:
from flask import Flask, jsonify from flask_cors import CORS app = Flask(name) CORS(app) @app.route('/', methods=['GET']) def ping_pong(): return jsonify('Hello World!') #(jsonify返回一个json格式的数据) if name == 'main': app.run()
然后执行:
(venv) Mac:flask-vue-crud hubo$ python app.py 1 打开浏览器,输入http://localhost:5000/ping,会看到输出
Hello World! 1 目前Flask环境已经配置好,并且已经创建了一个Flask小Demo。