GNU/Linux >> LINUX-Kenntnisse >  >> Linux

systemctl stoppt den Tomcat-Dienst sofort nach dem Start

Danke @MichaelHampton für den guten Artikel:https://jdebp.eu/FGA/systemd-house-of-horror/tomcat.html

Es erklärt die möglichen Probleme mit einer typischen Installation, die in dem von mir gelesenen Tutorial (und unzähligen anderen kopierten) vorgeschlagen wird. Ich konnte nicht herausfinden, warum das Problem auftritt. Vielleicht ist es das Problem mit all den Schichten, die durch catalina.sh, startup.sh usw. eingeführt wurden.

Also im Grunde habe ich das systemd-Konfigurationsskript umgeschrieben und es fing an zu arbeiten.


Ich hatte genau das gleiche Problem. Nur ich habe Amazon Lightsail verwendet. Möglicherweise gibt es ein Problem mit der Art und Weise, wie Amazon seine Ubuntu-Maschinen konfiguriert, und mit der beschriebenen Methode zum Erstellen eines Tomcat-Dienstes. Ich habe den beschriebenen Weg auf einem lokalen Ubuntu-Rechner verwendet, den ich selbst eingerichtet habe, und das hat gut funktioniert.

Ich habe den Artikel von @michael-hampton gelesen und den dort beschriebenen Ansatz verwendet. Ich bin ein Linux-Noob und habe festgestellt, dass ich einige Probleme hatte, es zum Laufen zu bringen. Ich füge die Dateien, mit denen ich gelandet bin, hier hinzu, damit vielleicht andere Linux-Noobs, die dieses Problem haben, einen einfacheren Start haben. Meine Tomcat-Installation befindet sich unter /opt/tomcat und dies sind die Dateien, die ich erhalten habe:

/etc/systemd/system/tomcat.service

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target


[Service]
User=tomcat
Group=tomcat
UMask=0007

EnvironmentFile=/etc/default/tomcat
ExecStart=/usr/bin/env ${JAVA_HOME}/bin/java \
$JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap \
start

ExecStop=/usr/bin/env ${JAVA_HOME}/bin/java \
$JAVA_OPTS $CATALINA_OPTS \
-classpath ${CLASSPATH} \
-Dcatalina.base=${CATALINA_BASE} \
-Dcatalina.home=${CATALINA_HOME} \
-Djava.endorsed.dirs=${JAVA_ENDORSED_DIRS} \
-Djava.io.tmpdir=${CATALINA_TMPDIR} \
-Djava.util.logging.config.file=${CATALINA_BASE}/conf/logging.properties \
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager \
org.apache.catalina.startup.Bootstrap \
stop

SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

/etc/default/tomcat

CATALINA_HOME=/opt/tomcat
CATALINA_BASE=/opt/tomcat
CATALINA_TMPDIR=/opt/tomcat/temp
CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC
JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom
JAVA_ENDORSED_DIRS=/opt/tomcat/endorsed
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
CLASSPATH=/opt/tomcat/bin/bootstrap.jar:/opt/tomcat/bin/tomcat-juli.jar

Linux
  1. Tomcat beim Start mit Administratorrechten starten?

  2. Basisdienstbefehle

  3. Der MongoDB-Dienst startet nach der Ersteinrichtung nicht

  4. systemd:SIGTERM unmittelbar nach dem Start

  5. systemctl status zeigt inactive dead

So starten, stoppen und starten Sie Dienste unter Linux neu

Systemctl-Befehle zum Verwalten des Systemd-Dienstes

So starten, stoppen oder starten Sie Dienste in CentOS 8 neu

Erste Schritte mit systemctl

Systemd:Sowohl After als auch Requires verwenden

Booten Sie Ubuntu 16.04 in die Befehlszeile / starten Sie die GUI nicht