Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)

Doc/Jubilo

De AJLSM
Version datée du 17 février 2015 à 10:28 par Mdia (discussion | contributions)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche
Notice :
Application sous contrat de Maintenance.
To do :
Migration vers le Nouveau serveur.

Le DSI travail avec les outils de et systèmes de HP. Dans leur infrastructure, seul le serveur URE est installé avec Ubuntu. Cela pose quelques problèmes de communication.

Le montage du disque numbu a été effectué avec ISCSI voir http://www.cyberciti.biz/faq/howto-setup-debian-ubuntu-linux-iscsi-initiator/

Description Valeur Commentaire
Adresse IP 134.157.146.59 -
Nom de domaine jubilotheque.upmc.fr -
Tomcat production 8080 -
Tomcat recette 9090 -
SSH 22 -

Utilisateurs Unix

[modifier | modifier le wikicode]
Utilisateur Description
root gestion du serveur (UPMC)
adminpleade gestion de l'application (AJLSM)
backupAgent gestion des sauvegardes (AJLSM)

Les sauvegardes sont gérées par l'utilisateur backupAgent et les fichiers sont dans le répertoire /home/backupAgent.

-- backups
|   |-- *-upmc-*-meta.tar
|   `-- theme-2012-jun-11.tar.gz
|-- logs
|   |-- *.log
|-- shell-scripts
|   |-- backup
|   |   |-- backup.README
|   |   |-- backup.sh
|   |   |-- credentials-upmc-back.sh
|   |   |-- credentials-upmc-front.sh
|   |   `-- path.sh
|   |-- clean-filename.sh
|   |-- colunm-position.sh
|   |-- confExtractor.sh
|   |-- convert-retroconvert.sh
|   |-- find-and-full-convert.sh
|   |-- flushTomcatCache.sh
|   |-- httpd-maintenance
|   |   |-- README
|   |   |-- maintenance.html
|   |   `-- maintenance.vhost.conf
|   |-- indexation-cassandre.sh
|   |-- installer.sh
|   |-- pretraitement_images_ad84.sh
|   |-- projet-vhost.conf
|   |-- restartTomcat.sh
|   `-- toolbox.sh
`-- tmp
Description Valeur Commentaire
OS Red Hat Enterprise Linux Server 5.8 (Tikanga) (amd64)
  • tous les logiciels proviennent du dépot debian.
  • sauvegarde ?
Java 1.6.0_21 /opt/jdk1.6.0_21/, défini dans /opt/tomcat6-*/bin/catalina.sh
Tomcat 6.0.29
  • version télécharger sur le site officiel
  • 2 instances ont été créée (front, back)
Apache 2.2.3+65.el5_8 issu des dépôts
Imagemagick 6.2.8.0+15.el5_8 issu des dépôts
Postgresql 8.1.23+6.el5_8 issu des dépôts

Résolutions de problèmes courants

[modifier | modifier le wikicode]
  • le serveur tomcat à souvent des problèmes rendant l'application inaccessible. Un simple redémarrage suffit.

Pas de Tomcat le lundi

[modifier | modifier le wikicode]

Après des tests il s'avère que ce n'est pas lier au redémarrage du dimanche.

Bonjour,
Nous constatons des irrégularités dans les arrêts du serveur Corvette.
Pouvez-vous nous dire si une intervention externe :
* arrête le serveur Corvette ?
* travaille Corvette ?

Le log /var/log/kern.log indique les choses suivantes :
Le vendredi, le serveur s'arrête au environ de 07:10, comme c'est prévu par les crons, et redémarre en suivant :
    Nov 30 07:07:20 corvette kernel: audit(1354255640.024:4635): audit_pid=0 old=2784 by auid=4294967295
    Nov 30 07:07:21 corvette kernel: Kernel logging (proc) stopped.
    Nov 30 07:07:21 corvette kernel: Kernel log daemon terminating.
    Nov 30 07:10:01 corvette kernel: klogd 1.4.1, log source = /proc/kmsg started.

Par contre samedi, aucune trace de l'arrêt prévu et un démarrage 30 minutes plus tard :

    Nov 30 07:10:58 corvette kernel: mtrr: type mismatch for fc000000,800000 old: uncachable new: write-combining
    Dec  1 07:37:57 corvette kernel: klogd 1.4.1, log source = /proc/kmsg started.

On fait le même constat dans le log /var/log/messages*

    Nov 30 07:07:21 corvette kernel: Kernel logging (proc) stopped.
    Nov 30 07:07:21 corvette kernel: Kernel log daemon terminating.
    Nov 30 07:07:22 corvette exiting on signal 15
    Nov 30 07:10:01 corvette syslogd 1.4.1: restart.

Là encore aucune trace de l'arrêt programmer à 07:00~07:10

    Nov 30 16:48:01 corvette auditd[2784]: Audit daemon rotating log files
    Dec  1 07:37:57 corvette syslogd 1.4.1: restart.

Points de montage

[modifier | modifier le wikicode]

Voici les ajouts que dont nous avons besoin dans le fichier /etc/fstab pour que l'application fonctionne comme voulu.

/home/adminpleade/data/conversion       /home/jubilo/conversion  none    bind 0 0

# BackupAgent
/home/ajlsm/shell-scripts/      /home/backupAgent/shell-scripts/    none    bind    0   0

# BACK
/home/adminpleade/data/upmc-back/ead                                            /home/jubilo/back-ead                           none    bind 0 0
/home/adminpleade/apps/upmc-back/module-eadeac/conf/search-forms                /home/jubilo/back-search-forms                  none    bind 0 0
/home/adminpleade/apps/upmc-back/theme                                          /home/jubilo/back-theme                         none    bind 0 0

# FRONT
/home/adminpleade/data/upmc-front/ead                                           /home/jubilo/front-ead                          none    bind 0 0
/home/adminpleade/apps/upmc-front/module-eadeac/conf/search-forms               /home/jubilo/front-search-forms                 none    bind 0 0
/home/adminpleade/apps/upmc-front/theme                                         /home/jubilo/front-theme                        none    bind 0 0

Liens symboliques

[modifier | modifier le wikicode]
Important :
Les points de montages s'appuient sur les liens symboliques suivants. Il est critique de maintenir ces liens sous peine de bloquer les accès client au fichiers de theme, i18n, etc.
/home/adminpleade/apps/upmc-back -> upmc-v0.5.1-back.2012-nov-06
/home/adminpleade/apps/upmc-front -> /home/adminpleade/apps/pleade-prod-current


Nous avons également besoin de rajouter des liens symbolique pour que la cliente puisse éditer certains fichiers. Cette liste est soumise à évolution et n'est présente qu'a titre d'exemple :

ll /home/jubilo/*-config
lrwxrwxrwx 1 root root 77 Jul 16 20:03 collections.xconf -> /home/adminpleade/apps/upmc-back/module-eadeac/conf/subsets/collections.xconf
lrwxrwxrwx 1 root root 63 Jul 16 20:03 menus.xconf -> /home/adminpleade/apps/upmc-back/module-eadeac/conf/menus.xconf

front-config:
total 8
lrwxrwxrwx 1 root root 78 Jul 16 20:04 collections.xconf -> /home/adminpleade/apps/upmc-front/module-eadeac/conf/subsets/collections.xconf
lrwxrwxrwx 1 root root 64 Jul 16 20:04 menus.xconf -> /home/adminpleade/apps/upmc-front/module-eadeac/conf/menus.xconf


Redémarrage du serveur

[modifier | modifier le wikicode]

Un redémarrage du serveur est programmé tout les lundi matins. On consultera également la section concernant Tomcat#Arrêt du serveur.

#30 1 * * * /sbin/service tomcat restart                                                                                  
# reboot on sunday
#@weekly /root/reboot.sh
# Démarrage de HTTPd pour prendre en compte le démarrage de Tomcat
@reboot sleep 15m; /etc/init.d/httpd restart

Nous mettons en place une sauvegarde journalière de l'application et de ses données. Pour cela on commence par modifier le crontab :

@daily /home/backupAgent/shell-scripts/backup/backup.sh upmc-front 2>&1 | tee -a "/home/backupAgent/logs/backup-$(date '+\%Y-\%b-\%d').log"
#@daily /home/backupAgent/shell-scripts/backup/backup.sh upmc-back 2>&1 | tee -a "/home/backupAgent/logs/backup-$(date '+\%Y-\%b-\%d').log"
Notice :
De façon à pouvoir scripter les sauvegardes, il est nécessaire de modifier les configurations de postgreSQL, ceci est documenté dans la documentation Pleade.

Expiration des sauvegardes

[modifier | modifier le wikicode]
Important :
Au vu de l'application, de l'espace disque disponible et de la taille des sauvegardes (2-3Go), nous avons ne pouvons maintenir les sauvegardes des 30 derniers jours. On ne conservera que les 20 derniers jours.

Localisation des serveur

[modifier | modifier le wikicode]
Description Production Recettage
Emplacement /opt/tomcat6-front/ /opt/tomcat6-back/

Ports d'écoutes

[modifier | modifier le wikicode]
Type de Port Production Recettage
arrêt 8005 9005
écoute (connecteur HTTP) 8080 9090
redirection (connecteur HTTP) 8443 9443
écoute (connecteur AJP/1.3) 8009 9009
redirection (connecteur AJP/1.3) 8443 9443

Liens vers l'application

[modifier | modifier le wikicode]
Production Recettage
ln -s "$HOME"/apps/upmc-front /opt/tomcat6-front/webapps/upmc-front
ln -s "$HOME"/apps/upmc-back /opt/tomcat6-back/webapps/upmc-back

Configuration du serveur : server.xml

[modifier | modifier le wikicode]
Production Recettage
    <Connector port="8080" protocol="HTTP/1.1"
		connectionTimeout="20000"
		redirectPort="8443"
		emptySessionPath="true"
	/>

    <Connector port="8009" protocol="AJP/1.3"
		redirectPort="8443"
		emptySessionPath="true"
	/>
    <Connector port="9090" protocol="HTTP/1.1"
		connectionTimeout="20000"
		redirectPort="9443"
		emptySessionPath="true"
	/>

    <Connector port="9009" protocol="AJP/1.3"
		redirectPort="9443"
		emptySessionPath="true"
	/>

Allocation de mémoire

[modifier | modifier le wikicode]
Production Recettage
-Dfile.encoding=UTF-8 -Xmx3000m -XX:MaxPermSize=128m -XX:NewSize=300m -Djava.awt.headless=true -server
-Dfile.encoding=UTF-8 -Xmx500m -XX:MaxPermSize=128m -XX:NewSize=300m -Djava.awt.headless=true -server

Scripts et redémarrage automatique

[modifier | modifier le wikicode]

On mettra en place des taches cron pour que le serveur Apache Tomcat redémarre après le redémarrage du serveur physique. On consultera également la section Serveur#Redémarrage du serveur .

Description Production Recettage
Script
#!/bin/bash
TOMCAT_HOME="/opt/tomcat6-front"

"$TOMCAT_HOME"/bin/catalina.sh stop -force
/bin/rm "$TOMCAT_HOME"/bin/catalina.pid
/bin/rm -rf "$TOMCAT_HOME"/temp/*
/bin/rm -rf "$TOMCAT_HOME"/work/*
"$TOMCAT_HOME"/bin/startup.sh
#!/bin/bash
#!/bin/bash
TOMCAT_HOME="/opt/tomcat6-back"

"$TOMCAT_HOME"/bin/catalina.sh stop -force
/bin/rm "$TOMCAT_HOME"/bin/catalina.pid
/bin/rm -rf "$TOMCAT_HOME"/temp/*
/bin/rm -rf "$TOMCAT_HOME"/work/*
"$TOMCAT_HOME"/bin/startup.sh
Redémarrage
"$AJLSM_HOME"/restartProd.sh
"$AJLSM_HOME"/restartRecette.sh
SHELL=/bin/bash
30 23 * * * $HOME/restartProd.sh
#30 23 * * * $HOME/restartRecette.sh

# le serveur Corvette change de baie de stockage (2012-oct-10) :
#0 14 10 10 3 /opt/tomcat6-front/bin/catalina.sh stop -force 
#@reboot /opt/tomcat6-front/bin/catalina.sh start
@reboot $HOME/restartProd.sh
Description Production Recettage
Port d'écoute 80 80 (même port)

Production & Recettage

[modifier | modifier le wikicode]
#<VirtualHost *:80>
#        ServerName jubilotheque.upmc.fr

#        ProxyPass /upmc-back/ ajp://localhost:9009/upmc-back/
#        ProxyPassReverse /upmc-back/ ajp://localhost:9009/upmc-back/
#</VirtualHost>


# Hôte virtuel par défaut
<VirtualHost *:80>
        ServerName jubilotheque.upmc.fr

        #redirections pour l'ancien site
#       RewriteEngine On
#       RewriteRule ^pl/doc-tdm\.xsp?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.* /ead.html?c=$1_page$2 [R=301,L]
#       RewriteRule ^pl/toc\.xsp?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.* /ead.html?c=$1_page$2 [R=301,L]
#       RewriteRule ^pl/toc\.xsp?id=([A-Z]+_[0-9]+_[0-9]+)&.* /ead.html?id=$1 [R=301,L]
#       RewriteRule ^repons/.* http://www.jubil.upmc.fr [R=301,L]
#       RewriteRule ^pro/.* http://www.jubil.upmc.fr [R=301,L]
#       RewriteRule ^portal/.* http://www.jubil.upmc.fr [R=301,L]
#       RewriteRule ^/repons/.* http://www.jubil.upmc.fr [R=301,L]
#       RewriteRule ^/pro/.* http://www.jubil.upmc.fr [R=301,L]
#       RewriteRule ^/portal/.* http://www.jubil.upmc.fr [R=301,L]

#       RedirectMatch permanent ^/?sdx/pl/toc\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.*$ http://jubilotheque.upmc.fr/ead.html?c=$1_page$2
#       RedirectMatch permanent ^/?sdx/pl/toc\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)&.*$ http://jubilotheque.upmc.fr/ead.html?id=$1
#       RedirectMatch permanent ^/?sdx/pl/doc-tdm\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.*$ http://jubilotheque.upmc.fr/ead.html?c=$1_page$2
#       RedirectMatch permanent ^/?pl/toc\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.*$ http://jubilotheque.upmc.fr/ead.html?c=$1_page$2
#       RedirectMatch permanent ^/?pl/toc\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)&.*$ http://jubilotheque.upmc.fr/ead.html?id=$1
#       RedirectMatch permanent ^/?pl/doc-tdm\.xsp\?id=([A-Z]+_[0-9]+_[0-9]+)_page([^&]+)&.*$ http://jubilotheque.upmc.fr/ead.html?c=$1_page$2

        # Application de recette
        ProxyPass /upmc-back/ ajp://localhost:9009/upmc-back/
        ProxyPassReverse /upmc-back/ ajp://localhost:9009/upmc-back/

        # Application de prodiction
        ProxyPass / ajp://localhost:8009/upmc/
        ProxyPassReverse / ajp://localhost:8009/upmc/
</VirtualHost>
# activation des hôtes virtuels
NameVirtualHost *:80

<VirtualHost *:80>
# comment/un-comment this line to disable/enable maintenance mode
        ServerName jubilotheque.upmc.fr

        ## Maintenance ##
        RewriteEngine On

        Alias /maintenance.html /home/adminpleade/apps/maintenance/maintenance.html
        Alias /upmc-logotype.png /home/adminpleade/apps/maintenance/upmc-logotype.png
        RewriteCond %{REQUEST_URI} !maintenance.html
        RewriteCond %{REQUEST_URI} !upmc-logotype.png

        # Access de test pour AJLSM
        RewriteCond %{REMOTE_ADDR} !82.225.177.85

        RewriteRule ^/(.*) /home/adminpleade/apps/maintenance/maintenance.html [L]
        RewriteRule ^/upmc-logotype.png /home/adminpleade/apps/maintenance/upmc-logotype.png [L]

        ProxyPass / ajp://localhost:8009/upmc/
        ProxyPassReverse / ajp://localhost:8009/upmc/

        ErrorLog /home/adminpleade/apps/maintenance/error.log
        CustomLog /home/adminpleade/apps/maintenance/access.log combined
</VirtualHost>

Application Pleade

[modifier | modifier le wikicode]
/home/adminpleade/
|-- apps
|   |-- applis-server-20121115
|   |-- maintenance
|   |-- pleade-jubilo-v2.1-20121115
|   |-- pleade-prod-current -> pleade-jubilo-v2.1-20121115
|   |-- upmc-back -> upmc-v0.5.1-back.2012-nov-06/ ################# IMPORTANT POUR LES POINTS DE MONTAGE !!
|   |-- upmc-front -> pleade-prod-current          ################# IMPORTANT POUR LES POINTS DE MONTAGE !!
|   `-- upmc-v0.5.1-back.2012-nov-06
|-- data
|   |-- conversion -> /mnt/numbu
|   |-- upmc-back
|   |-- upmc-front
|   `-- upmc-front-2012-may-02.old
|-- logs
|   |-- upmc-back -> /home/adminpleade/apps/upmc-back/WEB-INF/logs
|   `-- upmc-front -> /home/adminpleade/apps/upmc-front/WEB-INF/logs
|-- misc-backups
|   |-- backup-webapp-20111215
|   |-- install
|   |-- patch-tri-20111215
|   |-- upmc-v0.2-20100914
|   `-- upmc-v0.3-20110118
|-- sdx-data
|   |-- upmc-back
|   |-- upmc-back.pre-2012-nov-06
|   `-- upmc-front
`-- shell-scripts
    |-- backup
    |-- httpd-maintenance
    `-- logs

Utilisateurs Pleade

[modifier | modifier le wikicode]

Paramètres spéciaux

[modifier | modifier le wikicode]

Production : $HOME/apps/upmc-front/

[modifier | modifier le wikicode]
./WEB-INF/properties/pleade-admin.properties
[modifier | modifier le wikicode]
pleade.url-interne=http://localhost:9090/upmc-front/
# pleade.public-url=http://localhost:9090/upmc-front/
pleade.public-url=http://jubilotheque.upmc.fr/upmc-front/
pleade.sdx-data-dir=file:///home/adminpleade/sdx-data/upmc-front
pleade.sdx-database=POSTGRESQL:db_front
pleade.sdx-ead-repository=POSTGRESQL:db_front
pleade.sdx-eac-repository=POSTGRESQL:db_front
pleade.ead-docs-dir=/home/adminpleade/data/upmc-front/ead/
./WEB-INF/cocoon.xconf
[modifier | modifier le wikicode]
<datasources>
	<jdbc name="db_front" logger="sdx.rdbms.pleade3">
		<pool-controller min="5" max="100" />
		<dburl>jdbc:postgresql://localhost/upmc_front</dburl>
		<!-- INFO (MP) : JDBC URL pour MySQL. La difficulté est de résoudre le
		problème des pertes de connexion lorsque l'application montre une
		inactivité de plus de 8 heures (valeur par défaut dans MySQL). Ici, on la
		règle à 24 heures.
		<dburl>jdbc:mysql://localhost/pleade3?autoReconnectForPools=true&amp;sessionVariables=wait_timeout=86400;</dburl>-->
		<user>app_front</user>
		<password>app:/fr0nt</password>
	</jdbc>
</datasources>

Recette : $HOME/apps/upmc-back

[modifier | modifier le wikicode]
./WEB-INF/properties/pleade-admin.properties
[modifier | modifier le wikicode]
pleade.url-interne=http://localhost:9090/upmc-back/
# pleade.public-url=http://localhost:9090/upmc-back/
pleade.public-url=http://jubilotheque.upmc.fr/upmc-back/
pleade.sdx-data-dir=file:///home/adminpleade/sdx-data/upmc-back
pleade.sdx-database=POSTGRESQL:db_back
pleade.sdx-ead-repository=POSTGRESQL:db_back
pleade.sdx-eac-repository=POSTGRESQL:db_back
pleade.ead-docs-dir=/home/adminpleade/data/upmc-back/ead/
./WEB-INF/cocoon.xconf
[modifier | modifier le wikicode]
<datasources>
	<jdbc name="db_back" logger="sdx.rdbms.pleade3">
		<pool-controller min="5" max="100" />
		<dburl>jdbc:postgresql://localhost/upmc_back</dburl>
		<!-- INFO (MP) : JDBC URL pour MySQL. La difficulté est de résoudre le
		problème des pertes de connexion lorsque l'application montre une
		inactivité de plus de 8 heures (valeur par défaut dans MySQL). Ici, on la
		règle à 24 heures.
		<dburl>jdbc:mysql://localhost/pleade3?autoReconnectForPools=true&amp;sessionVariables=wait_timeout=86400;</dburl>-->
		<user>app_back</user>
		<password>app:/b4ck</password>
	</jdbc>
</datasources>

Lien PDF dans l'entête

[modifier | modifier le wikicode]

Jubilo surcharge le comportement natif de Pleade pour la gestion des PDF. Lorsqu'une page d'IR est servi on génère la liste des PDFs contenu dans ${pleade.conversion-ead-dir/{1}/Contenu/PDF-bin.

L'application fonctionne bien, à l'exception du lien permettant le téléchargement du document complet (pdf),
voir copie d'écran ci-joint. Ce dysfonctionnement m'a aussi été signalé par un utilisateur.

Le code pour générer la liste de PDF s'appuie sur le pipeline suivant (local.xmap) :

<!-- Traitement de pdf -->
<map:pipeline id="list-pdf" type="caching" internal-only="${pleade.internal-only}">
  <!--Création d'un fichier xml qui va lister les documents pdf contenus dans les fichier Contenu/PDF-bin-->
  <map:match pattern="**/pdfdir.xml">
    <!--repertoire où se trouvent les pdf-->
    <map:generate type="directory" src="${pleade.conversion-ead-dir}/{1}/Contenu/PDF-bin">
      <map:parameter name="include" value="^.*\.(pdf|PDF)$"/>
    </map:generate>
    <map:serialize type="xml"/>
  </map:match>
</map:pipeline>

Qui génère un flux XML listant les fichiers PDF de l'IR donné. Cette liste utilise le paramètre pleade.conversion-ead-dir qui doit être accessible. Dans ce cas, j'ai changé la structure des dossier dans le serveur, sans mettre à jour ce paramètre rendant l'accès au dossier et donc génération de la liste impossible. Voici la nouvelle valeur :

pleade.conversion-ead-dir=/home/adminpleade/data/conversion/

Ce pipeline est utilisé dans local-ead2html.xsl, local-ead2html-toolskit.xsl et pformats2ead.xsl.