Projet Socle ENT
Pages enfant
  • Tomcat en production

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

Préambule

Info

Ce document est un exemple de ce qui ce fait sur des serveurs de production, il n'a pas la prétention d'être LA référence.
D'ailleurs j'encourage tout personne le souhaitant à enrichir de document pour apporter son expérience.

...

  1. Faciliter les mises à jour ultérieures
  2. Supprimer ce qui est inutile et consommateur de ressources
  3. Sécuriser nos installations
  4. Dispose d'outils de maintenance

Pour l'exemple

Info
titleAstuce

Pour vous faciliter les mises à jours ultérieures de tomcat ou des versions d'esup-portail, il est conseillé d'utiliser des liens symboliques.
Par exemple :

  • /esup/tomcat6 est un lien symbolique vers l'installation binaire de tomcat (server.home)
  • /esup/esup-install est un lien symbolique vers l'installation binaire de tomcat (esup.root)
  • /esup/esup-sources est un lien symbolique vers les sources uPortal (esup.sources)
  • /esup/webapps est un lien symbolique vers le webapps de déploiement esup-portail (esup.deploy)

...

Bloc de code
 /esup/esup-install => /esup/esup-3.1.2-esup-0.5-RC1

Librairies

Modifier le /esup/tomcat6/conf/catalina.properties

...

Bloc de code
[esup@test]$ mkdir -p /esup/tomcat6/shared/classe
[esup@test]$ mkdir -p /esup/tomcat6/shared/lib

Le driver SQL

Placer le driver de base de données dans /esup/tomcat6/lib (Utilisé par le pool de connexion Tomcat)

...

Balise Wiki
Vous trouverez différents drivers dans le package \[/esup/esup-install/update/Tomcat/lib\]

Les jar du portail (pluto)

Balise Wiki
Modifier le config du package esup \[/esup/esup-install/config.propeties ou /esup/esup-install/custom.properties\]

Bloc de code
[esup@test]$ vi /esup/esup-install/config.propeties

> tomcat.update=true

[esup@test]$ ant init deploy-ear
[esup@test]$ vi /esup/esup-install/config.propeties

> tomcat.update=false

...

Context Tomcat

Balise Wiki
Modifier le server.xml \[/esup/tomcat6/conf/server.xml\]

...

Bloc de code
<?xml version='1.0' encoding='utf-8'?><Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <Listener className="org.apache.catalina.core.JasperListener" />
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />

  <Service name="Catalina">
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Host name="localhost"  appBase="webapps"
            unpackWARs="false" autoDeploy="false"
            xmlValidation="false" xmlNamespaceAware="false">

	  <Context path=""
	 	   docBase="/esup/webapps/uPortal"
		   crossContext="true"
		   reloadable="true">
		<Resource name="jdbc/PortalDb"
			  auth="Container"
			  type="javax.sql.DataSource"
			  username="XXXXX" password="XXXXX"
			  driverClassName="com.mysql.jdbc.Driver"
			  url="jdbc:mysql://XXXX.univ.fr/XXXXX?autoReconnect=true"
			  maxActive="50" maxIdle="30" maxWait="10000"
			  poolPreparedStatements="true"
			  removeAbandoned="true"
			  removeAbandonedTimeout="300"
		/>
		<Manager pathname="" />
	  </Context>

	  <Context path="/ResourceServingWebapp"
	           docBase="/esup/webapps/ResourceServingWebapp"
		    reloadable="false">
		<Manager pathname=""/>
	  </Context>

          <Context path="/manager"
                   docBase="/esup/tomcat6/webapps/manager"
                   reloadable="false"
		   antiResourceLocking="false"
		   privileged="true">
		<Manager pathname=""/>
	  </Context>

          <!--
          <Context path="/probe"
		   docBase="/esup/webapps/probe"
		   reloadable="false"
		   privileged="true">
		<Manager pathname=""/>
	  </Context>
          -->
      </Host>
    </Engine>
  </Service>
</Server>

Nettoyage

Supprimer les dossiers suivants :

Bloc de code
[esup@test]$ rm -rf /esup/tomcat6/webapps/docs
[esup@test]$ rm -rf /esup/tomcat6/webapps/examples
[esup@test]$ rm -rf /esup/tomcat6/webapps/host-manager
[esup@test]$ rm -rf /esup/tomcat6/webapps/ROOT
[esup@test]$ rm -rf /esup/tomcat6/conf/Catalina

Cassifier le manager Tomcat

Créer un dossier de librairies dans le manager

...

Bloc de code
[esup@test]$ cd /tmp
[esup@test]$ wget http://www.apache.org/dist/xerces/j/binaries/Xerces-J-bin.2.9.1.tar.gz
[esup@test]$ tar -zxvf Xerces-J-bin.2.9.1.tar.gz
[esup@test]$ cp xerces-2_9_1/xercesImpl.jar /esup/tomcat6/webapps/manager/WEB-INF/lib
[esup@test]$ rm -rf /tmp/xerces-2_9_1

Filtre d'authentification

Copier la classe java SimpleCASAuthorizationFilter dans le manager.

...

Bloc de code
[esup@test]$ cp /esup/webapps/uPortal/WEB-INF/classes/org/esupportail/portal/utils/filter/SimpleCASAuthorizationFilter.class  /esup/tomcat6/webapps/manager/WEB-INF/classes/org/esupportail/portal/utils/filter/SimpleCASAuthorizationFilter.class

web.xml du manager

Bloc de code
[esup@test]$ vi /esup/tomcat6/webapps/manager/WEB-INF/web.xml

Les

...

filtres CAS

Attention au serverName, casServerLoginUrl, casServerUrlPrefix, LOGIN, LOGIN 2 (personne autorisées)

Bloc de code
<!-- Server Name -->
<context-param>
  <param-name>serverName</param-name>
  <param-value>XXXXXXXXX</param-value>
</context-param>

<filter>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
</filter>

<!-- CAS Authentication Filter -->
<filter>
  <filter-name>CASFilter</filter-name>
  <filter-class>
    org.jasig.cas.client.authentication.AuthenticationFilter
  </filter-class>
  <init-param>
    <param-name>casServerLoginUrl</param-name>
    <param-value>https://XXXXX/cas/login</param-value>
  </init-param>
</filter>

<!-- CAS Validation Filter -->
<filter>
  <filter-name>CASValidation</filter-name>
  <filter-class>
    org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
  </filter-class>
  <init-param>
    <param-name>casServerUrlPrefix</param-name>
    <param-value>https://XXXXX/cas</param-value>
  </init-param>
  <init-param>
    <param-name>redirectAfterValidation</param-name>
    <param-value>true</param-value>
  </init-param>
</filter>

<!-- CAS Wrapper Filter -->
<filter>
  <filter-name>CASWrapper</filter-name>
  <filter-class>
    org.jasig.cas.client.util.HttpServletRequestWrapperFilter
  </filter-class>
</filter>

<filter>
  <filter-name>AuthzFilter</filter-name>
  <filter-class>org.esupportail.portal.utils.filter.SimpleCASAuthorizationFilter</filter-class>
  <init-param>
    <param-name>org.esupportail.portal.utils.filter.authorizedUsers</param-name>
    <param-value>LOGIN1 LOGIN2 ...</param-value>
  </init-param>
</filter>

Les mappings

Bloc de code
<filter-mapping>
  <filter-name>CAS Single Sign Out Filter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- CAS Authentication Filter Mapping -->
<filter-mapping>
  <filter-name>CASFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- CAS Validation Filter Mapping -->
<filter-mapping>
  <filter-name>CASValidation</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<!-- CAS Wrapper Filter Mapping -->
<filter-mapping>
  <filter-name>CASWrapper</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<filter-mapping>
  <filter-name>AuthzFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

Le Listener

Bloc de code
<listener>
  <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
</listener>

Nettoyage web.xml

Supprimer les parties :

  • <resource-env-ref>...</resource-env-ref>
  • <security-constraint>...</security-constraint>
  • <login-config>...</login-config>
  • <security-role>...</security-role>

Les logs Tomcat

Modifier le fichier logging.properties pour :

  • Ne plus logguer à la console mais uniquement dans un fichier
  • Tourner automatiquement les fichiers quand ils font plus de 10Mo
  • Garder seulement 7 fichiers (donc 70Mo)
  • Passer le niveau de log en WARNING
  • N'avoir qu'un seul fichier
    Bloc de code
    [esup@test]$ vi /esup/tomcat6/connf/logging.properties
    
    # see http://tomcat.apache.org/tomcat-6.0-doc/logging.html
    handlers = 1catalina.java.util.logging.FileHandler
    .handlers = 1catalina.java.util.logging.FileHandler
    .level= WARNING
    
    1catalina.java.util.logging.FileHandler.pattern =  ${catalina.base}/logs/catalina.%g.log
    1catalina.java.util.logging.FileHandler.limit = 10485760
    1catalina.java.util.logging.FileHandler.count = 7
    1catalina.java.util.logging.FileHandler.append=true
    1catalina.java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
    
    # Pour avoir les ligne de démarrage
    org.apache.catalina.startup.Catalina.level=INFO
    # Pour avoir les ligne d'arrêt
    org.apache.catalina.core.StandardService.level=INFO
    
    # Pour avoir les manger de ce qui est fait au niveau manager
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
    

Installation de LamdaProbe

Bloc de code
[esup@test]$ cd /tmp
[esup@test]$ wget http://www.lambdaprobe.org/downloads/1.7/probe.1.7b.zip
[esup@test]$ unzip probe.1.7b.zip
[esup@test]$ mkdir /esup/webapps/probe
[esup@test]$ cd /esup/webapps/probe
[esup@test]$ unzip /tmp/probe.war

Context tomcat

Balise Wiki
Modifier le server.xml \[/esup/tomcat6/conf/server.xml\]
Ajouter le contexte dans tomcat

Bloc de code
<Context path="/probe"
         docBase="/esup/webapps/probe"
         reloadable="false"
         privileged="true">
    <Manager pathname=""/>
</Context>

Cassfication

...

Vous pouvez vous reporter à la partie "Cassifier le manager Tomcat" qui s'en rapproche fortement

Bloc de code

[esup@test]$ cd /tmp
[esup@test]$ wget http://www.ja-sig.org/downloads/cas-clients/cas-client-3.1.10-release.tar.gz
[esup@test]$ tar -zxvf cas-client-3.1.10-release.tar.gz
[esup@test]$ cp cas-client-3.1.10/modules/cas-client-core-3.1.10.jar /esup/webapps/probe/WEB-INF/lib
[esup@test]$ cp cas-client-3.1.10/modules/commons-logging-1.1.jar /esup/webapps/probe/WEB-INF/lib
[esup@test]$ rm -rf /tmp/cas-client-3.1.10

[esup@test]$ cd /tmp
[esup@test]$ wget http://www.apache.org/dist/xerces/j/binaries/Xerces-J-bin.2.9.1.tar.gz
[esup@test]$ tar -zxvf Xerces-J-bin.2.9.1.tar.gz
[esup@test]$ cp xerces-2_9_1/xercesImpl.jar /esup/webapps/probe/WEB-INF/lib
[esup@test]$ rm -rf /tmp/xerces-2_9_1

[esup@test]$ cp /esup/webapps/uPortal/WEB-INF/classes/org/esupportail/portal/utils/filter/SimpleCASAuthorizationFilter.class  /esup/webapps/probe/WEB-INF/classes/org/esupportail/portal/utils/filter/SimpleCASAuthorizationFilter.class

[esup@test]$ vi /esup/webapps/probe/WEB-INF/web.xml

# se reporter à la partie "Les filtres CAS" > "Cassifier le manager Tomcat"
# se reporter à la partie "Les mappings" > "Cassifier le manager Tomcat"
# se reporter à la partie "Le Listener" > "Cassifier le manager Tomcat"

Nettoyage web.xml

Supprimer les parties :

  • <security-constraint>...</security-constraint>
  • <login-config>...</login-config>
  • <security-role>...</security-role>