Qual é a maneira correta de executar o Tomcat sob um usuário diferente (Centos 7)?

1

Eu executo o Tomcat 7 na minha máquina Centos 7, com systemd , sob um usuário webapp diferente do padrão tomcat . Acho que deve ser fácil conseguir isso, mas estou com problemas.

Pelo que vejo, há três lugares em que o usuário e o grupo podem ser especificados:

  1. /etc/tomcat/tomcat.conf
  2. /etc/sysconfig/tomcat
  3. /lib/systemd/system/tomcat.service

O mais recente, tomcat.service , tem de fato as configurações padrão

User=tomcat
Group=tomcat

que eu posso mudar. O problema é que o arquivo tomcat.service é sobrescrito em cada atualização. Isso não acontece com tomcat.conf (aqui é criado um tomcat.conf.rpmnew ). No entanto, não vejo como posso ignorar o usuário lá.

Esse comportamento parece estranho para mim. Isso implica que eu não deveria editar tomcat.service ? Qual é a maneira recomendada de personalizar tomcat.service ?

    
por leonbloy 27.05.2017 / 15:26

2 respostas

3

De acordo com a documentação que você deve crie o diretório /lib/systemd/system/tomcat.service.d e coloque o arquivo com a extensão .conf e, em seguida, adicione ao arquivo as mudanças necessárias para Usuário e Grupo:

[Service]
User=webapp
Group=webapp

Depois disso, suas alterações no serviço seriam permanentes, porque elas são armazenadas em um local separado, que não é alterado após a atualização. Essa solução foi criada para casos como você, quando você deseja alterar os parâmetros de serviço no arquivo .service , mas após cada atualização ela é reescrita com o novo arquivo.

    
por 27.05.2017 / 15:44
2

O arquivo /lib/systemd/system/tomcat.service não deve ser alterado. Se você precisar sobrescrevê-los, basta copiar o arquivo para /etc/systemd/system/tomcat.service e editar o arquivo /etc/systemd/system/tomcat.service .

Depois de alterar o arquivo, peça ao systemd para recarregar a configuração:

systemctl daemon-reload

Altere as permissões para que o usuário tenha acesso aos arquivos tomcat ( chown , chmod , setfacl ) Em seguida, reinicie o serviço: systemctl restart tomcat

Editar: Você pode ter um $ CATALINA_BASE diferente apontando para uma subpasta em / opt onde seu aplicativo está localizado. $ CATALINA_HOME apontará para onde o tomcat está instalado por rpm. Dessa forma, ao atualizar o pacote do tomcat, todas as instâncias do tomcat serão atualizadas. Pesquise "Configuração avançada - várias instâncias do Tomcat" no link link Se você usar essa configuração, $ CATALINA_HOME deve ser de propriedade do root sem permissão de gravação para o tomcat ou qualquer outro usuário, e $ CATALINA_BASE deve ser de propriedade do usuário do aplicativo (por exemplo, tomcat-myapp)

    
por 27.05.2017 / 17:41