i-Parapheur – installation

Ce document vise Ă  fournir un fil conducteur pour l'installation de l'application i-Parapheur. C'est un guide d'installation-type, Ă  destination de techniciens expĂ©rimentĂ©s, Ă  suivre et adapter selon l'environnement d'exploitation (systĂšme d'exploitation, contraintes rĂ©seau, etc.). Ce guide dĂ©taille l'installation sur plate-forme GNU/Linux en gĂ©nĂ©ral, Ubuntu Server en particulier. Je l'ai suivi pour valider l'installation d'i-parapheur au vice-rectorat de la Nouvelle-CalĂ©donie puisque je l'avais dĂ©jĂ  installĂ© auparavant. Cette documentation, de grande qualitĂ©, m'a permis de valider notre installation mais peut servir de rĂ©fĂ©rence pour plein d'autres choses (certificat, alfresco, etc). La licence est sous Creative Commons CC-BY-SA, le rĂ©dacteur est StĂ©phane Vast - Chef Produit i-Parapheur ([email protected]) pour adullact (http://paraphelec.adullact.net/).

AprĂšs diverses recherches sur le Web, j’ai pu trouver une documentation pour l’installation d’i-Parapheur sur ubuntu au format PDF. Je reprends ici cette documentation. La licence est sous Creative Commons CC-BY-SA, le rĂ©dacteur est StĂ©phane Vast – Chef Produit i-Parapheur ([email protected]) pour adullact (http://paraphelec.adullact.net/), je n’en suis absolument pas l’auteur et je tiens Ă  indiquer que je trouve cette documentation de grande qualitĂ©.

PDF : i-Parapheur : documentation d'installation sous ubuntu server (1753 téléchargements )
Sources : i-Parapheur : fichier WAR et AMP (237 téléchargements )

Ce document vise Ă  fournir un fil conducteur pour l’installation de l’application i-Parapheur. C’est un guide d’installation-type, Ă  destination de techniciens expĂ©rimentĂ©s, Ă  suivre et adapter selon l’environnement d’exploitation (systĂšme d’exploitation, contraintes rĂ©seau, etc.).

Ce guide dĂ©taille l’installation sur plate-forme GNU/Linux en gĂ©nĂ©ral, Ubuntu Server en particulier.

Quelques ressources Web ayant servi de base à cette procédure :

http://wiki.alfresco.com/wiki/Installing_Alfresco_on_Ubuntu_7.10 (du 29 avr.2008)

Table of Contents

Architecture serveur

L’installation du serveur rĂ©clame un certain nombre de prĂ©-requis, autant de briques logicielles sur lesquelles va s’appuyer la solution i-Parapheur.

Quel que soit le systĂšme d’exploitation hĂŽte, i-Parapheur a besoin des composants suivants :

  • systĂšme d’exploitation 64bit, installĂ© en Français, configurĂ© avec encodage UTF-8,
  • serveur de base de donnĂ©es MySQL 5.1 ou plus rĂ©cent,
  • Les polices de caractĂšres standard de Microsoft pour aider Ă  la production de PDFs,
  • les utilitaires ‘unzip’, ‘tar’, ‘GhostScript’
  • serveur Web APACHE v2.2.17 ou mieux avec les modules SSL et PROXY_AJP, et donc OpenSSL
  • accĂšs Ă  un serveur de messagerie SMTP, optionnellement une boite aux lettres POP3
  • Alfresco 3.4.c Community (qui comprend SUN Java, ImageMagick, SwfTools, OpenOffice.org)

PrĂ©-Requis logiciels – plate-forme GNU/Linux

L’installation a Ă©tĂ© validĂ©e sur la plate-forme Ubuntu 12.04 Server LTS x64 (plate-forme supportĂ©e, et « support long terme » proposĂ© par la sociĂ©tĂ© Canonical Ltd.), Debian Squeeze et supĂ©rieur.

Le parapheur Ă©lectronique peut Ă©galement ĂȘtre installĂ© sur d’autres GNU/Linux : Fedora/ CentOS/ RedHat-ES, SUSE… sous rĂ©serve que les prĂ©-requis logiciels soient respectĂ©s, ou sous rĂ©serve de validation par les Ă©quipes techniques de l’ADULLACT. L’installation sur serveur Microsoftℱ n’est pas traitĂ©e dans ce document.

NB: Pendant l’installation, le serveur doit-ĂȘtre connectĂ© sur un rĂ©seau reliĂ© Ă  Internet afin de rĂ©cupĂ©rer et installer les derniĂšres mises-Ă -jour des composants logiciels disponibles.

SystĂšme opĂ©rateur – installation de Ubuntu Server

Localisation FR

Attribuer un nom de machine (pas de ‘_’ dans le nom) : 

exemple : iparapheur

Sélection de logiciels: choisir OpenSSH server

Exemple de partitionnement (HD de 300Go) :

/ 30G swap 2G
/opt200G<--- ici sera l'entrepĂŽt
/var70G<--- ici sera la Base de Données

NB : Les binaires d’installation seront dĂ©posĂ©s par convention dans /opt/_install .

Configuration du systÚme Ubuntu, connecté à Internet

VĂ©rifier et mettre Ă  jour les dĂ©pĂŽts (repository) de logiciels avec les privilĂšges administrateur: 

$ sudo -s
#root > vi /etc/apt/sources.list

Commenter en prĂ©fixant avec le caractĂšre ‘#’ la ligne spĂ©cifiant le chemin du CD-ROM : 

deb cdrom:[Ubuntu-Server 12.04 _Precise Pangolin_ - ...]/ precise main restricted

et s’assurer de la prĂ©sence des dĂ©pĂŽts universe et multiverse (normalement dĂ©jĂ  activĂ©s):

deb http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ precise-security main restricted universe multiverse

(ajouter le ou les dépÎts manquants et adapter le repository à votre distribution)

Debian : activer les repos ‘main’ ‘contrib’, ‘non-free’ .Pour le dĂ©pĂŽt ‘backports’ (pour OOo) nouvelle ligne :

deb http://backports.debian.org/debian-backports/ squeeze-backports main contrib non-free
apt-get install debian-backports-keyring

Mise Ă  jour du systĂšme :

#root > apt-get update
#root > apt-get -s dist-upgrade # Simulation
#root > apt-get dist-upgrade # Mise Ă  jour

NB: ÉlĂ©ments de confort (Ă©diteur de texte, complĂ©tion) :

#root > apt-get install vim-nox # coloration syntaxique dans vi
#root > vi /etc/bash.bashrc # pour régler la complétion automatique

NB: en cas de mise Ă  jour du kernel ( ‘linux-image….’), rebooter:

#root > reboot

Installation des pré-requis logiciels

Base de données MySQL (sauf si il existe un service externalisé) :

#root > apt-get install mysql-server

Quelques outils nécessaires :

#root > apt-get install ntp xfonts-base psmisc unzip 
#root > apt-get install ghostscript gsfonts

Si RedHat/CentOS: installer composants xorg-x11-fonts-Type1 libXext

OPTION: Polices de caractùres TTF standard Microsoftℱ (pour la transformation de documents):

#root > apt-get install ttf-mscorefonts-installer x-ttcidfont-conf

OPTION: JAVA: installer le JDK6 depuis le site java.com de Oracle (NB : java est livré avec Alfresco) :

#root > mkdir /opt/java ; cd /opt/java ; chmod +x /opt/_install/jdk-6u43-linux-x64.bin
#root > /opt/_install/jdk-6u43-linux-x64.bin

Vérifier que cette version est bien reconnue:

#root > java -version

Sinon, rĂ©gler le problĂšme avec ‘update-alternatives’ :

#root > update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.6.0_43/bin/java" 1

Puis ajouter si nĂ©cessaire la ligne suivante dans /etc/profile : 

export LC_ALL=fr_FR.UTF-8

Il est important de s’assurer que c’est la version Oracle/SUN de JAVA qui sera utilisĂ©e.

Installation d’un serveur de courrier Ă©lectronique

Cette Ă©tape est nĂ©cessaire en l’absence d’un serveur de messagerie directement exploitable:

#root > apt-get install postfix bsd-mailx

Vérifier le nom de domaine dans /etc/mailname , puis redémarrer postfix:

#root > /etc/init.d/postfix reload

OPTION: si utilisation du ‘Email-Service’ de i-parapheur pour l’injection de formulaires, il faut installer

un serveur POP3 (voir http://doc.ubuntu-fr.org/pop pour les détails la configuration):

#root > apt-get install dovecot-common dovecot-pop3d

Éditer le fichier de configuration /etc/dovecot/dovecot.conf, et modifier les lignes: 

protocols = pop3
mail_location = mbox:~/mail:INBOX=/var/mail/%u:INDEX=MEMORY

Remarque : Sur Debian , c’est le MTA exim qui est installĂ© par dĂ©faut. Voir :

jerome.colombet.free.fr/?2010/05/28/103–debian-configurer-exim4-vers-un-relais

Installation du serveur Web Apache2

Composant logiciel nécessaire pour traiter les connexions sécurisées.

L’installation se fait avec la ligne suivante :

#root > apt-get install apache2 ca-certificates

Sur RedHat4 : 

up2date -i httpd 

Sur RedHat5 : 

yum install httpd

Remarque pour Debian : il est possible pour Debian 5 (Lenny) ou 6 (Squeeze) de forcer l’installation d’une version plus rĂ©cente pour Apache, en configurant APT (pinning de repository).

#root > apt-get install -t unstable openssl apache2

Remarque pour RedHat/CentOS : Apache est requis dans sa version la plus récente possible (v2.2.17 ou plus récent pour bénéficier de toutes les optimisations de paramétrage). Ces versions récentes ne sont pas fournies en standard par les distributions RedHat et CentOS (la version 5.x ne fournit que Apache 2.2.3 en standard!). Un contournement possible consiste à utiliser un dépÎt logiciel alternatif :

Si RedHat 5.4 32bits (au 14/08/2011): la source est http://pkgs.org/centos-5-rhel-5/centalt-i386/

httpd-2.2.22-1.el5.i386.rpm
httpd-tools-2.2.22-1.el5.i386.rpm
mod_ssl-2.2.22-1.el5.i386.rpm
apr-util-ldap-1.3.9-1.el5.i386.rpm
apr-util-1.3.9-1.el5.i386.rpm

Si RedHat 5.7 64bits (au 28/03/2012, les versions peuvent évoluer) :

apr-util-1.3.9-1.el5.x86_64.rpm
apr-util-ldap-1.3.9-1.el5.x86_64.rpm
httpd-2.2.22-1.el5.x86_64.rpm
httpd-tools-2.2.22-1.el5.x86_64.rpm
mod_ssl-2.2.22-1.el5.x86_64.rpm

(installer le dernier ‘centalt-release’ depuis http://centos.alt.ru/repository/centos/5/x86_64/ )

rpm -Uvh centalt-release*rpm
yum install httpd mod_ssl

Ressources : www.howtoforge.com/perfect-server-centos-5.7-x86_64-ispconfig-3

Installation et configuration du serveur Web Apache2

Activation des modules Apache2

Visualiser les modules actifs, et ajouter au besoin SSL et proxy_AJP :

#root > ls -l /etc/apache2/mods-enabled/ # Vérifier que le mod_ssl est présent.
#root > a2enmod ssl
#root > a2enmod proxy_ajp

Sur Debian : ajouter dans /etc/apache2/ports.conf :

Listen 443

Configuration des hĂŽtes virtuels HTTP et HTTPS

Sur une centos 4.4 ou RedHat : placer les vhost dans /etc/http/conf.d/*.conf

L’architecture impose un paramĂ©trage fin du serveur Web, au niveau du transfert des requĂȘtes entre le poste de travail et le serveur i-parapheur, ainsi que sur la gestion des accĂšs par certificat.

#root > cd /etc/apache2
#root > cp /opt/_install/confs/parapheur* sites-available # (copie des modĂšles de vhost)
#root > a2ensite parapheur # (activation du vhost HTTP)
#root > a2ensite parapheur.ssl # (activation du vhost HTTPS)

Dans les fichiers ‘vhost’ nommĂ©s par exemple « parapheur » et « parapheur.ssl », adapter les adresses IP, email, noms FQDN du serveur (dans cet exemple : iparapheur.ma-collectivite.fr), chemin d’accĂšs selon le contexte d’installation : respectivement les directives « VirtualHost », « ServerAdmin », « ServerName », voire « Directory » « Alias ».

Dans le répertoire /etc/apache2/ssl/ déposer le script recup_crl.sh qui téléchargera périodiquement la liste des autorités de certification reconnues par la plate-forme (dans un sous-répertoire validca):

#root > mkdir /etc/apache2/ssl; cd /etc/apache2/ssl/
#root > cp /opt/_install/confs/recup_crl.sh . ; chmod +x recup_crl.sh
#root > ./recup_crl.sh /etc/apache2/ssl

Dans le rĂ©pertoire /etc/apache2/ssl/ , installer le certificat SSL du serveur web Apache (2 fichiers : un certificat X509, et une clĂ© RSA). Celui-ci aura Ă©tĂ© acquis au prĂ©alable auprĂšs d’une autoritĂ© de certification compĂ©tente, ou Ă  dĂ©faut auprĂšs d’une AC de moindre confiance (locale et auto-signĂ©e).

Une fois le certificat installé et dûment référencé dans le fichier VirtualHost « parapheur.ssl », vérifier que Apache fonctionne et écoute bien sur le port HTTPS (443):

#root > /etc/init.d/apache2 force-reload

Le script de mises-Ă -jour des CRL (listes des certificats rĂ©voquĂ©s) doit ĂȘtre appelĂ© rĂ©guliĂšrement (via CRON par exemple), voir annexe Ă  ce propos.

OPTION : Cas des certificats pour Web-Services : Il faut constituer 2 magasins de certificat pour l’application cliente qui se connectera aux Web-Services i-Parapheur:

  • un keyStore (contenant le certificat du client et sa partie privĂ©e), pour s’authentifier,
  • un trustStore (contenant le certificat X509 du serveur) pour reconnaĂźtre le serveur. 

Des outils tels que Porte-Cle (logiciel libre JAVA, version courante: 1.5) font cela trĂšs bien:

https://sourceforge.net/projects/portecle

Voir le manuel d’administration pour davantage d’informations concernant ce paramĂ©trage.

Redirection automatique

Il s’agit de crĂ©er un fichier de redirection dans les rĂ©pertoires dĂ©clarĂ©s comme « DocumentRoot » :

#root > cd /var/www; tar xzf /opt/_install/confs/var-www.tar.gz
#root > vim /var/www/parapheur/index.html

Adapter le fichier /var/www/parapheur/index.html (changer l’URL) :

Puis faire de mĂȘme pour /var/www/parapheurssl/index.html (en redirigeant vers https…) :

#root > vim /var/www/parapheurssl/index.html

Adapter le fichier /var/www/parapheurssl/index.html (changer l’URL) :

NB : si usage de l’IHM v4, changer les fins des URLs en remplaçant /alfresco par /iparapheur !

Remplacer Apache2 par Nginx ?

Il est possible d’utiliser Nginx Ă  la place de Apache2, un exemple de fichier de configuration est disponible dans le paquet « confs.tar.gz ».

Nginx permettra notamment le dĂ©ploiement pour l’accueil de connexions tablettes.

Composants i-Parapheur

Initialisation de la base de donnĂ©es de l’entrepĂŽt

Tuning de MySQL : éditer le fichier /etc/mysql/my.cnf , et changer la variable suivante :

max_connections = 360

Cela peut Ă©galement ĂȘtre fait au run-time dans le client mySQL avec la commande : 

set global max_connections=360;

La base de donnĂ©es va ĂȘtre initialisĂ©e avec la commande suivante :

ATTENTION : mot de passe root dĂ©fini Ă  l’installation !

#root > mysql -u root -psupersecret < /opt/_install/confs/mysql-init.sql

NB : pour information, le contenu du fichier SQL (mysql-init.sql) :

create database alfresco default character set utf8 collate utf8_bin;
grant all on alfresco.* to 'alfresco'@'localhost' identified by 'alfresco' with grant option;
grant all on alfresco.* to 'alfresco'@'localhost.localdomain' identified by 'alfresco' with grant option;

Installation de Alfresco 3.4.c Community Edition

Alfresco est téléchargeable sur http://sourceforge.net/projects/alfresco/files/ .

Dans ce manuel, l’installation est effectuĂ©e dans le rĂ©pertoire /opt/iParapheur .

On procĂšde ici Ă  l’installation en mode console, ce qui autorise des dĂ©ploiements en tĂ©lĂ©-intervention.

Ci-aprĂšs un exemple avec le package d’installation Alfresco dĂ©posĂ© dans /opt/_install :

#root > mkdir -p /opt/iParapheur; cd /opt/iParapheur
#root > chmod +x /opt/_install/alfresco-community-3.4.c-installer-linux-x64.bin
#root > /opt/_install/alfresco-community-3.4.c-installer-linux-x64.bin --mode text
Language Selection
Please select the installation language
[1] English - English
[2] French - Français
[3] Spanish - Español
[4] Italian - Italiano
[5] German - Deutsch
[6] Japanese - æ—„æœŹèȘž
Please choose an option [1] : 2
----------------------------------------------------------------------------
Bienvenue dans l'assistant d'installation de Alfresco Community
-----------------------------------------------------------------------------
Sélectionnez des composants que vous désirez installer, décochez ceux que vous
ne voulez pas installer. Cliquez sur Suivant pour continuer.
MySQL : Y (Cannot be edited)
Java : Y (Cannot be edited)
Alfresco : Y (Cannot be edited)
SharePoint [Y/n] :n
Records Management [Y/n] :n
Web Quick Start [Y/n] :n
WCM Alfresco [Y/n] :n
Quickr Connector Support [Y/n] :n
OpenOffice [Y/n] :Y
Est-ce que la sélection est correcte ? [Y/n]: Y
----------------------------------------------------------------------------
Type d'installation
[1] Facile - Installe les serveurs avec la configuration par défaut
[2] Avancé - Configure les ports du serveur et les propriétés de service
Merci de choisi une option. [1] : 2
----------------------------------------------------------------------------
Dossier d'installation
Please choose a folder to install Alfresco Community.
Sélectionner un dossier [/opt/alfresco-3.4.c]: /opt/iParapheur

Répertoire pour les traces applicatives : fichier nommé /var/log/alfresco/alfresco.log

#root > mkdir -p /var/log/alfresco/tomcat/logs ; mkdir -p /var/lib/alfresco/tmp
#root > rm -rf /opt/iParapheur/tomcat/logs
#root > ln -s /var/log/alfresco/tomcat/logs /opt/iParapheur/tomcat/logs

Permettre l’usage de Ghostscript par le WAR (exemple de localisation sur Ubuntu 12.04 LTS) :

#root > ln -s /usr/lib/libgs.so.9 /opt/iParapheur/common/lib/libgs.so

NB : si RedHat 6 :

ln -s /usr/lib64/libgs.so.8 /opt/iParapheur/common/lib/libgs.so

Fichier de configuration ‘alfresco-global.properties’

Ajouter les éléments de paramétrage i-Parapheur dans le fichier alfreso-global.properties :

#root > cd /opt/iParapheur/tomcat/shared/classes
#root > cat /opt/_install/confs/ADD-to_alfresco-global.properties >>alfresco-global.properties

Localisation de l’entrepĂŽt (configuration de la base de donnĂ©es, emplacement de l’entrepĂŽt):

#root > vi /opt/iParapheur/tomcat/shared/classes/alfresco-global.properties

Y vĂ©rifier les paramĂštres pour le stockage, la base de donnĂ©es, les divers chemins d’accĂšs :

6 dir.root=/opt/iParapheur/alf_data
10 ### database connection properties
11 db.driver=org.gjt.mm.mysql.Driver
12 db.username=alfresco
13 db.password=alfresco
14 db.name=alfresco
15 db.url=jdbc:mysql://localhost/alfresco
18 ftp.enabled=false
32 ### External executable locations
33 ooo.exe=/opt/iParapheur/openoffice/program/soffice.bin
34 ooo.enabled=false
35 img.root=/opt/iParapheur/common
36 img.dyn=${img.root}/lib
37 img.exe=${img.root}/bin/convert
38 swf.exe=/opt/iParapheur/common/bin/pdf2swf
39 jodconverter.enabled=true
40 jodconverter.officeHome=/opt/iParapheur/openoffice
41 jodconverter.portNumbers=8101

Et en particulier les lignes suivantes dédiées à i-Parapheur :

48 # Default properties used in i-parapheur
49 #-------------
50 db.pool.initial=100
51 db.pool.max=350
52 audit.enabled=true
55 # Renseigner l'url de base pour l'applet de signature (v3 only)
56 parapheur.signature.applet.url=http://iparapheur.ma-collectivite.fr/alfresco
57 ## Modeles d'email : emetteur par defaut, et URL de base (sans http://)
58 [email protected]
59 parapheur.mail.baseUrl=iparapheur.ma-collectivite.fr/iparapheur
60 # Modeles d'email : prefixe dans l'objet, par exemple [i-Parapheur]
61 parapheur.mail.objet.prefixe=[i-Parapheur]
62 parapheur.mail.targetVersion=4
63 ## Proprietes pour generation PDF archive/impression
64 parapheur.archive.ttfVerdana.location=/opt/iParapheur/verdanai.ttf
65 parapheur.archive.iccprofile.location=/opt/iParapheur/srgb.profile
66 parapheur.archive.tamponActes.prefixe="Acquitté en PREFECTURE le:"
67 ## parapheur.habillage (adullact|blex)
68 parapheur.habillage=adullact
69 ## parapheur.ihm.document.uploadMaxSize :
70 # - 0 : taille illimitee (valeur par defaut)
71 # - n : taille limitee a 'n' (en mega-octets)
72 parapheur.ihm.document.uploadMaxSize=0
73 ## (EXPERIMENTAL) Traitement par lot non bloquant (true|false)
74 parapheur.jobs.thread.enabled=false

Fichier de configuration TOMCAT ‘server.xml’

Par défaut le connecteur AJP13 est activé mais mal configuré.

#root > vi /opt/iParapheur/tomcat/conf/server.xml (activer connecteur AJP13:8009)

Ligne 90 : la ligne sur le connecteur AJP13, et vérifier que son paramétrage est de la forme :

Script de lancement/arrĂȘt TOMCAT : ‘ctl.sh’ (tuning JVM)

Le script installé est nécessaire mais son contenu est insuffisant pour les besoins i-parapheur.

#root > vi /opt/iParapheur/tomcat/scripts/ctl.sh (vérifier les chemins)

Recommandations pour le script « ctl.sh », Ă  adapter selon le contexte (chemins d’accĂšs, etc.) :

2 export LANG=fr_FR.UTF-8
6 CATALINA_PID=/var/run/parapheur.pid
13 export JAVA_OPTS='-XX:MaxPermSize=512m -Xms1536m -Xmx1536m -Xss1024k -XX:PermSize=64m -XX:NewSize=256m
-Dfile.encoding=UTF-8 -Djava.io.tmpdir=/var/lib/alfresco/tmp -Dalfresco.home=/opt/iParapheur
-Dcom.sun.management.jmxremote'
26 export JAVA_OPTS='-XX:MaxPermSize=512m -Xms1536m -Xmx1536m -Xss1024k -XX:PermSize=64m -XX:NewSize=256m
-Dfile.encoding=UTF-8 -Djava.io.tmpdir=/var/lib/alfresco/tmp -Dalfresco.home=/opt/iParapheur
-Dcom.sun.management.jmxremote'
32 $TOMCAT_BINDIR/shutdown.sh 9 -force

Personnalisation du fichier WAR de alfresco

Injection du fichier AMP (Alfresco Module Package) de i-Parapheur, dans le WAR Alfresco de base :

#root > cp /opt/_install/iParapheur-vX.Y.Z/iParapheur-vX.Y.Z_nnnnn.amp /opt/iParapheur/amps/
#root > cd /opt/iParapheur
#root > bin/apply_amps.sh
This script will apply all the AMPs in amps and amps-share to the alfresco.war and share.war files
in tomcat/webapps
Press control-c to stop this script . . .
Press any other key to continue . . .
Module 'parapheur' installed in 'tomcat/webapps/alfresco.war'
- Title: i-Parapheur ADULLACT
- Version: 3.4
- Install Date: Mon Dec 24 15:55:34 CET 2012
- Desription: Parapheur electronique ADULLACT

DĂ©paquetage du fichier WAR rĂ©sultant dans le sous-rĂ©pertoire ‘alfresco’, pour sa configuration :

#root > cd /opt/iParapheur/tomcat/webapps ; mkdir alfresco ; chmod 755 alfresco ; cd alfresco
#root > /opt/iParapheur/java/bin/jar -xf ../alfresco.war
#root > rm -f WEB-INF/lib/bcprov-jdk15* WEB-INF/lib/bcmail-jdk15*
#root > rm -f WEB-INF/lib/asm-3.1.jar WEB-INF/lib/cglib-2.2.jar
#root > rm -f WEB-INF/lib/geronimo-servlet_2.4_spec-1.1.1.jar WEB-INF/lib/servlet-api-2.4.jar

DĂ©sactivation de la web-app inutile ‘share’, externalisation de log4j.properties :

#root > cd /opt/iParapheur/tomcat/webapps ; mv share.war share.war.inutile
#root > cd /opt/iParapheur/tomcat/webapps/alfresco/WEB-INF/classes
#root > cp log4j.properties ../../../../shared/classes/alfresco/extension/custom-log4j.properties

Renseigner l’emplacement du fichier de log applicative :

#root > vi /opt/iParapheur/tomcat/shared/classes/alfresco/extension/custom-log4j.properties
16 log4j.appender.File.File=/var/log/alfresco/alfresco.log

Connecteur Web-Services

Configuration des URLs du fichier WSDL (remplacement des noms FQDN par défaut pour les connecteurs Web-Services) :

#root > cd /opt/iParapheur ; cp /opt/_install/confs/custom-wsdl.sh . 
#root > ./custom-wsdl.sh iparapheur.ma-collectivite.fr

Ce script va remplacer les URLs des services par celle donnée en paramÚtre, en fin de fichier:

Pour information : contenu du script

#!/bin/bash
sedpattern="s/iparapheur.demonstrations.adullact.org/$1/g"
sed -i $sedpattern tomcat/webapps/alfresco/WEB-INF/wsdl/iparapheur.wsdl

Déploiement du WAR « iparapheur »

Le fichier WAR d’iParapheur se trouve dans ce package ainsi que le fichier amp et les scripts de configuration :

Copie du fichier WAR de iparapheur dans le répertoire des webapps de TOMCAT :

#root > cd /opt/_install/iParapheur-vX.Y.Z
#root > cp *.war /opt/iParapheur/tomcat/webapps/iparapheur.war
#root > cp deployWarIparapheur.sh /opt/iParapheur/
#root > cd /opt/iParapheur/tomcat/webapps ; mkdir iparapheur
#root > cd /opt/iParapheur
#root > ./deployWarIparapheur.sh

Fichier de configuration ‘iparapheur-global.properties’

ParamĂ©trage, Ă  partir d’un fichier d’exemple fourni :

#root > cd /opt/iParapheur/tomcat/shared/classes
#root > cp /opt/_install/confs/iparapheur-global.properties .
#root > vi /opt/iParapheur/tomcat/shared/classes/iparapheur-global.properties

Y adapter notamment le paramĂštre pour l’accĂšs Ă  LiberSign (attention, l’URL se termine en alfresco) :

8 parapheur.signature.applet.url=http://iparapheur.ma-collectivite.fr/alfresco

Exemple de fichier :

##################################################################
# Parametrage i-Parapheur (webapp iparapheur.war) #
# #
# copyleft 2013 - Adullact-Projet #
##################################################################
#################################
# URL de localisation de l'applet de signature LiberSign (se termine par alfresco car pointe sur v3)
parapheur.signature.applet.url=http://iparapheur.ma-collectivite.fr/alfresco
#################################
## Preferences utilisateur ##
# Affichage des onglets dans les options
parapheur.ihm.options.password.show=true
parapheur.ihm.options.theme.show=true
parapheur.ihm.options.signature.show=true
parapheur.ihm.options.langue.show=true
#################################
## Bas de page ##
# URL du lien bas de page
parapheur.ihm.contact.support.url=http://www.adullact-projet.coop/
# Texte du lien bas de page
parapheur.ihm.contact.support.text=Support technique
#################################
## Themes de l'interface ##
# Dossier des themes
parapheur.ihm.themes.directory=/var/www/themes
# Themes disponibles
parapheur.ihm.themes.disponibles=tenant1/rose,default
#################################
## Visibilite des dossiers ##
# Visibilité par défaut de la collectivite principale (racine)
parapheur.ihm.creerdossier.visibilite.defaut=group
# Visibilité par défaut par tenant
parapheur.ihm.creerdossier.visibilite.defaut.tenant={"tenant1":"confidentiel"}
# Visibilités disponibles à la création (public|group|confidentiel)
parapheur.ihm.creerdossier.visibilite.valeurs=public,group,confidentiel

Divers réglages finaux

La gĂ©nĂ©ration des calques pour les visuels d’impression nĂ©cessite les fichiers suivants : 

root > cd /opt/_install/confs ; cp srgb.profile verdanai.ttf /opt/iParapheur/

NB : certains messages sont mal traduits par Alfresco. Leur correction peut se faire en éditant le fichier de langue FR :

root > vim tomcat/webapps/alfresco/WEB-INF/classes/alfresco/messages/webclient_fr_FR.properties (ligne 852)

Un réglage sur le script de contrÎle alfresco.sh (mentions ulimit à ajouter en début du fichier) :

#!/bin/sh
ulimit -Hn 16384
ulimit -Sn 16384
# Disabling SELinux if enabled
if [ -f "/usr/sbin/getenforce" ] && [ `id -u` = 0 ] ; then
selinux_status=`/usr/sbin/getenforce`
/usr/sbin/setenforce 0 2> /dev/null
fi
INSTALLDIR=/opt/iParapheur
cd $INSTALLDIR

Activer le script de contrĂŽle pour OpenOffice.org :

root > cd /opt/iParapheur/openoffice/scripts ; mv openofficectl.sh ctl.sh

OPTION Configuration en mode multi-collectivité :

Si nĂ©cessaire, l’application i-Parapheur peut fonctionner en « colocation » de collectivitĂ©, grĂące Ă  l’activation du mode « multi-tenancy » d’Alfresco.

L’activation de ce mode s’effectue avec les manipulations suivantes :

#root > cd /opt/iParapheur/tomcat/shared/classes/alfresco/extension/mt #root > mv mt-context.xml.sample mt-context.xml
#root > mvmt-admin-context.xml.samplemt-admin-context.xml
#root > mvmt-contentstore-context.xml.samplemt-contentstore-context.xml

Se rĂ©fĂ©rer au manuel d’administration (i-Parapheur_v3.2_Admin-multiCollectivite_v1.2.pdf) disponible sur le magasin ADULLACT pour l’exploitation de cette fonctionnalitĂ©.

La colocation (multi-tenancy) est limitĂ©e arbitrairement Ă  99 collectivitĂ©s maximum par l’engineering Alfresco. Il est possible d’outrepasser cette limitation en modifiant certains paramĂštres internes (en particulier la gestion de la taille du cache).

En cas de dépassement de ce maximum, il est recommandé de mettre en place plusieurs serveurs, et répartir les collectivités « locataires » sur ces différentes instances.

Validation de l’installation

AprĂšs dĂ©marrage de l’application (voir le chapitre suivant pour la commande de dĂ©marrage) ou reboot du serveur, les manipulations suivantes permettent de s’assurer que l’installation s’est bien dĂ©roulĂ©e.

NB : un premier dĂ©marrage peut prendre jusqu’Ă  5 minutes selon la puissance des ressources allouĂ©es au serveur. Les dĂ©marrages suivants sont plus rapides (de 45 Ă  100 secondes).

Rappel : La vĂ©rification du bon dĂ©marrage de Tomcat peut se faire en examinant les traces ‘catalina’ :

#root > tail -f /var/log/alfresco/tomcat/logs/catalina.out

Un serveur fonctionnel enregistre dans ces traces ce message « INFO: Server startup in xxxx ms ».

Si ce message n’apparaĂźt pas, contrĂŽler l’activitĂ© CPU du processus Java de TOMCAT (par exemple avec la commande ‘top’) : en effet, le serveur peut ne pas avoir fini de dĂ©marrer.

Dans le cas contraire (activitĂ© nulle), les traces ‘catalina’ sont assez verbeuses, et font rapidement Ă©tat du problĂšme de dĂ©marrage.

OPTION Redémarrage du serveur :

Pour vĂ©rifier que les services sont bien actifs: reboot puis login, ‘sudo -s’. Chacune des commandes suivantes doit donner un rĂ©sultat.

#root > ps aux | grep -i office
#root > ps aux | grep -i tomcat
#root > ps aux | grep -i mysql

ContrÎle des services réseau

La commande suivante liste les ports rĂ©seau ouverts en Ă©coute (prĂȘts Ă  servir) : 

netstat -antup | grep LISTEN

Les lignes intéressantes, respectivement pour Apache, MySQL, OpenOffice.org, et i-Parapheur :

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1599/apache2
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1599/apache2
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1353/mysqld
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 5715/soffice.bin
tcp6 0 0 127.0.0.1:50500 :::* LISTEN 5627/java
tcp6 0 0 127.0.0.1:8005 :::* LISTEN 5627/java
tcp6 0 0 :::8009 :::* LISTEN 5627/java
tcp6 0 0 :::50508 :::* LISTEN 5627/java
tcp6 0 0 :::35183 :::* LISTEN 5627/java
tcp6 0 0 :::8080 :::* LISTEN 5627/java
tcp6 0 0 :::35800 :::* LISTEN 5627/java

ContrĂŽle des accĂšs Web HTTP et HTTPS

Pré-requis : un navigateur Web sur un poste avec accÚs au serveur.

Dans un navigateur web, les URLs du tableau ci-aprÚs (personnaliser le nom de domaine selon le nom du serveur) doivent donner un écran de connexion :

N° URL Partie testée
1 http://iparapheur.ma-collectivite.fr:8080/alfresco… Serveur TOMCAT Java en direct.

 

Si KO, revoir l’installation.

Si OK : en profiter pour se connecter en admin , y définir son certificat de connexion.

2 http://iparapheur.ma-collectivite.fr/iparapheur/ Si N° 1 OK, pour valider l’installation du serveur Apache.
3 http://iparapheur.ma-collectivite.fr Si N° 2 OK, pour valider la redirection HTTP
     

Si les tests prĂ©cĂ©dents sont concluants, tester l’accĂšs HTTPS sur:https://iparapheur.ma-collectivite.fr

Pré-requis : un certificat client exploitable par le navigateur.

  • Le navigateur doit rĂ©clamer un certificat client
  • Sur sĂ©lection puis validation d’un certificat client, le message d’erreur suivant apparaĂźt(« java.lang.RuntimeException: Utilisateur inconnu ») : c’est parfaitement logique et normal.
  • Sur sĂ©lection du certificat client associĂ© au compte’admin’ (voir test 1), la connexion doit permettre l’accĂšs Ă  la Console d’administration.

Remarque : si erreur 117 en HTTPS, mettre Ă  jour les condensats des AC d’apache : 

root > cd /etc/apache2/ssl
root > c_rehash /etc/apache2/ssl/validca

Penser également alors à inclure cette commande dans le script recup_crl.sh (voir tùches planifiées).

NB : Si installation sur RHEL/CentOS, la commande « c_rehash » est fourni par le composant logiciel optionnel « openssl-perl » :

root > yum install openssl-perl
( yum install ./perl-WWW-Curl-4.09-3.el6.x86_64.rpm ./openssl-perl-1.0.0-27.el6_4.2.x86_64.rpm )

Concernant la partie Web-Services, se référer au manuel administrateur pour la constitution des keystores à utiliser dans le logiciel métier (client du i-Parapheur).

Guide rapide d’Exploitation

Commandes de lancement /arrĂȘt de i-Parapheur

#root > /etc/init.d/alfresco start

NB : La toute premiÚre fois, le lancement va initialiser les données i-Parapheur dans la base de données et le systÚme de fichiers (alf_data) ; ce processus est relativement long (2 à 5 minutes).

La vĂ©rification du bon dĂ©marrage de Tomcat peut se faire en examinant les traces ‘catalina’ :

#root > tail -f /var/log/alfresco/tomcat/logs/catalina.out

Un serveur fonctionnel enregistre dans les traces ce message « INFO: Server startup in xxxx ms ».

ArrĂȘt de iParapheur :

#root > /etc/init.d/alfresco stop

Cas de serveur SMTP externe

Pour configurer les notifications par mail auprĂšs des acteurs de i-Parapheur.

#root > vi /opt/iParapheur/tomcat/shared/classes/alfresco-global.properties

Les paramĂštres de connexion SMTP suivants sont disponibles (ajouter en fin de fichier) :

#
# Outbound Email Configuration
#------------------------------
mail.host=monSMTPjoliQuiMarche.ma-collectivite.fr
mail.port=25
mail.username=anonymous
mail.password=
mail.encoding=UTF-8
[email protected]
mail.smtp.auth=false

Exemple de mise en place de procédure de sauvegardes

Copie du script de sauvegarde dans le rĂ©pertoire d’installation :

#root > cp /opt/_install/confs/backup_parapheur.sh /opt/iParapheur/ 
#root > cp /opt/_install/confs/send_backup.sh /opt/iParapheur/bin
#root > chmod +x /opt/iParapheur/bin/send_backup.sh /opt/iParapheur/backup_parapheur.sh

Pour information, contenu du fichier backup_parapheur.sh :

#!/bin/bash
BACKUPDIR=/opt/iParapheur/backups
DATE=`date +%d-%m-%Y`
DOCUMENTROOT=/opt/iParapheur
BINDIR=$DOCUMENTROOT/bin
DBS="alfresco"
HOSTNAME=`hostname`
DIR=$BACKUPDIR/$DATE
ROTATEDIR=$BACKUPDIR
HER=`pwd`
### test avant lancement du script
if [ ! -d $DOCUMENTROOT ]; then
 echo "**$0: DocumentRoot invalid:$DOCUMENTROOT"
 exit 1
fi
#create backup directory
if [ ! -d $DIR ]
then
 mkdir -p $DIR
fi
#save repository
cd $DOCUMENTROOT
tar -czf $DIR/parapheur.tar.gz alf_data
#save metadata
for b in $DBS
 do
 mysqldump --add-locks --add-drop-table -u"root" -pPASSWORD $b 1> $DIR/$b.sql 
 done
#save backup cmd
cd $HER
cp -a $0 $DIR
#rotate des archives
i=`ls -c1 $ROTATEDIR|wc -l`
NBR=4
cd $ROTATEDIR
if [ $i -gt $NBR ]; then
while [ $i -ne $NBR ]; do
 rm -rf `ls -rt|head -1`
 i=`ls -c1 $ROTATEDIR|wc -l`
 done
fi
#Envoi de la sauvegarde sur le serveur ftp
#$BINDIR/send_backup.sh $DATE

RĂ©gler le CRON afin que la procĂ©dure s’exĂ©cute tous les jours Ă  3h05 du matin (dans cet exemple) :

#root > crontab -e

Les backups DOIVENT se faire Ă  froid (application arrĂȘtĂ©e), voir l’exemple de lignes pour CRON :

MAILTO=''
0 0 * * * /etc/apache2/ssl/recup_crl.sh /etc/apache2/ssl && /etc/init.d/apache2 restart >/dev/null 2>&1
5 3 * * * /etc/init.d/alfresco stop >/dev/null 2>&1
15 3 * * * /usr/bin/killall -q -e -g -s 9 /opt/iParapheur/java/bin/java >/dev/null 2>&1
16 3 * * * /usr/bin/killall -q -e -s 9 /opt/iParapheur/openoffice/program/soffice.bin >/dev/null 2>&1
18 3 * * * /bin/rm -f /var/run/parapheur.pid >/dev/null 2>&1
19 3 * * * /usr/sbin/ntpdate ntp.ubuntu.com pool.ntp.org >/dev/null 2>&1
20 3 * * * /opt/iParapheur/backup_parapheur.sh >/dev/null 2>&1
45 3 * * * /etc/init.d/alfresco start >/dev/null 2>&1

Explication : La 1Ăšre ligne met Ă  jour les ACs et CRLs pour Apache ; puis arrĂȘt de l’application. Enfin, une commande de mise Ă  jour de l’heure systĂšme, et lancement du script de backup, avant redĂ©marrage de l’application.

Enfin, éditer le fichier send_backup.sh pour régler les paramÚtres de serveur distant (FTP ou CIFS).

ProcĂ©dure de restauration d’une sauvegarde

Le fichier alfresco-global.properties doit ĂȘtre modifiĂ© temporairement en positionnant le paramĂštre :

index.recovery.mode=FULL

ArrĂȘter l’application i-Parapheur (voir procĂ©dure ci-dessus)

Exécuter le script restore_parapheur.sh dans le répertoire /opt/iParapheur/bin

Effacer le répertoire /opt/iParapheur/alf_data/lucene-indexes

Renommer /opt/iParapheur/alf_data/backup-lucene-indexes en /opt/iParapheur/alf_data/lucene-indexes

Relancer l’application

aprÚs démarrage, remettre le paramÚtre index.recovery.mode=AUTO

Pour information, contenu du script restore_parapheur.sh :

#!/bin/bash
BACKUPDIR=/opt/iParapheur/backups
DATE=$1
DOCUMENTROOT=/opt/iParapheur
DBS="alfresco"
HOSTNAME=`hostname`
DIR=$BACKUPDIR/$DATE
RESTORESQL=$BACKUPDIR/$DATE/restore.sql
ROTATEDIR=$BACKUPDIR
HER=`pwd`
### test avant lancement du script
if [ "$1" = "" ]; then
        echo "**$0: Merci de spĂ©cifier la date de sauvegarde Ă  restorer au format DD-MM-YYYY"
        exit 1
fi

if [ ! -d $DIR ]; then
        echo "**$0: Il n'y a aucune sauvegarde pour cette date : $DATE"
        exit 1
fi

if [ ! -d $DOCUMENTROOT ]; then
        echo "**$0: DocumentRoot invalide:$DOCUMENTROOT"
        exit 1
fi
# Create a good sql script
echo "DROP DATABASE \`alfresco\` ;"   >  $RESTORESQL
echo "CREATE DATABASE \`alfresco\` ;" >> $RESTORESQL 
echo "use \`alfresco\` ;"             >> $RESTORESQL            
cat  $DIR/alfresco.sql                >> $RESTORESQL
cd $DOCUMENTROOT
rm -rf alf_data
tar -xzf $DIR/parapheur.tar.gz alf_data
#restore database 
mysql -u root  < $RESTORESQL
clear
echo "La restauration s'est effectuée correctement, merci de redémarrer le parapheur : "

Monitoring du serveur

Il convient de surveiller le service, pourquoi pas avec des sondes de type Nagios sur :

  • OpenOffice.org, TOMCAT, Apache/Nginx,
  • consommation CPU
  • consommation RAM
  • occupation disque.

Exemple pour la consommation disque (si absence de sonde) avec un script BASH trÚs simple nommé /opt/iParapheur/espace.sh :

#!/bin/bash
# version 1.0.0 par Stephane VAST
df -h | mail -s "Espace disque sur mon serveur maCollectivite.fr" [email protected]

Ce script appelé réguliÚrement par CRON :

0 8 * * 1 /opt/iParapheur/espace.sh >/dev/null 2>&1

Procédure de mise à jour mineure

Cela ne concerne QUE des mises-à-jour dites « mineures » (3.2.x à 3.2.y par exemple). Elle ne fonctionne pas pour une mise à jour depuis une version 3.0.xx (car changement de socle Alfresco).

Dans le package tar.gz sont livrés un script iparaph-updateAMP.sh , et un guide LISEZ-MOI.txt :

#root > cp /opt/_install/confs/iparaph-updateAMP.sh /opt/iParapheur

Lire le fichier LISEZ-MOI.txt : il prĂ©cise les opĂ©rations Ă  effectuer, selon l’Ă©cart de versions de produit.

NB : pour l’exĂ©cution du script custom-wsdl.sh (voir § 4.6 sur le connecteur Web-Services) :

#root > cd /opt/iParapheur
#root > ./custom-wsdl.sh iparapheur.ma-collectivite.fr

Cas de mise Ă  jour depuis Ubuntu 10.04 : le passage vers Ubuntu 12.04 se fait assez simplement :

#root > apt-get update
#root > apt-get dist-upgrade # éventuel reboot si mise-à-jour du kernel
#root > apt-get install update-manager-core
#root > vi /etc/update-manager/release-upgrades # positionner : Prompt=lts
#root > do-release-upgrade

NB : depuis la version 3.4 et plus, il y a une dépendance sur GhostScript, qui se résout ainsi :

– installer les paquets GhostScript et gsfonts (voir au dĂ©but du manuel d’install )

– le lien symbolique vers common/lib/libgs.so :

#root > ln -s /usr/lib/libgs.so.9 /opt/iParapheur/common/lib/libgs.so

Mises-Ă -jour des CRL

OpĂ©ration nĂ©cessaire pour avoir un contrĂŽle efficace de validitĂ© des certificats, les listes des certificats rĂ©voquĂ©s par AC peuvent ĂȘtre mises-Ă -jour toutes les nuits (voir CRON aux chapitres prĂ©cĂ©dents). Voici le script /etc/apache2/ssl/recup_crl.sh

#!/bin/bash
# version 1.0.1 par Stephane VAST
DIR=$1
cd $DIR
if [ -e $DIR/validca.tgz ]
then
rm $DIR/validca.tgz
fi
if [ -e /tmp/validca.md5sum ]
then
rm /tmp/validca.md5sum
fi
/usr/bin/wget --no-proxy -q http://crl.adullact.org/validca.tgz
cd /tmp
/usr/bin/wget --no-proxy -q http://crl.adullact.org/validca.md5sum
MD5=`md5sum $DIR/validca.tgz | awk '{print $1}'`
echo $MD5
if [ -z "$MD5" ]
then
echo "CALCUL MD5 IMPOSSIBLE: TELECHARGEMENT AVORTE?";
exit;
fi
if [ $MD5 != `cat /tmp/validca.md5sum` ]
then
echo "PROBLEME MD5SUM DIFFERENT DE CELUI TELECHARGE";
exit;
fi
if [ -e $DIR/validca-old ]
then
rm -r $DIR/validca-old
fi
if [ -e $DIR/validca ]
then
mv $DIR/validca $DIR/validca-old
fi
cd $DIR
tar -xzf $DIR/validca.tgz

Paramétrage avancé du connecteur Web-Services

L’accĂšs Ă  aux Web-services i-Parapheur est doublement sĂ©curisĂ© par MCA + Basic: certificat client d’authentification HTTPS, et identifiant login/password vers i-Parapheur. Il est aussi possible de faire automatiquement intervenir le champ ‘CN’ du certificat dans le login prĂ©sentĂ© Ă  i-Parapheur : le compte créé dans i-Parapheur devra alors ĂȘtre de la forme ‘.’. La syntaxe du sĂ©parateur (ici le caractĂšre ‘.’ par dĂ©faut) est Ă©galement paramĂ©trable.

Ce réglage se fait dans le fichier :

/opt/iParapheur/tomcat/webapps/alfresco/WEB-INF/applicationAcegi.xml

Aller à la section bean id= »x509AndBasicAuthenticationProcessingFilter » et adapter la valeur de la propriété dealWithCertificate selon le comportement souhaité: false ou true.

NOTE : L’utilisation des WebServices iParapheur a Ă©tĂ© expĂ©rimentĂ©e avec succĂšs avec des clients JAVA (avec JAX-WS), C++ (avec gSOAP), PHP (avec WSO2 wsf-php), C#, NatStar. Dans le cas de wsf-PHP, il y a un bug de double requĂȘte dans la librairie AXIS2/C HTTP embarquĂ©e. Le correctif est disponible sous forme de patch Ă  l’URL suivante :

https://issues.apache.org/jira/browse/AXIS2C-1244

Installation des « swftools » sur RedHat, Debian, Ubuntu10.10

Inutile depuis l’installeur alfresco 3.4 : le composant logiciel « swftools » (qui fournit l’utilitaire pdf2swf ) n’est pas disponible dans les dĂ©pĂŽts RedHat, ni Ubuntu 10.10 (swftools is broken by design, that’s why it’s not in the repositories anymore), l’installation se fait par compilation des sources…Pour Suse SLES 10 : https://tpeelen.wordpress.com/2010/04/27/installin…

Pour RedHat :

#root > yum install zlib-devel libjpeg-devel giflib-devel freetype-devel gcc gcc-c++ make

Pour Ubuntu 10.10 :

#root > apt-get install build-essential libgif-dev libjpeg-dev zlib1g-dev libfreetype6-dev

Puis dérouler les commandes :

#root > wget http://www.swftools.org/swftools-0.9.1.tar.gz
#root > tar xzf swftools-0.9.1.tar.gz
#root > cd swftools-0.9.1
#root > ./configure --disable-lame
#root > make && make install

L’outil exĂ©cutable « pdf2swf » est accessible dans /usr/local/bin , le chemin d’accĂšs pour i-parapheur est Ă  renseigner dans ‘alfresco-global.properties’. Éditer le fichier :

#root > vi /opt/iParapheur/tomcat/shared/classes/alfresco-global.properties

Dans la zone « External executable locations » (vers la ligne 32), localiser le paramĂštre ‘swf.exe’ (gĂ©nĂ©ralement ligne 38) et le positionner de la façon suivante :

32 ### External executable locations
33 ooo.exe=/opt/iParapheur/openoffice/program/soffice.bin
34 ooo.enabled=true
35 img.root=/opt/iParapheur/common
36 img.dyn=${img.root}/lib
37 img.exe=${img.root}/bin/convert
38 swf.exe=/usr/local/bin/pdf2swf

NB : une anomalie dans l’installeur Alfresco 3.4.c pour systĂšme GNU/Linux 32bits justifie d’installer le composant swftools de cette façon. Cette anomalie n’est pas prĂ©sente sur l’installeur Alfresco pour GNU/Linux 64bits, recommandĂ©.

Installation des Polices TTF standard Microsoft sur Red-Hat/CentOS…

Sans paquet RPM fournissant ces polices de caractÚre, télécharger et constituer ce paquet « à la main », avec une connexion Internet opérationnelle ! Toujours en mode super-utilisateur, se placer dans le répertoire de travail, installer les pré-requis et télécharger le projet depuis le site SourceForge.net :

#root > mkdir -p /opt/_install/msttcorefonts && cd /opt/_install/msttcorefonts
#root > yum install wget cabextract rpm-build chkfontpath ttmkfdir
#root > wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec

Construction et installation du paquet RPM (exemple de chemin sur CentOS 5) :

#root > rpmbuild -ba msttcorefonts-2.0-1.spec
#root > rpm -ivh /usr/src/redhat/RPMS/noarch/msttcorefonts-2.0.1.noarch.rpm
#root > /sbin/service xfs reload

NB: CentOS6 : https://oimon.wordpress.com/2011/09/05/msttcorefon…

Pas de XFS Ă  redĂ©marrer. En cas de souci, voir le site du projet : http://corefonts.sourceforge.net/

Astuce : D’Ă©ventuelles fontes ‘particuliĂšres’ peuvent ĂȘtre dĂ©finies en les copiant dans le rĂ©pertoire :

/opt/iParapheur/openoffice/basis3.2/share/fonts/truetype/ (adapter selon contexte d'installation)

D’une maniĂšre gĂ©nĂ©rale, ajouter des polices au systĂšme suffit avec :

#root > mkdir -p /usr/share/fonts/truetype/mesjoliesfontes
#root > cp /tmp/fonts/*.ttf /usr/share/fonts/truetype/mesjoliesfontes/
#root > fc-cache -f -v

Pour les polices Office2007 (Calibri,…) :
http://www.oooninja.com/2008/01/calibri-linux-vista-fonts-download.html

Service OpenOffice.org en écoute sur un port particulier

Lorsque l’on choisit un port diffĂ©rent du port par dĂ©faut (8100), Alfresco n’honore pas cette configuration. Il faut modifier la dĂ©finition du bean suivante (dans tomcat/webapps/alfresco) :

WEB-INF/classes/alfresco/subsystems/OOoDirect/default/openoffice-transform-context.xml

Remplacer le service OpenOffice.org par LibreOffice 3.6 ou 4.0

Le bundle « alfresco 3.4.c » livre par dĂ©faut une version assez ancienne d’OOo, qui fonctionne bien pour les opĂ©rations courantes (HTML, ODT,…). LibreOffice offre de meilleurs filtres pour gĂ©rer certains formats de fichier fermĂ©s (.DOC .DOCX et autres).

Cas LibreOffice 4. 0 :

  • Sur Ubuntu12.04, ajouter au prĂ©alable les packages libcups2 et libfontconfig1 .
apt-get install libcups2 libfontconfig1
wget http://download.documentfoundation.org/libreoffice/stable/4.0.5/deb/x86_64/LibreOffice_4.0.5_Linux_x86-64_deb.tar.gz
  • NB : AprĂšs installation, l’application doit se lancer avec la commande (une seule ligne!) :
/opt/libreoffice4.0/program/soffice.bin --norestore --nodefault --nologo --headless --nofirststartwizard --accept="socket,host=localhost,port=8100;urp;StarOffice.ServiceManager"
  • Les commandes suivantes permettent de remplacer OOo par LibreOffice :
cd /opt/iParapheur/openoffice/scripts
cp openoffice_ctl.sh ctl.sh
cd .. ; mv scripts ../ooscripts
rm -rf *
cp -a /opt/libreoffice4.0/* ./
mv ../ooscripts ./scripts
  • Adapter le script de lancement /opt/iParapheur/openoffice/scripts/ctl.sh :
SOFFICE="$SOFFICEBIN --headless --nodefault --nofirststartwizard --nolockcheck --nologo --norestore --invisible --accept=socket,host=0,port=8100,tcpNoDelay=1;urp"

Couplage avec annuaire LDAP, ressources diverses

Voir la littĂ©rature sur Internet, notamment concernant le couplage « alfresco – ldap »:

http://wiki.alfresco.com/wiki/Alfresco_Authenticat…

http://wiki.alfresco.com/wiki/The_Synchronization_…

http://www.ochounos.com/#blog/6

D’autres sources d’inspiration pour faciliter l’installation :

http://howtoforge.org/how-to-install-alfresco-comm…

http://blog.mycroes.nl/2010/04/installing-alfresco…

Certificats électroniques, autorité de certification et openSSL

Le i-parapheur s’appuie fortement sur l’usage de certificats Ă©lectroniques pour sĂ©curiser les communications, produire des signatures numĂ©riques, etc. Ces certificats sont Ă  acquĂ©rir auprĂšs d’une autoritĂ© de certification prĂ©sumĂ©e fiable pour l’exploitant. La force probante des connexions et des signatures est directement liĂ©e au niveau de confiance accordĂ© aux certificats utilisĂ©s.

OPTION : Si nĂ©cessaire, crĂ©ation d’une A.C. (autoritĂ© de certification, locale et auto-signĂ©e) :

Éditer au prĂ©alable ‘/usr/lib/ssl/openssl.cnf‘ et dĂ©commenter au besoin la ligne 184 :

183 # This is typical in keyUsage for a client certificate.
184 keyUsage = nonRepudiation, digitalSignature, keyEncipherment
#root > cd /etc/apache2/ssl
#root > /usr/lib/ssl/misc/CA.pl -newca

Déclaration de cette A.C. dans la liste des A.C. connues du serveur Web :

#root > cd /etc/apache2/ssl/validca/

Supprimer l’ancien lien symbolique pointant vers cacert.pem :

#root > cp -f ../demoCA/cacert.pem .
#root > openssl x509 -hash -in cacert.pem -noout => exemple de résultat : 22f2539e
#root > ln -s cacert.pem 22f2539e.0

Création du certificat serveur pour Apache :

ATTENTION : Le Common Name correspond au ServerName de la machine ! 

cd /etc/apache2/ssl
/usr/lib/ssl/misc/CA.pl -newreq
openssl rsa -in newkey.pem -out iparapheur-serveur-priv-key.pem
/usr/lib/ssl/misc/CA.pl -sign
cp newcert.pem iparapheur-serveur.pem

Création de certificat client (pour tests et/ou accÚs Web-services) :

cd /etc/apache2/ssl
/usr/lib/ssl/misc/CA.pl -newreq
/usr/lib/ssl/misc/CA.pl -sign
/usr/lib/ssl/misc/CA.pl -pkcs12 'Certificat de Monsieur X'

Enfin, renommer le certificat obtenu :

mv newcert.p12 /le-chemin-qui-me-plait/le-nom-que-je-veux.p12

Astuce : Transformation d’un certificat PKCS12 en fichiers PEM X509 pour Apache

#root > openssl pkcs12 -in moncertificat.p12 -nocerts -nodes -out apache-priv-key.pem
#root > openssl pkcs12 -in moncertificat.p12 -clcerts -nokeys -out apache-cert.pem
OpĂ©ration inverse: certificats de PEM → P12
#root > openssl pkcs12 -export -out moncertificat.p12 -inkey userkey.pem -in usercert.pem

Autres astuces: rĂ©encoder un certificat de PEM → DER, vĂ©rifier une signature PKCS#7 sur PDF (cas ACTES)

#root > openssl x509 -outform der -in moncertificat.pem -out moncertificat.der (PEM → DER)
#root > openssl smime -in masignature.p7s -inform PEM -binary -verify -content mondocument.pdf -CApath /chemin/du/validca -purpose any -out /dev/null

Module Apache « PROXY_AJP » indisponible

Se rabattre sur MOD_JK : http://wiki.apache.org/tomcat/FAQ/Connectors

apt-get install libapache2-mod-jk

Activer le module jk:

Attention, Il faut mod_JK V.1.2.x

/etc/init.d/apache2 force-reload
cp /tmp/FichiersCONF/apache/mod_jk.conf conf.d/

Sur une centos 4.4 ou RedHat :

Modifier le httpd.conf

Load jk_module modules/mod_jk.so

Placer le fichier mod_jk.so dans

/etc/httpd/modules/.

ProblĂšmes de connexion Web-Services – CVE-2009-3555

Dans certains cas, l’interopĂ©rabilitĂ© entre application tierce et i-parapheur peut ĂȘtre compliquĂ©e lors del’Ă©tablissement de session SSL/TLS : l’erreur retournĂ©e Ă©tant une exception du style SSLHandshakeException assorti d’un message « SSL renegociation failure ». A l’origine, la correction d’une vulnĂ©rabilitĂ© connue (CVE-2009-3555), et dĂ©crite aux l’URLs :

http://cve.mitre.org/cgi-bin/cvename.cgi?name=2009-3555
http://java.sun.com/javase/javaseforbusiness/docs/TLSReadme.html

Une solution consiste Ă  ajouter l’assertion suivante dans les JAVA_OPTS au lancement :

-Dsun.security.ssl.allowUnsafeRenegotiation=true

A noter Ă©galement qu’un correctif distribuĂ© depuis la version 2.2.14-5ubuntu8.2 de Apache et la version 0.9.8k-7ubuntu8.1 de la libssl (distribution Ubuntu) permet de contourner Ă©galement ce problĂšme en cas d’impossibilitĂ© de patcher le client. La libssl implĂ©mente (en backport de openssl 0.9.8m) la RFC5746 (Voir http://tools.ietf.org/html/rfc5746).

Pour Apache (>2.2.15), il est possible de forcer l’usage vers l’ancien comportement avec une nouvelle directive Ă  inclure dans la dĂ©finition du VirtualHost : SSLInsecureRenegotiation

ProblÚme «Too many open files»

Cela peut arriver, des exceptions dans les traces Alfresco, et le serveur d’application qui plante avec ce message : « too many open files ». Cela peut arriver alors mĂȘme que l’on croit avoir rĂ©solu les limites de fichier ouvrables par processus. Le wiki Alfresco a une rĂ©ponse : http://wiki.alfresco.com/wiki/Too_many_open_files

Parfois, elle peut s’avĂ©rer inefficace, mĂȘme avec les paramĂštres systĂšme suivants :

$ ulimit -n
4096
$ ulimit -Hn
65536

La longue ligne de commande suivante peut révéler la réelle source du problÚme (une seule ligne!) :

for pid in `pidof java`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done

Exemple de résultat :

Limit                  Soft Limit    Hard Limit     Units
Max open files         1024          1024           files
Currently open files: 142

Une solution de contournement est donnĂ©e sur les forums: http://ubuntuforums.org/showthread.php?t=1583041 (confirmĂ© par d’autres posts), dans le script /etc/init.d/alfresco ajouter en dĂ©but de fichier les instructions suivantes :

ulimit -Hn 16384
ulimit -Sn 16384

ProblĂšme de ‘locale’

ProblĂšme de locale (ubuntu6.06) :

#root > vi /var/lib/locales/supported.d/local

Ne laisser que : fr_FR@euro ISO-8859-15 fr_FR ISO-8859-15