Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
de:shibidp3prepare-tomcat [2017/02/01 17:25] Raoul Gunnar Boreniusde:shibidp3prepare-tomcat [2021/04/26 14:50] – als deprecated markiert Silke Meyer
Zeile 1: Zeile 1:
-===== IdP 3.x Vorarbeiten: Tomat =====+===== IdP 3.x Vorarbeiten: Tomcat ===== 
 +<callout color="#ff9900" title="Veraltete IdP-Version!"> 
 +</callout> 
 +==== Installation ====
  
-====Tomcat 8=====+=== Debian 10 ===
  
-=== Hinweis zum Java Security Manager ===+<code bash> 
 +root@idp:~# apt install tomcat9 
 +</code>
  
-Den Java-Security-Manager müssen Sie abschalten um die IdP-Software zum Laufen zu bekommen. In neueren +=== Debian 8/9 ===
-Tomcats (zumindest unter Debian/Ubuntu) wird dieser offenbar standardmässig nicht mehr verwendet so dass +
-dieser Punkt keine Rolle spielen sollte. Wenn Sie eine andere Platform verwenden sollten Sie diesen Punkt +
-vor der Installation überprüfen.+
  
-===CentOS 7=== +<code bash> 
-Siehe https://panovski.me/install-tomcat-8-on-centos-7/+root@idp:~# apt-get install tomcat8 
 +</code>
  
-===Debian 8===+=== CentOS 7 ===
  
-Die Tomcat-Version 8.0.14 in Debian 8 ist nicht besonders fehlerfrei, wir empfehlen daher die Installation aus den [[https://backports.debian.org/Instructions/|Debian-Backport]] (Tomcat Version >= 8.5.x):+CentOS 7 bringt über das Repository noch Tomcat 7 mitNeuere Versionen können Sie manuell installieren.
  
 <code bash> <code bash>
-root@idp:~# apt-get install -t jessie-backports tomcat8 tomcat8-admin \ +root@idp:~# yum -install tomcat
-           tomcat8-docs libservlet3.1-java+
 </code> </code>
  
-Der IdP läuft als Teil von Tomcat natürlich auch mit der Unix-ID des Tomcat-UsersSofern Sie SSL-Credentials (RSA-Private- und Public-Key) - wie unter Debian/Ubuntu üblich - nach /etc/ssl/private bzw. /etc/ssl/certs legen wollen, müssen Sie den Tomcat-User berechtigen, den RSA-Private-Key unter /etc/ssl/private zu lesen:+=== OpenSUSE Leap 15.1 === 
 + 
 +OpenSUSE Leap 15 kommt mit Tomcat 9. 
 <code bash> <code bash>
-root@idp:~# usermod -aG ssl-cert tomcat8+root@idp:~# zypper install tomcat
 </code> </code>
-Einige globale Java-Parameter müssen beim Tomcat-Start festgelegt werden. Das IdP-Servlet benötigt mehr Speicher, als gemäß den Voreinstellungen vorgesehen ist und Zugriff auf das Filesystem. 
-Durch Angabe von /dev/urandom wird der Start von Tomcat deutlich beschleunigt: 
  
-<file bash /etc/default/tomcat8>+==== Startup-Konfiguration ==== 
 + 
 +Einige globale Java-Parameter müssen beim Tomcat-Start festgelegt werden. Das IdP-Servlet benötigt mehr Speicher, als gemäß den Voreinstellungen vorgesehen ist und Zugriff auf das Filesystem: 
 + 
 +=== Debian 10 === 
 + 
 +<file bash /etc/default/tomcat9>
 # den Tomcat mit genug Speicher starten: # den Tomcat mit genug Speicher starten:
-JAVA_OPTS="-Djava.awt.headless=true -Xms1024m -Xmx2048m -XX:+UseConcMarkSweepGC -Xms1024m -Xmx2048m  -Djava.security.egd=file:/dev/urandom -Djdk.tls.trustNameService=true"+JAVA_OPTS="-Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Xms1024m -Xmx2048m
 +</file> 
 + 
 +Diese Datei muss neu angelegt werden: 
 +<file ini /etc/systemd/system/tomcat9.service.d/override.conf> 
 +[Service] 
 +ReadWritePaths=/opt/shibboleth-idp/logs/ 
 +ReadWritePaths=/opt/shibboleth-idp/metadata/ 
 +</file
 +Anschließend: 
 +<code> 
 +systemctl daemon-reload 
 +</code> 
 + 
 +=== Debian 8/9 === 
 + 
 +<file bash /etc/default/tomcat[8|9]> 
 +# den Tomcat mit genug Speicher starten: 
 +JAVA_OPTS="-Djava.awt.headless=true -XX:+UseConcMarkSweepGC -Xms1024m -Xmx2048m"
 # Zugriff auf das File-System: # Zugriff auf das File-System:
 TOMCAT8_SECURITY=no TOMCAT8_SECURITY=no
 </file> </file>
 +
 +=== CentOS und OpenSUSE ===
 +
 +Die Tomcat-Start-Optionen werden in ''/etc/tomcat/tomcat.conf'' festgelegt.
 +
 +==== Port-Konfiguration ====
  
 In der Tomcat-Configuration wird dann In der Tomcat-Configuration wird dann
Zeile 41: Zeile 74:
   * auf Port 8009 der AJP-Connector aktiviert über den der vorgelagerte Webserver Anfragen an Tomcat weiterleitet   * auf Port 8009 der AJP-Connector aktiviert über den der vorgelagerte Webserver Anfragen an Tomcat weiterleitet
  
-<file xml /etc/tomcat8/server.xml+<file xml /etc/tomcatX/server.xml>
-<Server port="8005" shutdown="SHUTDOWN">+
    <!-- ... -->    <!-- ... -->
   <Service name="Catalina">   <Service name="Catalina">
Zeile 59: Zeile 91:
                useIPVHosts="true"                useIPVHosts="true"
                maxPostSize="100000"                maxPostSize="100000"
 +               secretRequired="false"
                URIEncoding="UTF-8" />                URIEncoding="UTF-8" />
     <!-- ... -->     <!-- ... -->
-  </Service> +  </Service>
   <!-- ... -->   <!-- ... -->
-</Server> +</file>
-</file> +
  
-Um das IdP-Servlet im Tomcat zu aktivierenerstellen Sie folgende Datei im Tomcat-localhost-Context: +IdP-Sessions gehen bei einem Tomcat-Neustart in jedem Fall verloren. Daher ergibt es keinen Sinn (bzw. führt nur zu unnötigen IdP-Fehlermeldungen)einzustellen, dass alte Sessions über Tomcat-Neustarts persistiert werden sollenDeaktivieren Sie daher dieses Tomcat-Feature:
-<code xml /etc/tomcat8/Catalina/localhost/idp.xml> +
-<Context docBase="/opt/shibboleth-idp/war/idp.war" +
-         privileged="true" +
-         unpackWAR="true" +
-         antiResourceLocking="false" +
-         swallowOutput="true" /> +
-</code>+
  
-===Java Server Tag Library (JSTL)===+<file xml /etc/tomcatX/context.xml> 
 +<?xml version="1.0" encoding="UTF-8"?> 
 +<!-- 
 +     ... 
 +--> 
 +<!-- The contents of this file will be loaded for each web application --> 
 +<Context>
  
-Als letztes muss noch die Java Server Tag Library heruntergeladen und in das Tomcat-Verzeichnis $CATALINA_BASE/lib gelegt werden (unter Debian/Unbuntu ist das /var/lib/tomcat8/lib, bei anderen Distributionen bitte entsprechend anpassen):+    <!-- Default set of monitored resources. If one of these changes, the    --> 
 +    <!-- web application will be reloaded.                                   --> 
 +    <WatchedResource>WEB-INF/web.xml</WatchedResource> 
 +    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
  
-<code bash> +    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
-root@idp:~# cd /var/lib/tomcat8/lib +
-root@idp:/var/lib/tomcat8/lib# wget https://build.shibboleth.net/nexus/service/local/repositories/thirdparty/content/javax/servlet/jstl/1.2/jstl-1.2.jar +
-</code>+
  
-=== Tomcat Restart ===+    <!-- siehe https://wiki.shibboleth.net/confluence/display/IDP30/ApacheTomcat8 --> 
 +    <Manager pathname="" />
  
-Nach den ganzen obigen Anpassungen können Sie jetzt den Tomcat neu starten:+</Context> 
 +</file>
  
 +==== Java Standard Tag Library (JSTL) ====
 +=== Debian 10 ===
 +Unter Debian 10 kann die JSTL aus dem Debian-Repository installiert werden:
 <code bash> <code bash>
-root@idp:~# systemctl restart tomcat8+root@idp:~# apt install libtaglibs-standard-impl-java
 </code> </code>
  
-Lassen Sie am besten beim restart des Tomcat in einem zweiten Fenster den Tomcat-Log mitlaufen um zu sehen +Anschließend muss der Pfad zur .jar-Datei noch ''/etc/tomcat9/catalina.properties'' hinzugefügt werden: 
-ob es beim Start Probleme gibt:+ 
 +<file xml /etc/tomcat9/catalina.properties> 
 +common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","/usr/share/java/*.jar" 
 +</file> 
 + 
 +=== Debian 8/9 === 
 +Unter Debian 8 und 9 muss die fehlerfreie Version der Java Standard Tag Library heruntergeladen und in das Tomcat-Verzeichnis $CATALINA_BASE/lib gelegt werden. Unter Debian/Ubuntu ist das ''/var/lib/tomcat8/lib'', bei anderen Distributionen passen Sie den Pfad ggf. entsprechend an:
  
 <code bash> <code bash>
-root@idp:~# tail -/var/log/tomcat8/catalina.out+root@idp:~# wget https://build.shibboleth.net/nexus/service/local/repositories/thirdparty/content/javax/servlet/jstl/1.2/jstl-1.2.jar \ 
 +             -O /var/lib/tomcat8/lib/jstl-1.2.jar
 </code> </code>
  
-Sofern der Tomcat nicht fehlerfrei startet sollten Sie dem erst nachgehen bevor Sie mit dieser Anleitung weiter machenWenn im Log die Meldung "Server startup in XXXXX ms" kommt ist der Tomcat betriebsbereit. Kontrollieren Sie dann ob die Port-Konfiguration erfolgreich war und der Tomcat nur noch an zwei Ports auf Localhost lauscht:+=== OpenSUSE Leap 15.1 ===
  
-<code sh+<code bash
-root@server:~# netstat -tlpen | grep java +root@idp:~# zypper install jakarta-taglibs-standard
-tcp6            0 127.0.0.1:8005          :::*                    LISTEN      118        5994188     2594/java +
-tcp6            0 127.0.0.1:8009          :::*                    LISTEN      118        5993661     2594/java+
 </code> </code>
  
-====Tomcat 7=====+==== Tomcat Restart ====
  
-Wir empfehlen Tomcat8, siehe oben. Falls Sie noch Tomcat7 einsetzen ist das folgende vielleicht hilfreich:+Nach den ganzen obigen Anpassungen können Sie jetzt den Tomcat neu starten:
  
-Sollte es beim Neustart nach Installation und Konfiguration des IdP folgender Fehlermeldung kommen:\\ +<code bash
-"Resource specification not allowed here for source level below 1.7"\\ +root@idp:~# systemctl restart tomcatX 
-... so muss die Tomcat-eigene web.xml angepasst werden. Siehe hierzu http://www.censore.blogspot.in/2015/04/how-to-set-tomcat-7-source-level-to.html \\ +</code>
-Bei Debian/Ubuntu liegt diese Datei unter /etc/tomcat7/web.xml, bei SLES 12 unter /usr/share/tomcat/conf/web.xml+
  
-===RHEL=== +Behalten Sie beim Neustart in einem zweiten Fenster das Tomcat-Log im Blick, um zu sehen, ob es beim Start Probleme gibt:
-EPEL installieren+
  
-RHEL/CentOS 6 32-Bit 
 <code bash> <code bash>
-wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm +root@idp:~# tail -f /var/log/tomcatX/catalina.DATUM.log 
-rpm -ivh epel-release-6-8.noarch.rpm+# oder 
 +root@idp:~# journalctl -u tomcat -f
 </code> </code>
-RHEL/CentOS 6 64-Bit+ 
 +Sofern der Tomcat nicht fehlerfrei startet sollten Sie dem erst nachgehen, bevor Sie mit dieser Anleitung weiter machen. Wenn im Log die Meldung "Server startup in XXXXX ms" kommt, ist der Tomcat betriebsbereit. Kontrollieren Sie dann, ob die Port-Konfiguration erfolgreich war und der Tomcat nur noch an 1-2 Ports auf Localhost lauscht. Der **Port 8005** ist bei Debian/Ubuntu mit Tomcat8 sowieso OpenSUSE mit Tomcat 9 noch standardmäßig offen, bei Debian/Ubuntu mit Tomcat9 nicht mehr. Das ist okay so. 
 <code bash> <code bash>
-wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm +root@idp:~# netstat -tlpn | grep java 
-rpm -ivh epel-release-6-8.noarch.rpm +(tcp6        0 127.0.0.1:8005    :::*    LISTEN   2594/java) 
-</code> + tcp6        0 127.0.0.1:8009    :::*    LISTEN   2594/java
-EPEL verifizieren +
-<code bash> +
-yum repolist +
-</code> +
-EPEL aktivieren +
-<code bash> +
-yum-config-manager --enable epel  +
-</code> +
-<code bash> +
-yum install tomcat+
 </code> </code>
  
 +==== Konfiguration für das IdP-Servlet vorbereiten ====
 +Um das IdP-Servlet im Tomcat zu aktivieren, erstellen Sie folgende Datei im Tomcat-localhost-Context:
 +
 +<file xml /etc/tomcatX/Catalina/localhost/idp.xml>
 +<Context docBase="/opt/shibboleth-idp/war/idp.war"
 +         privileged="true"
 +         unpackWAR="true"
 +         antiResourceLocking="false"
 +         swallowOutput="true" />
 +</file>
 +
 +**Achtung:**  Unter CentOS 7 und Tomcat 7 muss ''unpackWAR="false"''  gesetzt werden!
 +
 +Solange nichts unter /opt/shibboleth liegt, startet der Tomcat jetzt nur mit Fehlern neu.
 +
 +Weiter geht es mit [[:de:shibidp3prepare-http|HTTP-Server]].
 +
 +{{tag>idp3 deprecated}}