这里是我经历了一次完整的项目的前后端分离。
在 MacBook
、win
、ubuntu
都有不同的部署方案,绝对具有指导意义。
并且,给出了三种场景。
这里先介绍一下项目。
- 前后端分离
webpack
+bootstrap
- 两个独立的前端,一个后台
- 其中一个前端依附于一个后台「
flask
」- 对应于前端
8444
后台6666
- 对应于前端
- 另外一个只是前端页面
- 对应于
1234
- 对应于
- 总共需要依附于
3
个端口
- 其中一个前端依附于一个后台「
- 走
https
链接
本地
本地用的是 MacBook
的开发方式。
在此之前,你要阅读我下面的博文。
本地使用的是
DevServer
这个来解决。
所以,本地不需要安装 nginx
或者其他东西来进行跨域,但是,这个只能本地运行,不可以部署到服务器上。
本地测试的话,非常方便。
这里给出,我的配置。
1 | devServer: { |
上面的配置,针对的是 网页 + 后台端口。
里面的请求依附于 axios
,让请求的 url
包含 /dang
的时候,这个请求就通过临时服务器,发送到 6666
端口。
ubuntu 服务器
在 ubuntu
中,我们使用的是 nginx
服务器,进行跨域。
你需要参考
我们在本地测好,将项目打包,然后发到 ubuntu
中,其中, nginx
的配置如下。
1 | http { |
这里面对外接口只有
8444
1234
其中,flask
的接口 6666
因为,nginx
做了本地的转发,所以,不需要对外开放。
项目部署上去后,nginx
开启就可以了。
我们使用的是阿里云服务器,如果你想知道关于 https
以及服务器如何走 https
的话,可以参考。
win
项目最后部署是在 win server
上。假设,该服务器绑定的域名为 aa.com
先说一下背景。
除了我们这个项目要部署在那台服务器上,还有一个项目需要部署,并且,另外一个项目已经先于我们部署了,其使用的是 「小皮面板」,另外其使用的是 apache
,虽然有 nginx
和 apache
共用的方案,但是,为了不破坏现有的环境,我将采用另外一套方案来做前后端分离。
首先先把证书要一下。其给的证书为
***.crt
***.key
首先,我们把小皮面板添加两个网站,就是指向了前端页面,选择 https 线路,固定好端口
8444
1234
参考下面的博文,知道,flask 可以通过 cors 技术来实现跨域。
并且,因为,我们不借助 nginx
转发请求,所以,flask
的端口就要实现开发,外界通过
aa.com:6666/v1/get_name
的方式来获取数据「前端通过 axios 来获取」
flask 在这里有两个坑,一个是端口不能用 6666
否则会提示 :ERR_UNSAFE_PORT
,具体原因,还有其他的端口请看
所以,在这里我们换上 5000
作为开放端口。
另外有一点,就是,假设前端走了 https
链接,你后端也要走 https
链接,不然,就会出错。
所以,flask
的代码为
1 | from flask import Flask |
在 win
中,我们使用了 3
个开放端口,每一个端口都可以被外界访问,并且,前后端,我们走的都是 https
协议。
另外,在 win server
中,想要 python
类似于 ubuntu
的 nohup
可以使用
start /min python main.py