Projet

Général

Profil

Télécharger (13,3 ko) Statistiques
| Branche: | Tag: | Révision:
Construction et installation
============================

Construction
------------

IoTa utilise Apache Maven pour l’automatisation de la production
(http://maven.apache.org).

Un scrit utilitaire pour la construction est fourni : make-all.sh.

La compilation de chaque module est réalisé à l’aide de cette commande :

mvn compile

Maven téléchargera tous les fichiers jar nécessaires et les installera dans un
dépôt local (habituellement ~/.m2/repository).

L’installation des bibliothèques IoTa dans le dépôt local pour une utilisation
future (comme cela est nécessaire pour plusieurs modules IoTa) est réalisée
par la commande suivante :

mvn install

Notez que cette commande compile aussi le module si nécessaire.

Certains modules sont fournis avec des tests unitaires et certains de ces
tests nécessitent que des applications soient fonctionnelles (p.ex. les tests
de la bibliothèque IoTa-DiscoveryWS-Client veulent accéder à un serveur
IoTa-DiscoveryWS). Pour sauter ces tests, utilisez cette commande pour la
compilation ou l’installation :

mvn -DskipTests install


Vous pouvez installer manuellement des fichiers jar préalablement téléchargés
avec une commande de ce type :

mvn install:install-file \
-Dfile=sunxacml-2.0-SNAPSHOT.jar \
-DgroupId=net.sf.sunxacml \
-DartifactId=sunxacml \
-Dversion=2.0-SNAPSHOT \
-Dpackaging=jar

Notez que cela sera nécessaire pour la bibliothèque sunxacml puisque celle-ci
ne se trouve sur aucun dépôt Maven connu. Le fichier jar peut être téléchargé
depuis la page SourceForge du projet : http://sunxacml.sf.net.

Voici un lien direct : http://sourceforge.net/projects/sunxacml/files/maven/snapshots/net/sf/sunxacml/sunxacml/2.0-SNAPSHOT/sunxacml-2.0-SNAPSHOT.jar/download


Installation
------------

(Toutes les valeurs entre chevrons `<nom>` sont à substituer.)

**Le programme IoTa-Installer peut vous aider à installer et configurer tous
les serveurs et bases de données.**

Toutes les applications et applications webs ont un fichier `log4j.properties`
pour configurer les journaux (fichier, format, niveau de log, etc.).


### Applications

Récupérez et extrayez le tarball de l’application
`<application>-<version>-bin-with-dependency.tar.gz`.

Modifiez ou créez les fichiers de configuration (voir le fichier `LISEZMOI` de
l’application pour une liste de ces fichiers et chaque fichier pour des
commentaires).
Un fichier dans le répertoire courant remplace la version par défaut qui est
intégrée au fichier jar.
Vous pouvez extraire la version par défaut commentée de ces fichiers depuis le
fichier jar :

jar xf <application>-<version>.jar application.properties

ou

unzip <application>-<version>.jar application.properties

Utilisez le script fourni pour lancer l’application.


### Conteneur de servlets et SSL/TLS

Un conteneur de servlets doit être installé.

Pour le moment, le IoTa-Installer ne sait gérer qu’Apache Tomcat (versions 6
ou 7). Le IoTa-Installer peut vous aider à en installer un et à le configurer.

Pour utiliser SSL/TLS comme moyen d’authentification mutuelle entre les
applications web de IoTa et leurs clients, un `connector` SSL/TLS doit être
configuré.

Pour Apache Tomcat 7, si vous n’utilisez pas le IoTa-Installer, vous devez
ajouter un élément `connector` similaire à l’exemple suivant dans le fichier
`${CATALINA_HOME}/conf/server.xml` :

<Connector protocol="HTTP/1.1"
port="8443"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="${catalina.home}/conf/ssl/keystore.jks"
keystorePass="changeit"
keyAlias="si_plus_d’une_clef_dans_le_keystore"
keyPass="changeit"
truststoreFile="${catalina.home}/conf/ssl/truststore.jks"
truststorePass="changeit"
crlFile="${catalina.home}/conf/ssl/revocations_list.pem"
clientAuth="true"
sslProtocol="TLS"/>

Ou, si la bibliothèque Apache Portable Runtime (APR) est installée sur et
utilisée par le système cible :

<Connector protocol="HTTP/1.1"
port="8443"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
SSLCertificateFile="${catalina.home}/conf/ssl/server.crt"
SSLCertificateKeyFile="${catalina.home}/conf/ssl/server.pem"
SSLCACertificatePath="${catalina.home}/conf/ssl/clients/"
SSLCARevocationPath="${catalina.home}/conf/ssl/revocations/"
SSLVerifyClient="require"
SSLProtocol="TLSv1"/>

Ajouter les certificats des clients à la liste des certificats de confiance
(truststore) de Tomcat, avec une commande du type:

keytool -importcert -storetype "jks" -keystore "truststore.jks" -alias "key" -file "client.cert"

Les applications OMeGa, ETa et EpcisPHi, pour gérer les identités en TLS, requièrent d'ajouter
au fichier `$CATALINA_HOME/conf/tomcat-users.xml` des rôles:

* pour ETa: <role rolename="eta_user"/>
* pour OMeGa: <role rolename="omega_user"/>
* pour EpcisPHi: <role rolename="ephi_user"/>

Les noms peuvent être différents selon la configuration des applications dans
`<webapp-dir>/WEB-INF/web.xml`.

Chaque utilisateur souhaitant interroger les services d'ETa, d'OMeGa ou
l'interface web d'EpcisPHi doit être identifié dans
`$CATALINA_HOME/conf/tomcat-users.xml` et un ou plusieurs rôles doivent
lui être attribués.
De même, chaque application utilisant ces services doit être connue.
L'utilisateur (ou application) est reconnu par le Distinguished Name (DN)
du certificat utilisé pour se connecter au service. Les rôles de l'utilisateur
(ETa et/ou OMeGa et/ou EpcisPHi) sont déterminés par l'attribut "roles" et
correspondent aux "rolename" ci-dessus.

Pour que l'utilisateur dont le DN du certificat est "CN=toto" puissent
utiliser les services d'ETA, d'OMeGa et d'EpcisPHi ajoutez au fichier
`$CATALINA_HOME/conf/tomcat-users.xml`:
<user username="CN=toto" password="" roles="eta_user,omega_user,ephi_user"/>

Pour se connecter à l'interface web d'Epcis-PHi en tant que "superadmin",
qui gère les comptes utilisateurs, il est nécessaire d'utiliser un certificat
(généré via IoTa-Installer ou keytool) dont le DN (par défaut "UID=superadmin")
correspond à celui qui identifie "superadmin" dans l'annuaire LDAP.
Cet utilisateur doit être ajouté au fichier précédent:
<user username="UID=superadmin" password="" roles="ephi_user"/>


### Applications webs

Récupérez le fichier war de l’application web `<application>-<version>.war`.

Déployez-le dans votre conteneur de servlets (voir la documentation du
conteneur pour plus d’information). Pour Apache Tomcat, cela peut être fait de
plusieurs manières :

1. déjarez manuellement le fichier war dans `$CATALINA_HOME/webapps`
2. copiez le fichier war dans `$CATALINA_HOME/webapps` et laissez Tomcat le
déployer (soit à son propchain redémarrage, soit à chaud si son option
autodeploy est active)
3. utilisez l’application web de gestion (http://localhost:8080/manager)
4. utilisez les outils de déploiement deploy-tools
5. utilisez le greffon Tomcat de Maven

Éditez les fichiers de configuration dans `<webapp-dir>/WEB-INF/classes/`
(voir le `LISEZMOI` de l’application web pour une liste de ces fichiers et
chaque fichier pour les commentaires).

Rechargez l’application web ou relancez le conteneur de servlet.


### Applications Web avec bases de données

1. La base de données

Créez la base de données pour l’application :

CREATE DATABASE <app_db>;

Créez un utilisateur spécifique et accordez-lui les droits d’accès à la
base :

GRANT SELECT, INSERT, UPDATE, DELETE ON <app_db>.*
TO <app_db_user>@localhost IDENTIFIED BY <app_db_password>;

Créez les tables :

use <app_db>;
source <app>_schema.sql;

Le fichier `<app>_schema.sql` de chaque application se trouve dans
`IoTa-Installer/resources` et dans `<app>/src/main/resources/sql`.

2. Installez l’application web comme expliqué plus haut.
À ce point, l’application web n’arrivera probablement pas à démarrer
correctement.

3. Le fichier context

Modifiez le fichier `$CATALINA_HOME/webapps/<webapp>/META-INF/context.xml`
pour qu’il corresponde aux valeurs pour votre base de données (nom, login
et mot de passe).

Parfois, il est nécessaire d’avoir une copie de ce fichier en
`$CATALINA_HOME/conf/localhost/<webapp>.xml`.

Rechargez l’application web ou relancez le conteneur de servlet.

N’oubliez pas d’installer le fichier jar du connecteur JDBC. (Pour Apache
Tomcat et MySQL, copiez `mysql-connector-java.jar` dans `$CATALINA_HOME/lib`.)


### ONS

Certaines applications on besoin d’un service de nommage d’objet (ONS, Object
Naming Service). Des enregistrements NAPTR sont utilisés pour trouver l’URL du
service de découverte (Discovery Service) pour un code EPC donnée.

Voici un fichier de zone typique pour le produit
`urn:epc:id:sgtin:1234567.89012` :

;;
$TTL 1d
;; la zone, l’Id du fabricant
$ORIGIN 7.6.5.4.3.2.1.sgtin.id.ons-peer.com.
@ IN SOA localhost info.example.com ( ; info@example.com
2012010101 ; numéro de version du fichier
3h ; rafraîchissement
1h ; réessai
1d ; expiration
1 ; TTL cache négatif
)
;; le nom de ce serveur
IN NS ons.example.com.
; NAPTR pour les produits
; produit exemple
; order pref flags service regex
2.1.0.9.8 IN NAPTR 0 0 "u" "epc+html" "!^.*$!http://www.example.com/!" .
IN NAPTR 1 0 "u" "epc+epcis" "!^.*$!http://epcis.example.com/epcis/!" .
IN NAPTR 2 0 "u" "epc+ided_epcis" "!^.*$!http://epcis.example.com/eta/!" .
IN NAPTR 3 0 "u" "epc+ds" "!^.*$!http://ds.example.com/ds/services/ESDS_Service!" .
IN NAPTR 4 0 "u" "epc+ds" "!^.*$!http://ds.example.com/dseta/ds/!" .
IN NAPTR 5 0 "u" "epc+ided_ds" "!^.*$!http://ds.example.com/dseta/ided_ds/!" .
; en premier, la page web HTML pour des informations sur le produit
; ensuite, le web service EPCIS-repository associé à cet EPC
; ensuite, le web service EPCIS-repository identifié (ETa) associé à cet EPC
; ensuite, le web service Discovery (Wings) associé à cet EPC
; ensuite, le web service Discovery associé à cet EPC
; finallement, le web service Discovery identifié associé à cet EPC
; l’ordre est libre


Sur les systèmes utilisant une distribution Debian ou dérivée, il suffit
d’installer le paquet `bind9`, de créer un ou plusieurs fichiers de zone sur
le modèle précédent et d’activer ces zones, c’est-à-dire d’ajouter ce genre de
clause dans `named.conf.local` :

zone "7.6.5.4.3.2.1.sgtin.id.ons-peer.com" {
type master;
file "/etc/bind/db.ons.peer.com";
};


Rappelons que pour éviter d’avoir un serveur relais récursif, il faut ajouter
ces options (dans la clause `options` de `named.conf.options`) :

allow-transfer { none; };
allow-recursion { none; };
recursion no;


### LDAP

Certaines applications (YPSilon) ont besoin d’un serveur LDAP.

À partir d’un serveur LDAP fonctionnel, le script `YPSilon/ldap.sh` ou le module
LDAP de l’installateur permet d’ajouter un schéma, un groupe et les deux
utilisateurs superadmin et anonymous.

Sur les distributions Debian et dérivées, il suffit d’installer les paquets
`slapd` et `ldap-utils`. Il est nécessaire de lancer `dpkg-reconfigure slapd`
pour compléter la configuration.

Pour un ajouter un index sur des attributs (comme le DN du certificat
utilisateur utilisé quand ce DN n'est pas compatible avec l'arbre LDAP,
"aliasdn" par défaut), vous pouvez utiliser la commande ldapmodify avec les
propriétés suivantes:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: aliasdn eq

où olcDatabase={1}hdb correspond à la base utilisée.


### ActiveMQ

Certaines applications (ETa-Callback*) ont besoin d’un courtir JMS ActiveMQ.

Sur les distributions Debian et dérivées, il suffit d’installer le paquet
`activemq`.


### Problèmes de mémoire

Du fait d’un usage intensif de l’introspection (p.ex. par Hibernate et CXF),
et si vous voulez installer toutes les applications web sur le même serveur,
la mémoire « PermGen » de la JVM doit être augmentée. Pour Apache Tomcat, cela
peut être fait via la variable d’environnement JAVA_OPTS. Dans les shells
POSIX, il suffit d’une ligne de commande similaire à celle-ci:

export JAVA_OPTS='-Xms2048m -Xmx4096m -XX:MaxPermSize=512m'

Cette variable d’environnement doit être positionnée avant le lancement de
Apache Tomcat, donc avant le lancement de l’installateur IoTa (celui-ci
lançant Apache Tomcat)

Ceci n’est nécessaire que si vous installez toutes (ou presque toutes) les
applications web dans un même conteneur de servlet.
(5-5/12)