之前部署 Java 环境的时候 我都是百度搜索按照网上步骤来操作的,先安装 Java ,安装 nginx ,如果需要的话再安装 Redis 和 MySQL ,都是通过 yum 命令。
之前帮朋友搞过一个 PHP 项目,通过宝塔部署的环境,感觉还挺方便,宝塔里面看着也有部署 Java 环境的操作,但是因为用 yum 安装各个软件 感觉也不麻烦,自己部署的时候还是通过 yum 来操作的。
前几天部署一个项目,一起做项目的后台部署的,今天有点问题,我上去想看 nginx 的日志和配置文件,一开始没找到,就问他怎么部署的,他说直接用的宝塔。
所以就想问下各位,在拿到一个新的服务器的时候,需要部署 Java 环境,可能需要把 mysql 和 redis 也安装在服务器上,你们都是用什么办法操作的?

docker compose

我喜欢用宝塔部署 java 项目, 非常方便, 看日志和管理都方便。 不过很多人看不起用服务器面版的, 就喜欢敲命令行的逼格。 我不喜欢浪费时间和记太多东西,越简单越好。

docker compose + 1
不过我是 dotnet ,哈哈

一般都是结合 CICD 和 docker 或者 k8s

我现在碰到一个问题,某一个接口偶发性的被挂起,然后到超时时间就提示接口超时了。我这边一直复现不了,客户那边基本上每天复现,就很尴尬;不知道你这边有没有碰到过类似的问题,或者给点解决思路

最开始的时候怀疑是客户那边的网络问题,但是他们宽带办理的企业网,按理说是正常的,而且其他所有的接口都是正常的,就这一个接口出现这样的情况,就这个接口出现问题的时候,其他接口也都是正常的,接口返回时间都在 50ms 左右。

最奇葩的一点是,我们测试环境部署的时候,给客户试用了一两个月,从来没出现这个问题,但是正式环境部署之后 立马出现这个问题了,目前两个服务器唯一的区别就是测试服务器是我手动安装的配置,正式服务器是同事使用宝塔安装的,我这边找日志找不到,他那边也找不到问题所在,客户每天必出现这个问题,然后就卡住了。

我不反对用任何提升效率的工具,但是用了得懂,不能纯粹为了方便而用,出了问题都定位不到问题在哪

#5 这个只能去打日志, 在程序内去找 bug 呀, 和部署方式没啥关系吧。 而且是自己请求的 java 程序的 http 接口, 还是 nginx 反向代理的, 先确定卡在哪一层了。

docker compose +1 ,如果是多机器要搭 docker 集群,各位是怎么弄得,我是用的 docker swarm

docker compose + 1

我尽量用(以及要求乙方的团队来我这里做项目实施时用)发行版打的 deb/rpm 包,或者开源软件的上游“原厂”打的 deb/rpm 包。因为这样的包在文件布局上符合 FSH ,这样我可以凭着经验找到自己需要的文件未知,不论我没用过的什么新软件,都不会给我制造 suprise ,增加心智成本。

如果你见过在同一个项目同一台服务器上 /usr/local/software_name 、 /opt/vendor_name/software_name 、 /home/vendor_name/software_name 、 /srv/project_name/software_name 共存,并且 software_name 有的带版本号有的不带,而同一个 software 的 bin 、config 、logs 都在这个形式不可控的前缀路径下,而且更特么要死的是有的软件会好几个版本都装着,不话点心思根本不知道实际跑的是哪个,软件的启停要登录进去手工开,甚至 nohup 挂后台……然后交付的文档里并没有更新到跟实际情况一致时,你就会像我一样认为,FHS 大法好,FHS 大法妙,FHS 大法呱呱叫。

#9 文件未知 => 文件位置

另外,当然,docker 可以在一定程度上掩盖这些混乱的问题,当然,也只是掩盖

docker 真是省心省力

遇到问题,debug 就很头疼

从手动到 docker 到 k8s 可视化部署,devops 的魅力

k8s

docker ,不过我们不打包到镜像,只作为运行容器,外挂 jar 包来执行。

java 项目我们基本都是打包镜像丢 docker 或者 k8s 跑

个人就随便用呗,我开发环境本机用的是是 PhpStudy 的 MySQL+Nginx ,虚拟机用的是宝塔面板

服务器上用的是 Docker Compose 部署 MySQL Redis Minio 等服务,Java 还是 jar 包部署的

麻烦问个问题 minio 我们之前权限设置为 public 然后直接 URL 可以下载,如果希望添加权限校验,只有登录了的才可以下载怎么处理?你们是怎么处理 minio URL 权限问题和安全问题的?

docker 简单快速