我有 Spring Boot 2 可执行 jar(通过命令 java -jar myapp.jar 运行),我需要将其作为 systemd 服务部署到远程 linux 服务器。 Jenkins CI 将管理从源代码构建此 jar 并将其复制到适当的位置并重新启动与 myapp.jar
关联的 java 服务。除了 jenkins 用户外,Linux 服务器只有一个用户“jonas”具有 sudo 权限。从生产环境中的安全最佳实践角度来看,我需要将 myapp.jar
放在 linux 服务器上的什么位置?可能的位置:
/var/myapplications/myapp.jar
/home/jona/myapplications/myapp.jar
/opt//myapplications/myapp.jar
myapp.jar
生成的日志文件将位于何处?
最佳答案
根据我的经验,我建议将所有第三方和应用程序保留在 /opt/{{ app_name }}
下
如果您喜欢以下结构,您可以按照以下结构进行操作,该结构使新工件的部署更加容易,并且可以选择在需要时快速回滚。
/opt/{{ app_name }}/releases/{{ app_version }}
/opt/{{ app_name }}/current
<- 上面的符号链接(symbolic link)
/opt/{{ app_name }}/current/logs
<- 日志目录将成为 releases/{{ app_version }}
您的部署脚本可以为此目的创建相应的文件夹、管理权限和符号链接(symbolic link)。
我个人喜欢的是确保它在具有适当权限的非特权用户下运行,以确保只有特定用户可以递归地读取/执行/写入目录,其中包括可能包含一些敏感信息的日志作为异常(exception)的一部分包含在内,但这完全取决于您的记录方式。
关于linux - systemd 和 Jenkins CI 的 Java 可执行 jar 位置最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49986193/