Introducción

Los contenedores web son aplicaciones que se escriben principalmente para ejecutar código Java en el servidor web. Crea un entorno para ejecutar servlets Java y páginas de servidor Java con el propósito de servir contenido web dinámico.

Apache Tomcat es uno de los contenedores web Java más populares que es de código abierto, ya que proporciona casi todas las funciones comerciales de un contenedor de aplicaciones web típico. Tiene algunas ventajas, por supuesto, que incluyen:

  • Dado que es de código abierto, puede estar seguro de que Apache Tomcat es de uso gratuito.
  • Si bien Tomcat puede no tener muchas funciones, es extremadamente liviano.
  • El contenedor web pone gran énfasis en la estabilidad, por lo que puede estar seguro de que su aplicación rara vez será aplastada e incluso entonces su servidor seguirá funcionando correctamente.

Antes de que empieces

  • Un VPS o servidor dedicado que ejecute Ubuntu 18.04 con un buen servicio de hosting Java
  • Un usuario no root configurado con privilegios sudo.

pasos

Actualizar paquetes del sistema

$ sudo apt update -y && sudo apt upgrade -y

Instalar y configurar el entorno Java

$ sudo apt install default-jre
$ sudo apt install default-jdk
$ java -versionopenjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

Configura tu ruta JAVA_HOME

$ sudo sh -c 'echo export JAVA_HOME=/usr/lib/java-8-openjdk-adm64 > /etc/profile.d/java.sh'
$ source /etc/profile.d/java.sh
$ echo$JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64

Instalar y configurar Apache Tomcat

Descargue la última versión del binario de Tomcat del sitio web oficial.

$ wget https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz

Crea un directorio llamado Gato macho o lo que quieras (aunque se recomiendan los nombres relevantes) en tu carpeta / opt y extrae allí el contenido descargado.

$ sudo mkdir -p /opt/tomcat
$ sudo tar -xf apache-tomcat-9.0.12.tar.gz -C /opt/tomcat

Cree un enlace simbólico para controlar el intercambio de versiones y las actualizaciones.

$ sudo ln -s /opt/tomcat/apache-tomcat-9.0.12 /opt/tomcat/latest

Crea un nuevo usuario llamado Gato macho y cambiar la propiedad de la carpeta Tomcat al usuario agregado.

$ sudo useradd -r -m -U -d /opt/tomcat -s /bin/false tomcat
$ sudo chown -RH tomcat: /opt/tomcat/latest

Cambie los scripts en la carpeta binaria a un modo ejecutable

$ sudo chmod o+x /opt/tomcat/latest/bin/

Para que el servicio Tomcat sea fácil de usar, crearemos un archivo de unidad y agregaremos el siguiente código para ejecutarlo como un servicio. Asegúrese de editar la ruta JAVA_HOME en consecuencia

$ sudo vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat 9 servlet container
After=network.target

[Service]
Type=forking

User=tomcat
Group=tomcat

Environment="JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64"
Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom -Djava.awt.headless=true"

Environment="CATALINA_BASE=/opt/tomcat/latest"
Environment="CATALINA_HOME=/opt/tomcat/latest"
Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid"
Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC"

ExecStart=/opt/tomcat/latest/bin/startup.sh
ExecStop=/opt/tomcat/latest/bin/shutdown.sh

[Install]
WantedBy=multi-user.target

Inicie y active el servicio Tomcat como cualquier otro servicio.

$ sudo systemctl start tomcat
$ sudo systemctl enable tomcat
$ sudo systemctl status tomcat● tomcat.service - Tomcat 9 servlet container
   Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-11-0722:43:15 EAT; 1s ago
  Process:13927 ExecStart=/opt/tomcat/latest/bin/startup.sh (code=exited, status=0/SUCCESS)
 Main PID: 13938 (java)
    Tasks:16
   Memory:125.9M
      CPU:1.902s
   CGroup: /system.slice/tomcat.service
           └─13938/usr/lib/jvm/java-8-openjdk-amd64/bin/java -Djava.util.logging.config.file=/opt/tomcat/latest/conf/logging.properties

Nov 0722:43:15 replicationserver systemd[1]: Starting Tomcat 9 servlet container...
Nov 0722:43:15 replicationserver startup.sh[13927]: Tomcat started.
Nov 0722:43:15 replicationserver systemd[1]: Started Tomcat 9 servlet container.

Configure un nombre de usuario y contraseña para acceder al panel de administración web. Esta configuración se puede encontrar en los usuarios de Tomcat.xmlArchivo.

$ sudo vim /opt/tomcat/latest/conf/tomcat-users.xml

Pegue el siguiente bloque de código en el Usuario de Tomcat elemento

<role rolename="administrator"/>
  <role rolename="manager"/>
  <user username="admin"password="admin123"roles="administrator,manager"/>

Salga mientras guarda los cambios. Cómo habilitar el acceso remoto al Gerentey HostManager Aplicaciones, edite ambos archivos contexto.xml es decir /opt/tomcat/latest/webapps/manager/META-INF/context.xml y /opt/tomcat/latest/webapps/host-manager/META-INF/context.xml se ven como el siguiente código, mientras que reemplazan 192.168.56.30 con su dirección IP adecuada.

...
<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127.d+.d+.d+|::1|0:0:0:0:0:0:0:1|192.168.56.30" />
  <Manager sessionAttributeValueClassNameFilter="java.lang.(?:Boolean|Integer|Long|Number|String)|org.apache.catalina.filters.CsrfPreventionFilter$LruCache(?:$1)?|java.util.(?:Linked)?HashMap"/>
</Context>

Ahora reinicie el servicio Tomcat.

$ sudo systemctl restart tomcat.

Vaya a su navegador y vaya a http: // YOUR_IP_ADDRESS: 8080 (use su dirección IP en lugar de YOUR_IP_ADDRESS). Debería ver una pantalla similar a la siguiente.

Cómo instalar y configurar Tomcat en Ubuntu 18

Conclusión

Ahora ha instalado Apache Tomcat. Puede comenzar su desarrollo web Java de inmediato o explorar las funciones que se ofrecen. Recuerde, Apache Tomcat es tan seguro como lo configura.

Una gran carga para proteger la aplicación sigue siendo del administrador. Problemas como la política de contraseñas pueden ser el primer paso importante para garantizar un software contenedor seguro para aplicaciones web.