如何部署 Java 应用程序

如何部署 Java 应用程序

我制作了应该作为守护进程执行的java应用程序。我正在使用 Amazon Linux AMI,它使用 SysVinit,并且我的守护程序已经有一个初始化脚本,我只是对放置文件的位置有点困惑。

起初我打算将我的jar文件放在该/usr/bin文件夹中,因为我猜这是常规程序所在的位置,但我的程序使用 2 个库,所以事实上我有 1 个jar文件和lib其中包含 2 个库的文件。

我担心将jar文件放置在/usr/bin,然后将库放置在,/usr/lib因为jarlib文件夹应该位于同一个文件夹中,此外,我觉得如果将来这些库被另一个程序更新,这可能会使我的系统变得混乱,错误地破坏了一些功能,更不用说随着如此多的不同文件分布在各处,事情开始变得很麻烦。

但由于我喜欢遵守标准,所以我不想为我的程序创建一个随机文件夹并将我需要的所有内容放入其中。

在 Linux 上部署这样的系统有正确的方法吗?部署也需要一些库的 java 守护进程的最佳方法是什么?

答案1

JAR将文件放在/usr/bin目录中完全不是一个好主意。造成这种情况的原因有很多,首先最重要的是安全性。或多或少,应用程序应该被隔离。将二进制文件和未知且可能不安全的文件与系统范围的软件并排放置会使攻击面比所需的更广泛。创建单独的目录有很多好处:逻辑分离、安全性等等。强烈推荐最近读过的一本书,持续交付

我的建议:

  • 为这个Java应用程序创建单独的用户和组,并有自己的主目录,我们称之为app-user
  • 在那里部署所有工件,
  • 创建运行此 Java 应用程序的 systemd 单元或 sysv 单元并从主目录app-user加载您的库。app-user

相关内容