Como configurar várias instâncias do Tomcat?

4

Existe uma maneira correta de executar mais de uma instância do tomcat em um servidor Ubuntu?

Eu fiz algumas pesquisas e encontrei duas opções:

  1. Faça o download de um tomcat compactado e implante-o manualmente. O óbvio é que não será atualizado usando apt-get .
  2. Use alguns scripts avançados , o que é perigoso em um servidor de produção.

Alguma outra ideia para executar de forma limpa outra instância?

Agradecemos antecipadamente

Adam

    
por Adam Matan 14.11.2010 / 11:31

2 respostas

2

Estou configurando isso no Ubuntu 14.04.3 LTS. Estou usando o Tomcat 7 fornecido pelo pacote tomcat7 .

Ele instala o Tomcat como um serviço do sistema, fornecendo um script de inicialização padrão:

/etc/init.d/tomcat7

e arquivo de configuração:

/etc/default/tomcat7

O Tomcat suporta a execução de várias instâncias com o mesmo software de servidor. O software do servidor está localizado em $CATALINA_HOME , os arquivos da instância estão localizados em $CATALINA_BASE . Eles são definidos da seguinte forma em /etc/init.d/tomcat7 :

NAME=tomcat7
CATALINA_HOME=/usr/share/$NAME
CATALINA_BASE=/var/lib/$NAME

(Advertência: ao editar arquivos no último, esteja ciente de que ele possui alguns links simbólicos para o primeiro.)

O pacote tomcat7-user fornece o utilitário tomcat7-instance-create que pode ser usado para criar uma árvore de diretórios para uma instância adicional do Tomcat, incluindo um diretório bin/ com scripts para iniciar e parar a instância manualmente.

O que não encontrei é o suporte para transformar essa instância adicional em um serviço do sistema. Portanto, deve ser feito manualmente, por ex. da seguinte forma:

  1. Escolha um valor para o nome do serviço; será $NAME no novo script de inicialização.
  2. Crie um novo usuário com esse nome que será o proprietário dos arquivos da instância do Tomcat e como o Tomcat será executado. Pode ser um usuário do sistema, suas propriedades devem ser as mesmas que para o usuário tomcat7 .
  3. Execute tomcat7-instance-create como esse usuário para criar uma instância do Tomcat.
  4. Configure e instale o (s) aplicativo (s) da Web que você deseja executar com ele. Teste-os usando seus scripts bin/startup.sh e bin/shutdown.sh .
  5. Mova os registros para /var/log/$NAME e crie links simbólicos para logs/ da nova instância do Tomcat.
  6. Escreva /etc/init.d/$NAME , por ex. copiando e modificando /etc/init.d/tomcat7 e modificando a atribuição para $NAME . (Seria melhor se você não precisasse copiar todo o script, mas pudesse criar um link para ele.)
  7. Escreva /etc/default/$NAME para apontar para a sua instância e usuário do Tomcat.
  8. Use upstart-rc.d para instalar o novo serviço.

Eu peguei alguns dos detalhes de Kodjo-Kuma Djomeda .

    
por Reinier Post 05.02.2016 / 12:08
3

Você já pensou em configurar vários diretórios de webapps em vez de executar várias instâncias do tomcat?

É claro que há casos em que você realmente precisa de várias instâncias, mas no caso de servir o mesmo aplicativo separadamente para vários hosts, você pode fazê-lo adicionando várias declarações no server.xml:

  <Host name="host1.example.com" appBase="host1"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

  <Host name="host2.example.com" appBase="host2"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

Agora você pode criar os diretórios "/ var / lib / tomcat6 / host1" e "/ var / lib / tomcat6 / host2" e distribuir arquivos WAR para eles.

    
por Vilmantas Baranauskas 13.05.2011 / 12:53