企业里的前后端是怎么部署的呢?

2023-01-12 10:24:31 +08:00
 t298

各位大佬,我现在有两个前后端分离的 java 项目,如果我想模拟企业的实际部署,我是把他们各自打包扔到服务器启动后来访问,还是通过 nginx 来访问呢? A 项目是一个关于地图的项目,打包后会有大量的 js 和 geojson 文件,可能会有十几 M ,项目 B 就是普通的门户网站,两个项目访问量都不是很大,服务器是阿里云的一核 2G ,1M 带宽,从没有部署过项目,还是希望大佬们分享一下经验,感激不尽。

6436 次点击
所在节点    Java
40 条回复
xuanbg
2023-01-12 10:26:45 +08:00
1c2g 的服务器,我就不建议容器化部署了。
anviod
2023-01-12 10:29:23 +08:00
Java 内存大户 2G 部署两个项目勉强够用 单机写 docker-compose 编排即可
t298
2023-01-12 10:31:47 +08:00
@xuanbg
@anviod 目前只是买来练手的嘛,如果真的需要,可以加配置,需要加到什么程度呢?
vdrapb
2023-01-12 10:45:02 +08:00
前端打包丢到 nginx ,后端正常启动服务,2G 应该勉强够用
wanguorui123
2023-01-12 10:47:00 +08:00
npm 打包到 java 到 static 目录映射出去
RedBeanIce
2023-01-12 10:56:09 +08:00
1 ,简单的,直接 jar 包部署,古老方案,但是现在依旧有很多公司是这么做的,一般情况学这个足够
这里面有前置知识,java -jar 启动服务的 jvm 知识,npm 启动前端项目
2 ,复杂的,将两个打包到 docker 直接访问,这里面前置知识是 docker 于 Linux ,(理论上刚入门的话用不到 docker-compose )

对于楼主来说,我觉得方案 1 ,应该是够用的
opengps
2023-01-12 10:58:24 +08:00
首先来说,前后端必然两个域名(往往是同顶级域名的两个二级域名)
那就必然部署位为两个 web 项目,其中前端完全是独立资源,这时候可以直接用对象存储发布,因为可以用到更高的带宽,服务器带宽低的场景,速度优化效果很明显
dwlovelife
2023-01-12 11:06:26 +08:00
@opengps 补充一下楼上的,正常情况是楼上说的,但是如果有 cdn ,cdn 的静态资源也要单独部署,这时候就是三个独立资源部署了
mmmfj
2023-01-12 11:35:13 +08:00
云服务,docker ,k8s 那套
duan602728596
2023-01-12 11:46:05 +08:00
静态资源上 CDN ,部署用的 docker ,k8s 那套,前端服务用 node
cryboy007
2023-01-12 12:02:38 +08:00
同一时间打成 docker 镜像 k8s 容器化部署
SACKJJKLL
2023-01-12 12:33:28 +08:00
docker
yrzs
2023-01-12 14:17:14 +08:00
一核 2G docker 都装不上吧
MaxFang
2023-01-12 14:34:42 +08:00
拿门户网站来讲,nginx 先配置一个 server1 来访问前端项目,前端对于 api 的访问转发到 server2 上。
nginx 配置 server2 来接收 api 请求,并转发到你 java 后端项目服务上。

至于项目的具体部署,考虑到模拟企业实际部署情况,我推荐两种。
1.都不用 docker ,直接实体机安装环境启动服务;
2.要使用 docker 的话,标准的做法是先把项目打包到镜像里面,推送镜像,然后服务器上拉取镜像启动。
在 2 的基础上可以考虑上 k8s ,一些构建工具等。
kiddingU
2023-01-12 14:35:09 +08:00
就这点资源还上 k8s ,别扯淡了,传统方式运维就行了
ytmsdy
2023-01-12 14:42:26 +08:00
用 Github 上的 Action 功能,只要有代码合并到 main 分支,就自动触发 action ,然后自动部署。
这样编译的压力都在 Github 上了
luomao
2023-01-12 16:01:53 +08:00
觉得楼上有些回答挺扯得,op 说了 1c2g ,这还能上 k8s 么。模拟企业的实际部署,首先需要确定要模拟那种企业,模拟腾讯阿里这种就别考虑了,1c2g 属实是有点逗。
1 、仅按目前的描述来看,nginx 作为对外的入口,前端页面和后端服务都走 nginx 转发即可,nginx 在配置上 ssl 证书
2 、稍微改造版,1M 带宽如果要跑 A 项目恐怕太难了,可以把前端扔到 OSS 上,再加点 CDN ,接口 1M 带宽服务几十并发还是可以
licoycn
2023-01-12 16:09:34 +08:00
gitea+drone 还是可以实现自动化部署的,对于 1c2g 的环境
vishun
2023-01-12 16:36:12 +08:00
@opengps #7 并不需要两个域名,只前端一个域名就行,部署 nginx ,后端的 api 请求都通过 nginx 反向代理到后端接口上去。这是前后端分离最常用的部署方法。
helloriver952
2023-01-12 16:43:51 +08:00
可以试试 coding 阿里的 devops 都有免费额度流水线可以使用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908342

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX