Il y a 389 articles et 19 utilisateurs inscrits (ce bandeau est défini dans MediaWiki:Sitenotice)
Doc/Jubilo
SAN
[modifier | modifier le wikicode]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/
Serveur
[modifier | modifier le wikicode]| 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) |
Sauvegarde
[modifier | modifier le wikicode]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
Logiciels
[modifier | modifier le wikicode]| Description | Valeur | Commentaire |
|---|---|---|
| OS | Red Hat Enterprise Linux Server 5.8 (Tikanga) (amd64) |
|
| Java | 1.6.0_21 | /opt/jdk1.6.0_21/, défini dans /opt/tomcat6-*/bin/catalina.sh |
| Tomcat | 6.0.29 |
|
| 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]/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
Sauvegardes
[modifier | modifier le wikicode]Crontab
[modifier | modifier le wikicode]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"
Expiration des sauvegardes
[modifier | modifier le wikicode]Tomcat
[modifier | modifier le wikicode]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
|
Crontab
[modifier | modifier le wikicode]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
Apache
[modifier | modifier le wikicode]| 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>
Maintenance
[modifier | modifier le wikicode]# 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]Emplacement
[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&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&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.
Explication
[modifier | modifier le wikicode]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.