Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


tomcat_administration:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
tomcat_administration:start [2016/11/21 08:01] – marco.staubtomcat_administration:start [2024/04/11 06:55] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 3: Zeile 3:
 ===== Tag 1 ===== ===== Tag 1 =====
  
-==== rc.sh ==== +==== 1.2 - tomcat.sh ==== 
-<nowiki> +<code> 
-#!/usr/bin/sh +#!/bin/sh 
-# rc.sh+
 ### Start Config ### ### Start Config ###
-TOMCAT_VERSION=8.5.8+ 
 +TOMCAT_VERSION=10.1.20
 INSTANCE_NAME=workshop INSTANCE_NAME=workshop
-INSTANCE_VERSION=1.0+
 ### End Config #### ### End Config ####
 +
 CATALINA_HOME=/opt/tomcat/products/${TOMCAT_VERSION} CATALINA_HOME=/opt/tomcat/products/${TOMCAT_VERSION}
-CATALINA_BASE=/opt/tomcat/instances/${INSTANCE_NAME}/${INSTANCE_VERSION}+CATALINA_BASE=/opt/tomcat/instances/${INSTANCE_NAME} 
 export CATALINA_HOME export CATALINA_HOME
 export CATALINA_BASE export CATALINA_BASE
 +
 case "$1" in case "$1" in
 start) start)
-$CATALINA_HOME/bin/startup.sh +        $CATALINA_HOME/bin/startup.sh 
-;;+        ;;
 stop) stop)
-$CATALINA_HOME/bin/shutdown.sh +        $CATALINA_HOME/bin/shutdown.sh 
-;;+        ;;
 *) *)
-echo "Usage: $0 {start|stop}" +        echo "Usage: $0 {start|stop}" 
-exit 1 +        exit 1 
-;;+        ;;
 esac esac
-</nowiki>+</code> 
 + 
 +==== 1.3 - Erweiterung setenv.sh ==== 
 + 
 +<code> 
 +CATALINA_TMPDIR="${CATALINA_VAR}/temp" 
 +CATALINA_PID="${CATALINA_VAR}/logs/tomcat.pid" 
 +CATALINA_OUT="${CATALINA_VAR}/logs/catalina.out" 
 +CATALINA_OPTS="-Dcatalina.var=${CATALINA_VAR}" 
 +</code> 
 + 
 +==== 1.4 - OOM ==== 
 +<code> 
 +JAVA_OOM="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/tomcat/workshop -XX:OnOutOfMemoryError=${CATALINA_HOME}/bin/oom.sh" 
 +CATALINA_OPTS="$CATALINA_OPTS $JAVA_OOM" 
 +</code> 
 + 
 +==== 1.4 - action.bash ==== 
 + 
 +<code> 
 +#!/bin/bash 
 +dumps=`ls -1rt /var/tomcat/java_pid*.hprof | tail -1`; 
 +printf "Memory Dump:\n $dumps" >> /tmp/dumps.log 
 +# printf "Memory Dump:\n $dumps" | mailx -s "Memory Dump" "admin@example.zz" 
 +</code> 
 + 
 +==== 1.8 - Valve und Filter ==== 
 + 
 +<code> 
 +<Context> 
 +<Valve className="org.apache.catalina.valves.StuckThreadDetectionValve" threshold="10"/> 
 +</Context> 
 +</code> 
 + 
 +<code> 
 +   <filter> 
 +      <filter-name>ExpiresFilter</filter-name> 
 +      <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class> 
 +      <init-param> 
 +         <param-name>ExpiresByType text</param-name> 
 +         <param-value>access plus 2 days</param-value> 
 +      </init-param> 
 +   </filter> 
 +   <filter-mapping> 
 +      <filter-name>ExpiresFilter</filter-name> 
 +      <url-pattern>*.html</url-pattern> 
 +      <dispatcher>REQUEST</dispatcher> 
 +   </filter-mapping> 
 +</code> 
 + 
 +===== Tag 2 ===== 
 + 
 +==== 2.4 - SSL Connector ==== 
 + 
 +<code> 
 +<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" 
 +   maxThreads="150" SSLEnabled="true" scheme="https" secure="true" > 
 +   <SSLHostConfig protocols="all,-TLSv1,-TLSv1.1" 
 +                  ciphers="HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA" 
 +                  honorCipherOrder="true" > 
 +      <Certificate  
 +           certificateKeystoreFile="${catalina.base}/conf/keystore.jks" 
 +           certificateKeystorePassword="changeit" /> 
 +    </SSLHostConfig> 
 +</Connector> 
 +</code> 
 + 
 +==== 2.5 - Anpassungen logging.properties ==== 
 + 
 +<code> 
 +handlers = 1catalina.org.apache.juli.AsyncFileHandler, 
 +2localhost.org.apache.juli.AsyncFileHandler, 
 +3manager.org.apache.juli.AsyncFileHandler, 4hostmanager. 
 +org.apache.juli.AsyncFileHandler, java.util.logging.ConsoleHandler, 
 +5workshop1.org.apache.juli.AsyncFileHandler, 
 +6workshop2.org.apache.juli.AsyncFileHandler 
 +</code> 
 +<code> 
 +5workshop1.org.apache.juli.AsyncFileHandler.level = FINE 
 +5workshop1.org.apache.juli.AsyncFileHandler.directory = ${catalina.var}/logs 
 +5workshop1.org.apache.juli.AsyncFileHandler.prefix = workshop_log1. 
 +5workshop1.org.apache.juli.AsyncFileHandler.maxDays = 90 
 +5workshop1.org.apache.juli.AsyncFileHandler.encoding = UTF-8 
 + 
 +6workshop2.org.apache.juli.AsyncFileHandler.level = FINE 
 +6workshop2.org.apache.juli.AsyncFileHandler.directory = ${catalina.var}/logs 
 +6workshop2.org.apache.juli.AsyncFileHandler.prefix = workshop_log2. 
 +6workshop2.org.apache.juli.AsyncFileHandler.maxDays = 90 
 +6workshop2.org.apache.juli.AsyncFileHandler.encoding = UTF-8 
 +</code> 
 +<code> 
 +ws_log.handlers = 5workshop1.org.apache.juli.AsyncFileHandler 
 +de.kippdata.workshop.handlers = 6workshop2.org.apache.juli.AsyncFileHandler 
 +</code> 
 +==== 2.6 - log4j.xml ==== 
 +<code> 
 +<?xml version="1.0" encoding="UTF-8"?> 
 +<!-- You can add the attribute monitorInterval (seconds) 
 +     to the Configuration element for hot config reloading,  
 +     for example: <Configuration monitorInterval="60"> --> 
 +<Configuration status="warn" monitorInterval="60"> 
 +  <Appenders> 
 +    <RollingFile name="default" 
 +                 fileName="${sys:catalina.var}/logs/catalina.log" 
 +                 filePattern="${sys:catalina.var}/logs/catalina.log.%d{yyyy-MM-dd-HHmmss}"> 
 +      <PatternLayout> 
 +        <pattern>%d %r %p [%t] %c (%F:%L) - %m%n</pattern> 
 +      </PatternLayout> 
 +      <!-- Daily Rotation, schedule is cron style 
 +           with columns seconds, minutes, hours, day-of-month, 
 +           month, day-of-week, year(optional) --> 
 +      <CronTriggeringPolicy schedule="0 0 0 * * ?" /> 
 +    </RollingFile> 
 +  </Appenders> 
 +  <Loggers> 
 +    <Root level="info"> 
 +      <AppenderRef ref="default"/> 
 +    </Root> 
 +<!-- Example for changing a log level 
 +    <Logger name="org.apache.catalina" 
 +            level="info" additivity="false"> 
 +      <AppenderRef ref="default"/> 
 +    </Logger> 
 +    <Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost]" 
 +            level="info" additivity="false"> 
 +      <AppenderRef ref="default"/> 
 +    </Logger> 
 +    <Logger name="org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]" 
 +            level="info" additivity="false"> 
 +      <AppenderRef ref="default"/> 
 +    </Logger> 
 +--> 
 +  </Loggers> 
 +</Configuration> 
 +</code> 
 + 
 +==== 2.7 - JMX Remote ==== 
 +<code> 
 +JMX_OPTS_NOSSL_NOAUTH="\ 
 +-Dcom.sun.management.jmxremote=true \ 
 +-Dcom.sun.management.jmxremote.port=1090 \ 
 +-Dcom.sun.management.jmxremote.ssl=false \ 
 +-Dcom.sun.management.jmxremote.authenticate=false \ 
 +" 
 + 
 +JMX_OPTS_SSL_NOAUTH="\ 
 +-Dcom.sun.management.jmxremote=true \ 
 +-Dcom.sun.management.jmxremote.port=1090 \ 
 +-Dcom.sun.management.jmxremote.ssl=true \ 
 +-Dcom.sun.management.jmxremote.authenticate=false \ 
 +-Djavax.net.ssl.keyStorePassword=workshop \ 
 +-Djavax.net.ssl.keyStore=${CATALINA_BASE}/conf/keystore.jks \ 
 +" 
 + 
 +JMX_OPTS_SSL_AUTH="\ 
 +-Dcom.sun.management.jmxremote=true \ 
 +-Dcom.sun.management.jmxremote.port=1090 \ 
 +-Dcom.sun.management.jmxremote.ssl=true \ 
 +-Dcom.sun.management.jmxremote.authenticate=true \ 
 +-Dcom.sun.management.jmxremote.access.file=${CATALINA_BASE}/conf/jmxremote.access \ 
 +-Dcom.sun.management.jmxremote.password.file=${CATALINA_BASE}/conf/jmxremote.password \ 
 +-Djavax.net.ssl.keyStorePassword=workshop \ 
 +-Djavax.net.ssl.keyStore=${CATALINA_BASE}/conf/keystore.jks \ 
 +" 
 + 
 +CATALINA_OPTS="$CATALINA_OPTS $JMX_OPTS_NOSSL_NOAUTH" 
 +</code> 
 + 
 +===== Tag 3 ===== 
 + 
 +==== 3.7 - Ressources ==== 
 + 
 +<code> 
 +<Context docBase="/opt/webapps/workshop/3.1.0/workshop.war"> 
 +   <Resources> 
 +      <PreResources className="org.apache.catalina.webresources.DirResourceSet" 
 +                     base="${catalina.base}/conf/workshop" webAppMount="/WEB-INF/classes" /> 
 +   </Resources> 
 +</Context> 
 +</code> 
 + 
 +==== 3.8 - LDAP Realm ==== 
 + 
 +<code> 
 +   <Realm className="org.apache.catalina.realm.JNDIRealm" 
 +          connectionName="cn=tcmanager,ou=specialusers,dc=linuxhotel,dc=de" 
 +          connectionPassword="secret" 
 +          connectionURL="ldap://ldapserver:389/" 
 +          userBase="ou=people,dc=linuxhotel,dc=de" 
 +          userSubtree="true" 
 +          userSearch="(uid={0})" 
 +          roleBase="ou=groups,dc=linuxhotel,dc=de" 
 +          roleSubtree="true" 
 +          roleName="cn" 
 +          roleSearch="(uniqueMember={0})" 
 +          /> 
 +</code> 
 + 
 +===== Tag 4 ===== 
 + 
 + 
 +===== Tag 5 ===== 
 + 
 +==== 5.1 - docker ==== 
 + 
 +<code> 
 +FROM alpine:3.15 
 + 
 +#### OpenJDK 17 
 +RUN apk update 
 +RUN apk add openjdk17-jre-headless 
 +ENV JAVA_HOME /usr/lib/jvm/java-17-openjdk 
 + 
 +#### tcnative 
 +#ENV TCNATIVE 1.2.33 
 +#RUN apk add openjdk17-jdk apr-dev openssl-dev gcc make musl-dev 
 +#RUN wget -O /tmp/tomcat-native-${TCNATIVE}-src.tar.gz https://dlcdn.apache.org/tomcat/tomcat-connectors/native/${TCNATIVE}/source/tomcat-native-${TCNATIVE}-src.tar.gz; \ 
 +#  cd /tmp; \ 
 +#  tar -zxf tomcat-native-${TCNATIVE}-src.tar.gz; \ 
 +#  cd tomcat-native-${TCNATIVE}-src/native; \ 
 +#  ./configure --prefix=/opt/tcnative/${TCNATIVE}; \ 
 +#  make; \ 
 +#  make install; \ 
 +#  cd /tmp; \ 
 +#  rm -rf /tmp/tomcat-native* 
 + 
 +#### tomcat 
 +ENV TOMCATVERSION 10.0.20 
 +ENV INSTANCENAME workshop 
 +ENV TOMCATDIR /opt/tomcat 
 +ENV WARFILE workshop.war 
 +ENV APPVERSION 3.1.0 
 +ENV CATALINA_HOME ${TOMCATDIR}/products/apache-tomcat-${TOMCATVERSION} 
 +ENV CATALINA_BASE ${TOMCATDIR}/instances/${INSTANCENAME} 
 +ENV CATALINA_VAR /var/tomcat/${INSTANCENAME} 
 +ENV PATH $CATALINA_HOME/bin:$PATH 
 +ENV TCUSER tcrun 
 +ENV TCGROUP tcgroup 
 + 
 +# create CATALINA_HOME 
 +RUN mkdir -p "${TOMCATDIR}/products"; \ 
 +  cd ${TOMCATDIR}/products; \ 
 +  wget -O /tmp/tomcat-product.tar.gz "https://archive.apache.org/dist/tomcat/tomcat-10/v${TOMCATVERSION}/bin/apache-tomcat-${TOMCATVERSION}.tar.gz"; \ 
 +  tar -zxf /tmp/tomcat-product.tar.gz; \ 
 +  rm /tmp/tomcat-product.tar.gz 
 + 
 +# create CATALINA_BASE 
 +COPY ${INSTANCENAME}.tar /tmp/${INSTANCENAME}.tar 
 +RUN mkdir -p ${TOMCATDIR}/instances; \ 
 +  cd ${TOMCATDIR}/instances; \ 
 +  tar -xf /tmp/${INSTANCENAME}.tar; \ 
 +  rm /tmp/${INSTANCENAME}.tar 
 + 
 +# create CATALINA_VAR 
 +RUN mkdir -p /var/tomcat/${INSTANCENAME}; \ 
 +  cd /var/tomcat/${INSTANCENAME}; \ 
 +  mkdir logs temp webapps work 
 + 
 +# create webappdir 
 +RUN mkdir -p /opt/webapps/${INSTANCENAME}/${APPVERSION}-jee9 
 +COPY $WARFILE /opt/webapps/${INSTANCENAME}/${APPVERSION}-jee9/ 
 + 
 +# create runtime user and change rights 
 +RUN addgroup $TCGROUP; \ 
 +  adduser -h /opt/tomcat -H -G $TCGROUP -s /bin/sh -D $TCUSER; \ 
 +  chown -R $TCUSER:$TCGROUP /opt/tomcat; \ 
 +  chown -R $TCUSER:$TCGROUP /var/tomcat; \ 
 +  chown -R $TCUSER:$TCGROUP /opt/webapps 
 + 
 +WORKDIR $CATALINA_BASE 
 +EXPOSE 8080 8443 
 + 
 +USER $TCUSER 
 +CMD ["catalina.sh","run"] 
 +</code> 
 + 
 +==== 5.3 - einfacher Proxy ==== 
 +<code> 
 +<VirtualHost *:80> 
 +  ProxyPass /workshop http://localhost:8180/workshop 
 +  ProxyPassReverse /workshop http://localhost:8080/workshop 
 +  ProxyPassReverse /workshop http://localhost:8180/workshop 
 +  ProxyPreserveHost On 
 +</VirtualHost> 
 +</code> 
 + 
 +==== 5.6 - Monitoring ==== 
 + 
 +<code> 
 +   ProxyPass /lbmanager ! 
 +   <Location /lbmanager> 
 +      SetHandler balancer-manager 
 +      AuthType basic 
 +      AuthName "Proxy Balancer" 
 +      AuthBasicProvider file 
 +      AuthUserFile htpasswd.intern 
 +      Require user proxyadmin 
 +   </Location> 
 +</code>
  
 +<code>
 +  LogFormat "%h %l %u %t \"%r\" %>s %b %{BALANCER_ROUTE_CHANGED}e %{BALANCER_WORKER_ROUTE}e %{BALANCER_SESSION_ROUTE}e %D" proxyextended
 +  CustomLog "logs/proxy_access_log" proxyextended
 +</code>
  
tomcat_administration/start.1479715280.txt.gz · Zuletzt geändert: 2016/11/21 08:01 von marco.staub