Skip to content

服务器部署

要部署到服务器,我们需要整合前后端。

基本介绍

我们在本地开发的时候,前端是新起了一个服务,而后端也有一个服务,这个是前后端分离,为了简化开发。

但是当我们开发完毕,需要部署的时候,我们可以把前端页面打包为静态资源,嵌入到后端服务中。

后端服务为我们提供html/js/css的访问,达到服务一体化的目的,从而简化部署工作

这样做的好处

  • 部署十分方便
  • 不需要引入额外的组件如nginxpm2去启动前端服务
  • 没有跨域问题
  • 前后端不存在跨机器访问的情况,降低了网络引起的故障率

这样做的坏处

  • 一旦后端崩溃,前端页面无法显示,对于排查问题不够方便
  • 部署依赖于后端,前端无法独立上线,需要等后端开发一起发布
  • 前端独立开发后还需提交代码到后端项目
  • 发布会更加频繁,以前可能只需要发布前端即可,现在需要全部都发

修改前端配置地址

修改pityWeb/src/consts/config.js中的URL,改为'',这样我们请求的后端地址就默认不带上host了。

只有路由如: /api。这样做的好处是我们可以轻松调整后端的地址,而前端代码不需要任何改变

打包前端代码

执行以下命令,打包我们的前端代码:

npm run build

打包完成后会提示Done

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,建议你们接入。