服务器部署
要部署到服务器,我们需要整合前后端。
基本介绍
我们在本地开发的时候,前端是新起了一个服务,而后端也有一个服务,这个是前后端分离
,为了简化开发。
但是当我们开发完毕,需要部署的时候,我们可以把前端页面打包
为静态资源,嵌入到后端服务中。
后端服务为我们提供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
,建议你们接入。