Como implantar um aplicativo Java

1

Eu fiz o aplicativo java que deveria ser executado como daemon. Estou usando um Amazon Linux AMI, que usa o SysVinit e já tenho um script de inicialização para meu daemon, estou um pouco confuso sobre onde colocar os arquivos.

Inicialmente eu colocaria meu arquivo jar na pasta /usr/bin , já que eu acho que é onde os programas regulares vão, mas meu programa usa 2 bibliotecas, então na verdade eu tenho 1 jar file e e lib arquivo com 2 bibliotecas dentro dele.

Estou preocupado em colocar o arquivo jar em /usr/bin e, em seguida, as bibliotecas em /usr/lib , já que a pasta jar e lib deve estar na mesma pasta, além disso, sinto isso posso fazer uma bagunça com o meu sistema se essas bibliotecas forem atualizadas por outro programa no futuro, quebrando algumas funcionalidades por engano, sem mencionar que as coisas começam a ficar complicadas com tantos arquivos diferentes espalhados por toda parte.

Mas como gosto de estar de acordo com os padrões, não quero ir e apenas criar uma pasta aleatória para o meu programa e colocar tudo o que preciso dentro dela.

Existe uma maneira correta de implantar sistemas como este no Linux? Como é a melhor maneira de implantar um daemon java que também precisa de algumas bibliotecas?

    
por mFeinstein 04.05.2017 / 10:14

1 resposta

1

Colocar o arquivo JAR no diretório /usr/bin não é uma boa ideia. Existem muitas razões para isso, e o mais importante é a segurança. Mais ou menos, as aplicações devem ser isoladas. Colocar binários e arquivos desconhecidos e potencialmente inseguros lado a lado com o software de todo o sistema torna a superfície de ataque mais ampla do que a necessária. Criar um diretório separado tem vários benefícios: separação lógica, segurança e muitos outros. Eu recomendo um livro que li recentemente, Entrega contínua .

Minhas recomendações:

  • crie um usuário e um grupo separados para esse aplicativo Java com seu próprio diretório inicial, vamos chamá-lo de app-user ,
  • implantar todos os artefatos,
  • crie uma unidade systemd ou unidade sysv que execute este aplicativo Java como o app-user e carregue suas bibliotecas do diretório inicial app-user .
por 04.05.2017 / 10:55