前后端分离项目的部署记录
前段时间使用 Vue Amin Template + Python Flask 提供 API 做了一个前后端分离的小项目。
这里简单记录一下部署过程中遇到的问题。
开发时是在 macOS 上开发的,部署是在 Ubuntu 12.04 上部署的。
各种配置
Nginx 配置
Nginx 用来做反向代理,转发前端发给后端的接口请求。安装部署都比较简单,可能主要因为项目比较简单,不需要什么特殊配置。
常用命令
1 | sudo nginx -s reload 部署一下 |
问题记录
本地 Mac 配置完以后没有问题,在服务器上配置的时候,有个问题,报错忘了记录了,似乎是默认的 80 端口访问出错。Google 了一下,Nginx 的 配置文件 /etc/nginx/sites-enabled/default 需要修改一下,改了一下端口,就 OK 了。
https://stackoverflow.com/questions/10829402/how-to-start-nginx-via-different-portother-than-80
前端打包部署
前端这块有几个问题, 接下来一段时间内应该不会再接触,没有去深究,简单记录一下问题。
问题记录
- 打包使用 npm run build:prod
- 打包出来的 dist 文件夹放到一个目录,根据自己的实际情况来,在 Nginx 的配置文件中设置对应的目录就可以了
- modules 中的 user.js 有 login action,api 中的 user.js 有 auth/login, 本地调试没有问题。部署以后,这个接口有时候会发不出去。没有去深究原因,确定要研究 VUE 了,再来看这个问题
- 跨域问题,直接使用 flask_cors 解决。似乎是加了一个响应头来解决的。修改 Nginx 的配置似乎也可以解决跨域问题, 回头再研究一下,再来更新
后端打包部署
因为只需要后端提供 API,这次开发直接使用 cookiecutter-flask-restful ,使用方便,快速生成项目,然后就可以开发了。
问题记录
1 | # config.py 文件中增加以下两行代码 |
pip 安装包时会提示下面这个错误
1
2
3pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")'搜索试了几种方法,最终使用这篇文章里的方法解决 ssl issue,稍有不同的是,稍有不同的是 文章中修改的是 Modules/Setup.dist, Ubuntu 12.04 中修改的是 Modules/Setup (记不清了,懒得再看了, 回头看了再修改…)
其他
- 通过跳板机上传文件的命令
1 | scp -P 12345 -oProxyCommand="ssh -W %h:%p 跳板机user@host -p 12345" /Users/Downloads/abc.txt target-machine-user@host:/home/abc.txt |
收获
17 年也写过这种类似的小型项目,但是当时只是运行在自己的开发机上,没有部署经验。
这次开发之后,也进行了部署,算是积累了一些服务部署方面的经验。
后面看情况再完善下该文章,因为目前只是部署在测试服务器上,尚未部署在生产服务器上。