Intégration rapide d'Apache Tomcat (Linux / UNIX)

Intégration d'Apache Tomcat 11.0.x

Cette section décrit les étapes pour configurer rapidement Apache Tomcat 11.0.22. Les autres versions de la série Tomcat 11 devraient fonctionner de manière similaire.

Télécharger Tomcat

Téléchargez Tomcat sous forme de fichier tar.gz depuis Téléchargements du logiciel Tomcat 11. Des versions spécifiques peuvent également être téléchargées depuis la Page des archives. Nous travaillerons avec apache-tomcat-11.0.22.tar.gz.

Extrayez l'archive pour obtenir un répertoire apache-tomcat-11.0.22, et renommez-le éventuellement selon vos préférences.

Télécharger le Wrapper

Les étapes suivantes sont conçues pour fonctionner avec la version 3.7.0 du Java Service Wrapper. L'utilisation de versions antérieures est possible, mais nécessitera probablement quelques modifications.

Décidez de l'édition à utiliser (Professional, Standard ou Community), et sélectionnez la plateforme, le nombre de bits et l'architecture cibles. Ensuite, téléchargez l'installateur ou l'archive et installez-le ou extrayez-le. Nous supposerons que vous utilisez l'édition Professional 64 bits sur Linux x86.

Intégration du Wrapper

Pour faciliter le placement des fichiers Wrapper requis, créez le script shell suivant dans votre répertoire apache-tomcat-11.0.22 extrait sous le nom updateWrapper.sh. Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus. N'oubliez pas de le rendre exécutable.

#!/bin/sh
WRAPPER_HOME=../wrapper-linux-x86-64-3.7.0-pro
TOMCAT_HOME=.
WRAPPER_SCRIPT=tomcat.sh

if [ -d ${WRAPPER_HOME}/lang ]
then
    mkdir -p ${TOMCAT_HOME}/lang
    cp -n ${WRAPPER_HOME}/lang/wrapper_*.mo ${TOMCAT_HOME}/lang/.
    cp -n ${WRAPPER_HOME}/lang/wrapperjni_*.mo ${TOMCAT_HOME}/lang/.
fi
if [ -f ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ]
then
    cp -n ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ${TOMCAT_HOME}/conf/wrapper-license.conf
fi

cp ${WRAPPER_HOME}/bin/wrapper ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/wrapper.jar ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/libwrapper.* ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/src/bin/App.sh.in ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

sed -i '' -e 's/@app\.name@/tomcat/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
sed -i '' -e 's/@app\.long\.name@/Tomcat Application Server/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
chmod +x ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

Exécutez le script :

./updateWrapper.sh

La configuration utilise la Méthode d'intégration 2.

NOTE

La variable JAVA_HOME doit être définie, mais prendra par défaut la valeur de l'environnement système si elle y est définie. La série Tomcat 11.0.x nécessite un minimum de Java 17.

Créez le fichier de configuration du Wrapper sous le nom conf/wrapper.conf avec le contenu suivant :

@encoding=UTF-8
# The configuration file must begin with a line declaring its encoding.

# Default mode for file inclusions
@include.default_mode=required

# Include file problems can be debugged by removing '#' at the beginning
#  of the following line:
#@include.debug

#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)

#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
#  License Key to start.  Licenses can be purchased or a trial license
#  requested on the following pages:
# https://wrapper.tanukisoftware.com/purchase
# https://wrapper.tanukisoftware.com/trial

# The Wrapper will look for either of the following optional files for a
#  valid License Key.  License Key properties can optionally be included
#  directly in this configuration file.
@include.optional ../conf/wrapper-license.conf
@include.optional ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

# The following property will output information about which License Key(s)
#  are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE

#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP

# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=../lang

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=%JAVA_HOME%/bin/java

# Tell the Wrapper to log the full generated Java command line.
#wrapper.java.command.loglevel=INFO

# Wrapper Jar file
wrapper.jarfile=../bin/wrapper.jar

# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN

# Java Version control
wrapper.java.version.output=true
wrapper.java.version.min=17
#wrapper.java.version.max=

# Java Classpath.  Add class path elements as needed starting from 1
wrapper.java.classpath.1=../bin/*.jar

# Java Modulepath. (Requires Java 9 or above)
#  Add module path elements as needed starting from 1
#wrapper.java.module_path.1=

# Java Module list. (Requires Java 9 or above)
#  Add module names as needed starting from 1
#wrapper.java.module.1=

# Java Library Path (location of wrapper.dll or libwrapper.so)
wrapper.java.library.path.1=../bin

# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE

# Java Additional Parameters
wrapper.java.additional.1=-Djava.util.logging.config.file=../conf/logging.properties
wrapper.java.additional.2=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
wrapper.java.additional.3=-Djdk.tls.ephemeralDHKeySize=2048
wrapper.java.additional.4=-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
wrapper.java.additional.5=-Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
wrapper.java.additional.6=-Djava.io.tmpdir=../temp

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

# Application System Properties passed via the backend.
#  Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=ignore.endorsed.dirs=
wrapper.app.property.2=catalina.base=..
wrapper.app.property.3=catalina.home=..

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.
#  Helper classes are provided to do this for you.
#  See the following page for details:
#  https://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp

# Application parameters.
#  Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE

#  Add parameters as needed starting from 1
wrapper.app.parameter.1=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.2=1
wrapper.app.parameter.3=start
wrapper.app.parameter.4=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.5=TRUE
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE

# Format of output for the console.  (See docs for formats)
wrapper.console.format=LPTM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for Wrapper output logging.
wrapper.logfile=../logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Roll mode of the log file.
#  SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
#  value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
#  launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0 disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffixes.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE

# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE

# Title to use when running as a console
wrapper.console.title=Tomcat Application Server

#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

# Out Of Memory detection.
#  Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
#  Ignore -Xlog:class+load=level output to avoid false positives.
wrapper.filter.trigger.1001=[class,load] java.lang.OutOfMemoryError
wrapper.filter.action.1001=NONE
# (Simple match)
wrapper.filter.trigger.1002=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1002=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1002=TRUE
wrapper.filter.action.1002=RESTART
wrapper.filter.message.1002=The JVM has run out of memory.

#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>

# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO

# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE

# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

#********************************************************************
# Wrapper Secure File Properties
#********************************************************************
# To enforce the principle of least privilege for files containing
#  sensitive data, the Wrapper requires that all permissions granted
#  to these files be explicitly allowed in the configuration.
#  Please read the documentation for the full list of properties.

# Allow specific accounts or groups on Windows.
#wrapper.secure_file.check.windows.allowed_account.1=NT AUTHORITY\SYSTEM
#wrapper.secure_file.check.windows.allowed_account.2=BUILTIN\Administrators

# Allow specific groups on Unix systems.
#wrapper.secure_file.check.unix.allowed_group.1=<Group_Of_Users>

# Additional files to check for permissions (Requires Standard Edition)
#wrapper.secure_file.additional.1=<Secured_File>

#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.
#  The service can then be reinstalled.

# Name of the service
wrapper.name=tomcat

# Display name of the service
wrapper.displayname=Tomcat

# Description of the service
wrapper.description=Tomcat Application Server

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.
#  AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Account to use when running the service.
#  The default blank value will use LocalSystem, which is highly privileged
#  account on Windows. Please read the documentation page for this property to
#  learn about other account types that can be used.
wrapper.ntservice.account=

# Allow the current user to perform certain actions without being prompted for
#  administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

NOTE

Si vous utilisez la Standard Edition ou la Professional Edition, une licence par défaut de 15 minutes aura été copiée en tant que conf/wrapper-license.conf. Vous devrez la mettre à jour avec une licence Trial, Server ou Development pour l'exécuter plus longtemps.

Exécution

Pour exécuter dans une console :

  • Exécutez : bin/tomcat.sh console

Pour exécuter en tant que daemon (service) :

  • Installez le service avec : bin/tomcat.sh install

  • Puis démarrez le service avec : bin/tomcat.sh start

  • Arrêtez le service avec : bin/tomcat.sh stop

  • Désinstallez le service avec : bin/tomcat.sh remove

Pour une liste des commandes disponibles :

  • Exécutez : bin/tomcat.sh

Vous pouvez voir la sortie de journal du Wrapper ainsi que toute sortie console de java en suivant le fichier journal logs/wrapper.log. D'autres fichiers journaux de Tomcat se trouvent également dans ce répertoire.

Intégration d'Apache Tomcat 10.1.x

Cette section décrit les étapes pour configurer rapidement Apache Tomcat 10.1.55. Les autres versions de la série Tomcat 10 devraient fonctionner de manière similaire.

Télécharger Tomcat

Téléchargez Tomcat sous forme de fichier tar.gz depuis Téléchargements du logiciel Tomcat 10. Des versions spécifiques peuvent également être téléchargées depuis la Page des archives. Nous travaillerons avec apache-tomcat-10.1.55.tar.gz.

Extrayez l'archive pour obtenir un répertoire apache-tomcat-10.1.55, et renommez-le éventuellement selon vos préférences.

Télécharger le Wrapper

Les étapes suivantes sont conçues pour fonctionner avec la version 3.7.0 du Java Service Wrapper. L'utilisation de versions antérieures est possible, mais nécessitera probablement quelques modifications.

Décidez de l'édition à utiliser (Professional, Standard ou Community), et sélectionnez la plateforme, le nombre de bits et l'architecture cibles. Ensuite, téléchargez l'installateur ou l'archive et installez-le ou extrayez-le. Nous supposerons que vous utilisez l'édition Professional 64 bits sur Linux x86.

Intégration du Wrapper

Pour faciliter le placement des fichiers Wrapper requis, créez le script shell suivant dans votre répertoire apache-tomcat-10.1.55 extrait sous le nom updateWrapper.sh. Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus. N'oubliez pas de le rendre exécutable.

#!/bin/sh
WRAPPER_HOME=../wrapper-linux-x86-64-3.7.0-pro
TOMCAT_HOME=.
WRAPPER_SCRIPT=tomcat.sh

if [ -d ${WRAPPER_HOME}/lang ]
then
    mkdir -p ${TOMCAT_HOME}/lang
    cp -n ${WRAPPER_HOME}/lang/wrapper_*.mo ${TOMCAT_HOME}/lang/.
    cp -n ${WRAPPER_HOME}/lang/wrapperjni_*.mo ${TOMCAT_HOME}/lang/.
fi
if [ -f ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ]
then
    cp -n ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ${TOMCAT_HOME}/conf/wrapper-license.conf
fi

cp ${WRAPPER_HOME}/bin/wrapper ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/wrapper.jar ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/libwrapper.* ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/src/bin/App.sh.in ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

sed -i '' -e 's/@app\.name@/tomcat/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
sed -i '' -e 's/@app\.long\.name@/Tomcat Application Server/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
chmod +x ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

Exécutez le script :

./updateWrapper.sh

La configuration utilise la Méthode d'intégration 2.

NOTE

La variable JAVA_HOME doit être définie, mais prendra par défaut la valeur de l'environnement système si elle y est définie. La série Tomcat 10.1.x nécessite un minimum de Java 11.

Créez le fichier de configuration du Wrapper sous le nom conf/wrapper.conf avec le contenu suivant :

@encoding=UTF-8
# The configuration file must begin with a line declaring its encoding.

# Default mode for file inclusions
@include.default_mode=required

# Include file problems can be debugged by removing '#' at the beginning
#  of the following line:
#@include.debug

#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)

#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
#  License Key to start.  Licenses can be purchased or a trial license
#  requested on the following pages:
# https://wrapper.tanukisoftware.com/purchase
# https://wrapper.tanukisoftware.com/trial

# The Wrapper will look for either of the following optional files for a
#  valid License Key.  License Key properties can optionally be included
#  directly in this configuration file.
@include.optional ../conf/wrapper-license.conf
@include.optional ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

# The following property will output information about which License Key(s)
#  are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE

#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP

# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=../lang

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=%JAVA_HOME%/bin/java

# Tell the Wrapper to log the full generated Java command line.
#wrapper.java.command.loglevel=INFO

# Wrapper Jar file
wrapper.jarfile=../bin/wrapper.jar

# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN

# Java Version control
wrapper.java.version.output=true
wrapper.java.version.min=11
#wrapper.java.version.max=

# Java Classpath.  Add class path elements as needed starting from 1
wrapper.java.classpath.1=../bin/*.jar

# Java Modulepath. (Requires Java 9 or above)
#  Add module path elements as needed starting from 1
#wrapper.java.module_path.1=

# Java Module list. (Requires Java 9 or above)
#  Add module names as needed starting from 1
#wrapper.java.module.1=

# Java Library Path (location of wrapper.dll or libwrapper.so)
wrapper.java.library.path.1=../bin

# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE

# Java Additional Parameters
wrapper.java.additional.1=-Djava.util.logging.config.file=../conf/logging.properties
wrapper.java.additional.2=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
wrapper.java.additional.3=-Djdk.tls.ephemeralDHKeySize=2048
wrapper.java.additional.4=-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
wrapper.java.additional.5=-Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
wrapper.java.additional.6=-Djava.io.tmpdir=../temp

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

# Application System Properties passed via the backend.
#  Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=ignore.endorsed.dirs=
wrapper.app.property.2=catalina.base=..
wrapper.app.property.3=catalina.home=..

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.
#  Helper classes are provided to do this for you.
#  See the following page for details:
#  https://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp

# Application parameters.
#  Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE

#  Add parameters as needed starting from 1
wrapper.app.parameter.1=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.2=1
wrapper.app.parameter.3=start
wrapper.app.parameter.4=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.5=TRUE
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE

# Format of output for the console.  (See docs for formats)
wrapper.console.format=LPTM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for Wrapper output logging.
wrapper.logfile=../logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Roll mode of the log file.
#  SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
#  value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
#  launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0 disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffixes.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE

# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE

# Title to use when running as a console
wrapper.console.title=Tomcat Application Server

#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

# Out Of Memory detection.
#  Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
#  Ignore -Xlog:class+load=level output to avoid false positives.
wrapper.filter.trigger.1001=[class,load] java.lang.OutOfMemoryError
wrapper.filter.action.1001=NONE
# (Simple match)
wrapper.filter.trigger.1002=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1002=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1002=TRUE
wrapper.filter.action.1002=RESTART
wrapper.filter.message.1002=The JVM has run out of memory.

#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>

# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO

# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE

# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

#********************************************************************
# Wrapper Secure File Properties
#********************************************************************
# To enforce the principle of least privilege for files containing
#  sensitive data, the Wrapper requires that all permissions granted
#  to these files be explicitly allowed in the configuration.
#  Please read the documentation for the full list of properties.

# Allow specific accounts or groups on Windows.
#wrapper.secure_file.check.windows.allowed_account.1=NT AUTHORITY\SYSTEM
#wrapper.secure_file.check.windows.allowed_account.2=BUILTIN\Administrators

# Allow specific groups on Unix systems.
#wrapper.secure_file.check.unix.allowed_group.1=<Group_Of_Users>

# Additional files to check for permissions (Requires Standard Edition)
#wrapper.secure_file.additional.1=<Secured_File>

#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.
#  The service can then be reinstalled.

# Name of the service
wrapper.name=tomcat

# Display name of the service
wrapper.displayname=Tomcat

# Description of the service
wrapper.description=Tomcat Application Server

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.
#  AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Account to use when running the service.
#  The default blank value will use LocalSystem, which is highly privileged
#  account on Windows. Please read the documentation page for this property to
#  learn about other account types that can be used.
wrapper.ntservice.account=

# Allow the current user to perform certain actions without being prompted for
#  administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

NOTE

Si vous utilisez la Standard Edition ou la Professional Edition, une licence par défaut de 15 minutes aura été copiée en tant que conf/wrapper-license.conf. Vous devrez la mettre à jour avec une licence Trial, Server ou Development pour l'exécuter plus longtemps.

Exécution

Pour exécuter dans une console :

  • Exécutez : bin/tomcat.sh console

Pour exécuter en tant que daemon (service) :

  • Installez le service avec : bin/tomcat.sh install

  • Puis démarrez le service avec : bin/tomcat.sh start

  • Arrêtez le service avec : bin/tomcat.sh stop

  • Désinstallez le service avec : bin/tomcat.sh remove

Pour une liste des commandes disponibles :

  • Exécutez : bin/tomcat.sh

Vous pouvez voir la sortie de journal du Wrapper ainsi que toute sortie console de java en suivant le fichier journal logs/wrapper.log. D'autres fichiers journaux de Tomcat se trouvent également dans ce répertoire.

Intégration d'Apache Tomcat 9.0.x

Cette section décrit les étapes pour configurer rapidement Apache Tomcat 9.0.118. Les autres versions de la série Tomcat 9 devraient fonctionner de manière similaire.

Télécharger Tomcat

Téléchargez Tomcat sous forme de fichier tar.gz depuis Téléchargements du logiciel Tomcat 9. Des versions spécifiques peuvent également être téléchargées depuis la Page des archives. Nous travaillerons avec apache-tomcat-9.0.118.tar.gz.

Extrayez l'archive pour obtenir un répertoire apache-tomcat-9.0.118, et renommez-le éventuellement selon vos préférences.

Télécharger le Wrapper

Les étapes suivantes sont conçues pour fonctionner avec la version 3.7.0 du Java Service Wrapper. L'utilisation de versions antérieures est possible, mais nécessitera probablement quelques modifications.

Décidez de l'édition à utiliser (Professional, Standard ou Community), et sélectionnez la plateforme, le nombre de bits et l'architecture cibles. Ensuite, téléchargez l'installateur ou l'archive et installez-le ou extrayez-le. Nous supposerons que vous utilisez l'édition Professional 64 bits sur Linux x86.

Intégration du Wrapper

Pour faciliter le placement des fichiers Wrapper requis, créez le script shell suivant dans votre répertoire apache-tomcat-9.0.118 extrait sous le nom updateWrapper.sh. Mettez à jour l'emplacement où vous avez installé ou extrait le Wrapper ci-dessus. N'oubliez pas de le rendre exécutable.

#!/bin/sh
WRAPPER_HOME=../wrapper-linux-x86-64-3.7.0-pro
TOMCAT_HOME=.
WRAPPER_SCRIPT=tomcat.sh

if [ -d ${WRAPPER_HOME}/lang ]
then
    mkdir -p ${TOMCAT_HOME}/lang
    cp -n ${WRAPPER_HOME}/lang/wrapper_*.mo ${TOMCAT_HOME}/lang/.
    cp -n ${WRAPPER_HOME}/lang/wrapperjni_*.mo ${TOMCAT_HOME}/lang/.
fi
if [ -f ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ]
then
    cp -n ${WRAPPER_HOME}/src/conf/wrapper-license-time.conf ${TOMCAT_HOME}/conf/wrapper-license.conf
fi

cp ${WRAPPER_HOME}/bin/wrapper ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/wrapper.jar ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/lib/libwrapper.* ${TOMCAT_HOME}/bin/.
cp ${WRAPPER_HOME}/src/bin/App.sh.in ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

sed -i '' -e 's/@app\.name@/tomcat/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
sed -i '' -e 's/@app\.long\.name@/Tomcat Application Server/g' ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}
chmod +x ${TOMCAT_HOME}/bin/${WRAPPER_SCRIPT}

Exécutez le script :

./updateWrapper.sh

La configuration utilise la Méthode d'intégration 2.

NOTE

La variable JAVA_HOME doit être définie, mais prendra par défaut la valeur de l'environnement système si elle y est définie. La série Tomcat 9.0.x nécessite un minimum de Java 8.

Créez le fichier de configuration du Wrapper sous le nom conf/wrapper.conf avec le contenu suivant :

@encoding=UTF-8
# The configuration file must begin with a line declaring its encoding.

# Default mode for file inclusions
@include.default_mode=required

# Include file problems can be debugged by removing '#' at the beginning
#  of the following line:
#@include.debug

#********************************************************************
# Environment
#********************************************************************
set.default.JAVA_HOME=(SetMe)

#********************************************************************
# Wrapper License Properties (Ignored by Community Edition)
#********************************************************************
# Professional and Standard Editions of the Wrapper require a valid
#  License Key to start.  Licenses can be purchased or a trial license
#  requested on the following pages:
# https://wrapper.tanukisoftware.com/purchase
# https://wrapper.tanukisoftware.com/trial

# The Wrapper will look for either of the following optional files for a
#  valid License Key.  License Key properties can optionally be included
#  directly in this configuration file.
@include.optional ../conf/wrapper-license.conf
@include.optional ../conf/wrapper-license-%WRAPPER_HOST_NAME%.conf

# The following property will output information about which License Key(s)
#  are being found, and can aid in resolving any licensing problems.
#wrapper.license.debug=TRUE

#********************************************************************
# Wrapper Localization
#********************************************************************
# Specify the language and locale which the Wrapper should use.
#wrapper.lang=en_US # en_US or ja_JP

# Specify the location of the language resource files (*.mo).
wrapper.lang.folder=../lang

#********************************************************************
# Wrapper Java Properties
#********************************************************************
# Java Application
wrapper.java.command=%JAVA_HOME%/bin/java

# Tell the Wrapper to log the full generated Java command line.
#wrapper.java.command.loglevel=INFO

# Wrapper Jar file
wrapper.jarfile=../bin/wrapper.jar

# Log level for notices about missing Java Classpath entries.
wrapper.java.classpath.missing.loglevel=WARN

# Java Version control
wrapper.java.version.output=true
wrapper.java.version.min=8
#wrapper.java.version.max=

# Java Classpath.  Add class path elements as needed starting from 1
wrapper.java.classpath.1=../bin/*.jar

# Java Modulepath. (Requires Java 9 or above)
#  Add module path elements as needed starting from 1
#wrapper.java.module_path.1=

# Java Module list. (Requires Java 9 or above)
#  Add module names as needed starting from 1
#wrapper.java.module.1=

# Java Library Path (location of wrapper.dll or libwrapper.so)
wrapper.java.library.path.1=../bin

# Java Bits.  On applicable platforms, tells the JVM to run in 32 or 64-bit mode.
wrapper.java.additional.auto_bits=TRUE

# Java Additional Parameters
wrapper.java.additional.1=-Djava.util.logging.config.file=../conf/logging.properties
wrapper.java.additional.2=-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
wrapper.java.additional.3=-Djdk.tls.ephemeralDHKeySize=2048
wrapper.java.additional.4=-Djava.protocol.handler.pkgs=org.apache.catalina.webresources
wrapper.java.additional.5=-Dsun.io.useCanonCaches=false -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
wrapper.java.additional.6=-Djava.io.tmpdir=../temp

# Initial Java Heap Size (in MB)
#wrapper.java.initmemory=3

# Maximum Java Heap Size (in MB)
wrapper.java.maxmemory=256

# Application System Properties passed via the backend.
#  Core Java System Properties must be passed using wrapper.java.additional.<n>.
wrapper.app.property.1=ignore.endorsed.dirs=
wrapper.app.property.2=catalina.base=..
wrapper.app.property.3=catalina.home=..

# Java Main class.  This class must implement the WrapperListener interface
#  or guarantee that the WrapperManager class is initialized.
#  Helper classes are provided to do this for you.
#  See the following page for details:
#  https://wrapper.tanukisoftware.com/doc/english/integrate.html
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp

# Application parameters.
#  Pass parameters via the backend instead of the command line.
#wrapper.app.parameter.backend=TRUE

#  Add parameters as needed starting from 1
wrapper.app.parameter.1=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.2=1
wrapper.app.parameter.3=start
wrapper.app.parameter.4=org.apache.catalina.startup.Bootstrap
wrapper.app.parameter.5=TRUE
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop

#********************************************************************
# Wrapper Logging Properties
#********************************************************************
# Enables Debug output from the Wrapper.
# wrapper.debug=TRUE

# Format of output for the console.  (See docs for formats)
wrapper.console.format=LPTM

# Log Level for console output.  (See docs for log levels)
wrapper.console.loglevel=INFO

# Log file to use for Wrapper output logging.
wrapper.logfile=../logs/wrapper.log

# Format of output for the log file.  (See docs for formats)
wrapper.logfile.format=LPTM

# Log Level for log file output.  (See docs for log levels)
wrapper.logfile.loglevel=INFO

# Roll mode of the log file.
#  SIZE_OR_WRAPPER causes the file to be rolled whenever its size exceeds the
#  value defined by wrapper.logfile.maxsize, or whenever the Wrapper is
#  launched.
wrapper.logfile.rollmode=SIZE_OR_WRAPPER

# Maximum size that the log file will be allowed to grow to before
#  the log is rolled. Size is specified in bytes.  The default value
#  of 0 disables log rolling.  May abbreviate with the 'k' (kb) or
#  'm' (mb) suffixes.  For example: 10m = 10 megabytes.
wrapper.logfile.maxsize=10m

# Maximum number of rolled log files which will be allowed before old
#  files are deleted.  The default value of 0 implies no limit.
wrapper.logfile.maxfiles=9

# Log Level for sys/event log output.  (See docs for log levels)
wrapper.syslog.loglevel=NONE

#********************************************************************
# Wrapper General Properties
#********************************************************************
# Allow for the use of non-contiguous numbered properties
wrapper.ignore_sequence_gaps=TRUE

# Do not start if the pid file already exists.
wrapper.pidfile.strict=TRUE

# Title to use when running as a console
wrapper.console.title=Tomcat Application Server

#********************************************************************
# Wrapper JVM Checks
#********************************************************************
# Detect DeadLocked Threads in the JVM. (Requires Standard Edition)
wrapper.check.deadlock=TRUE
wrapper.check.deadlock.interval=60
wrapper.check.deadlock.action=RESTART
wrapper.check.deadlock.output=FULL

# Out Of Memory detection.
#  Ignore -verbose:class output to avoid false positives.
wrapper.filter.trigger.1000=[Loaded java.lang.OutOfMemoryError
wrapper.filter.action.1000=NONE
#  Ignore -Xlog:class+load=level output to avoid false positives.
wrapper.filter.trigger.1001=[class,load] java.lang.OutOfMemoryError
wrapper.filter.action.1001=NONE
# (Simple match)
wrapper.filter.trigger.1002=java.lang.OutOfMemoryError
# (Only match text in stack traces if -XX:+PrintClassHistogram is being used.)
#wrapper.filter.trigger.1002=Exception in thread "*" java.lang.OutOfMemoryError
#wrapper.filter.allow_wildcards.1002=TRUE
wrapper.filter.action.1002=RESTART
wrapper.filter.message.1002=The JVM has run out of memory.

#********************************************************************
# Wrapper Email Notifications. (Requires Professional Edition)
#********************************************************************
# Common Event Email settings.
#wrapper.event.default.email.debug=TRUE
#wrapper.event.default.email.smtp.host=<SMTP_Host>
#wrapper.event.default.email.smtp.port=25
#wrapper.event.default.email.subject=[%WRAPPER_HOSTNAME%:%WRAPPER_NAME%:%WRAPPER_EVENT_NAME%] Event Notification
#wrapper.event.default.email.sender=<Sender email>
#wrapper.event.default.email.recipient=<Recipient email>

# Configure the log attached to event emails.
#wrapper.event.default.email.maillog=ATTACHMENT
#wrapper.event.default.email.maillog.lines=50
#wrapper.event.default.email.maillog.format=LPTM
#wrapper.event.default.email.maillog.loglevel=INFO

# Enable specific event emails.
#wrapper.event.wrapper_start.email=TRUE
#wrapper.event.jvm_prelaunch.email=TRUE
#wrapper.event.jvm_start.email=TRUE
#wrapper.event.jvm_started.email=TRUE
#wrapper.event.jvm_deadlock.email=TRUE
#wrapper.event.jvm_stop.email=TRUE
#wrapper.event.jvm_stopped.email=TRUE
#wrapper.event.jvm_restart.email=TRUE
#wrapper.event.jvm_failed_invocation.email=TRUE
#wrapper.event.jvm_max_failed_invocations.email=TRUE
#wrapper.event.jvm_kill.email=TRUE
#wrapper.event.jvm_killed.email=TRUE
#wrapper.event.jvm_unexpected_exit.email=TRUE
#wrapper.event.wrapper_stop.email=TRUE

# Specify custom mail content
wrapper.event.jvm_restart.email.body=The JVM was restarted.\n\nPlease check on its status.\n

#********************************************************************
# Wrapper Secure File Properties
#********************************************************************
# To enforce the principle of least privilege for files containing
#  sensitive data, the Wrapper requires that all permissions granted
#  to these files be explicitly allowed in the configuration.
#  Please read the documentation for the full list of properties.

# Allow specific accounts or groups on Windows.
#wrapper.secure_file.check.windows.allowed_account.1=NT AUTHORITY\SYSTEM
#wrapper.secure_file.check.windows.allowed_account.2=BUILTIN\Administrators

# Allow specific groups on Unix systems.
#wrapper.secure_file.check.unix.allowed_group.1=<Group_Of_Users>

# Additional files to check for permissions (Requires Standard Edition)
#wrapper.secure_file.additional.1=<Secured_File>

#********************************************************************
# Wrapper Windows Service Properties
#********************************************************************
# WARNING - Do not modify any of these properties when an application
#  using this configuration file has been installed as a service.
#  Please uninstall the service before modifying this section.
#  The service can then be reinstalled.

# Name of the service
wrapper.name=tomcat

# Display name of the service
wrapper.displayname=Tomcat

# Description of the service
wrapper.description=Tomcat Application Server

# Service dependencies.  Add dependencies as needed starting from 1
wrapper.ntservice.dependency.1=

# Mode in which the service is installed.
#  AUTO_START, DELAY_START (Requires Standard Edition) or DEMAND_START
wrapper.ntservice.starttype=AUTO_START

# Account to use when running the service.
#  The default blank value will use LocalSystem, which is highly privileged
#  account on Windows. Please read the documentation page for this property to
#  learn about other account types that can be used.
wrapper.ntservice.account=

# Allow the current user to perform certain actions without being prompted for
#  administrator credentials. (Requires Professional Edition)
#wrapper.ntservice.permissions.1.account=CURRENT_USER
#wrapper.ntservice.permissions.1.allow=START, STOP, PAUSE_RESUME

NOTE

Si vous utilisez la Standard Edition ou la Professional Edition, une licence par défaut de 15 minutes aura été copiée en tant que conf/wrapper-license.conf. Vous devrez la mettre à jour avec une licence Trial, Server ou Development pour l'exécuter plus longtemps.

Exécution

Pour exécuter dans une console :

  • Exécutez : bin/tomcat.sh console

Pour exécuter en tant que daemon (service) :

  • Installez le service avec : bin/tomcat.sh install

  • Puis démarrez le service avec : bin/tomcat.sh start

  • Arrêtez le service avec : bin/tomcat.sh stop

  • Désinstallez le service avec : bin/tomcat.sh remove

Pour une liste des commandes disponibles :

  • Exécutez : bin/tomcat.sh

Vous pouvez voir la sortie de journal du Wrapper ainsi que toute sortie console de java en suivant le fichier journal logs/wrapper.log. D'autres fichiers journaux de Tomcat se trouvent également dans ce répertoire.

Demande de commentaires

Si vous êtes un utilisateur avancé de Tomcat et avez des suggestions pour améliorer ce document, veuillez nous en informer à support@tanukisoftware.com.