服务器部署
要部署到服务器,我们需要整合前后端。
基本介绍
我们在本地开发的时候,前端是新起了一个服务,而后端也有一个服务,这个是前后端分离,为了简化开发。
但是当我们开发完毕,需要部署的时候,我们可以把前端页面打包为静态资源,嵌入到后端服务中。
后端服务为我们提供html/js/css的访问,达到服务一体化的目的,从而简化部署工作。
这样做的好处
- 部署十分方便
- 不需要引入额外的组件如
nginx,pm2去启动前端服务 - 没有跨域问题
- 前后端不存在跨机器访问的情况,降低了网络引起的故障率
这样做的坏处
- 一旦后端崩溃,前端页面无法显示,对于
排查问题不够方便 - 部署依赖于后端,前端无法独立上线,需要等后端开发一起发布
- 前端独立开发后还需提交代码到后端项目
- 发布会更加频繁,以前可能只需要发布前端即可,现在需要全部都发
修改前端配置地址
修改pityWeb/src/consts/config.js中的URL,改为'',这样我们请求的后端地址就默认不带上host了。
只有路由如: /api。这样做的好处是我们可以轻松调整后端的地址,而前端代码不需要任何改变。
打包前端代码
执行以下命令,打包我们的前端代码:
npm run build

pityWeb目录下会出现dist目录,打包好以后我们去替换后端项目对应的静态文件:
pityWeb/dist/* -> pity/statics/
把dist的所有文件都放到pity/statics目录下。
注意
注意这里是statics而不是static。
现在,我们的服务就是一体化了,前后端代码形成了一个整体。
简单部署
如果你只想简单在服务器运行这个应用的话,你可以尝试:
nohup python main.py &
这样你就能正常运行应用了,但是通常我不推荐你这么做。
警告
如果真的要运用到生产级别,那么如此部署是非常不靠谱的。因为你没法预料你的代码的健硕性,也无法保证没有意外发生,比如认为关闭了你的服务。所以你得慎重考虑。
部署建议
合理的部署方式需要有宕机自动拉起,部署方便等特点。推荐以下几种方式:
- Supervisor
supervisor可以自动拉起你的应用,也可以根据命令停止/重启你的应用,具体的参考可以自行查阅资料。
- univorn
这个是FastApi推荐的部署方式,详情可以参考: https://fastapi.tiangolo.com/deployment/manually/
- Docker
参考文档: https://fastapi.tiangolo.com/deployment/docker/
这涉及到dockerfile文件的编写,也需要你对docker有一定的了解。如果你们公司有对应的发布系统或者易用的pipeline,建议你们接入。