{{toc}} h1. Installation h2. eXist-db h3. Compilation Il est nécessaire de patcher la version officielle d'eXist-db (2.2) pour Numdam+. * Récupérer les sources de la version 2.2_mathdoc d'eXist-db :
$ git clone mathdoc-infra:/home/bernaupa/git/exist.git
$ cd exist
* Renseigner le proxy pour la récupération des dépendances à la compilation :
$ nano build.properties
...
proxy.host = ifcache.ujf-grenoble.fr
proxy.port = 3128
...
* Compiler eXist-db en version '2.2_mathdoc' :
$ ./build.sh all dist-tgz
L'archive à installer se trouve dans le sous-répertoire @dist@ : @eXist-db-2.2.tar.gz@. Liste des modifications de la version 2.2_mathdoc: # "Cherry-pick de la mise à jour du wrapper + SU_BIN et SU_OPTS":https://github.com/eXist-db/exist/pull/432 # "Amélioration tâche Ant extract utilisant les dates de modification":https://github.com/eXist-db/exist/pull/645 # "Correction de XSLTServlet pour feuilles de style profondes":https://github.com/eXist-db/exist/issues/632 # Adaptation de BetterFORM pour les URL sémantiques de NUMDAM+ h3. Installation * Créer un utilisateur dédié sur le serveur :
# adduser --system --group --disabled-login exist
* Installer les dépendances depuis les paquets de la distribution :
# apt-get install openjdk-7-jre-headless
* Installer eXist-db (FIXME dans le home de l'utilisateur 'exist'):
# tar xfz eXist-db-2.2.tar.gz -C ~exist
# chown -R exist.exist ~exist/eXist-db-2.2
* Restaurer les droits d'exécution du wrapper :
# chmod u+x ~exist/eXist-db-2.2/tools/wrapper/bin/exist.sh
h3. Configuration * Changer utilisateur propriétaire du processus :
# nano ~exist/eXist-db-2.2/tools/wrapper/bin/exist.sh
...
RUN_AS_USER=exist
...
SU_OPTS="-s /bin/bash"
...
* Déclarer eXist-db comme service par script d'init System-V :
# ln -s ~exist/eXist-db-2.2/tools/wrapper/bin/exist.sh /etc/init.d/exist
# update-rc.d exist defaults
* Préparer Jetty derrière Apache en Reverse Proxy :
# nano ~exist/eXist-db-2.2/tools/jetty/etc/jetty.xml

   ...
   true
   ...
* Limiter par défaut l'écoute du service à l'interface locale :
# nano ~exist/eXist-2.2/tools/jetty/etc/jetty.xml

   
   ...
* Modifier le mot de passe administrateur (dba)
# su - exist -s /bin/sh -c "cd eXist-db-2.2 ; java -jar start.jar org.exist.installer.Setup pass:PASSWORD"
* Deployer le dashboard eXist et l'IDE eXide (optionnels) :
# mkdir ~exist/eXist-db-2.2/autodeploy
# cp dashboard-0.4.1.xar eXide-2.1.0.xar shared-resources-X-Y-Z.xar ~exist/eXist-db-2.2/autodeploy
* Configurer la création de sauvegarde automatiques : voir la [[Backup#Création-dune-sauvegarde|définition du job]]
# service exist start
# nano ~exist/eXist-db-2.2/conf.xml
...
h2. Apache h3. Installation * Installer Apache2 depuis les paquets de la distribution :
# apt-get install apache2
h3. Configuration * Désactiver les Virtual Hosts existants :
# a2dissite -q 000-default
# a2dissite -q default-ssl
* Créer le fichier de config pour le Virtual Host de Numdam+ :
# cat > /etc/apache2/sites-available/numdam.conf

   ServerName                   numdam-plus.ujf-grenoble.fr

   DocumentRoot                 /var/www/
   AllowEncodedSlashes          on

   ProxyRequests                off

   # ProxyStatus On

   # do not redirect server-status
   ProxyPass                    /server-status !

   ProxyPass                    /exist/bfResources http://localhost:8080/exist/bfResources nocanon
   ProxyPass                    /exist/Flux http://localhost:8080/exist/Flux nocanon

   ProxyPass                    /api/ http://localhost:8080/exist/restxq/numdam/api/ nocanon
   ProxyPassReverse             /api/ http://numdam-plus.ujf-grenoble.fr/exist/restxq/numdam/api/

   ProxyPass                    / http://localhost:8080/exist/apps/numdam/ nocanon
   ProxyPassReverse             / http://numdam-plus.ujf-grenoble.fr/exist/apps/numdam/

   ProxyPassReverseCookieDomain localhost numdam-plus.ujf-grenoble.fr
   ProxyPassReverseCookiePath   /exist /

   ErrorLog  ${APACHE_LOG_DIR}/numdam-error.log
   LogFormat "%h %l %u %t \"%r\" %>s %b" common
   CustomLog ${APACHE_LOG_DIR}/numdam-access.log common

Liens : # https://wiki.eclipse.org/Jetty/Howto/Configure_mod_proxy # http://httpd.apache.org/docs/2.2/mod/mod_proxy.html # http://exist-db.org/exist/apps/doc/production_web_proxying.xml#D2.2.3.5 # https://wiki.eclipse.org/Jetty/Tutorial/Apache#Configuring_mod_proxy # https://wiki.eclipse.org/Jetty/Tutorial/Apache#Proxying_SSL_on_Apache_to_HTTP_on_Jetty * Activer les modules Apache pour Reverse Proxy :
# a2enmod proxy proxy_http deflate
* Activer le Virtual Host Numdam :
# a2ensite numdam.conf
* Recharger la configuration Apache2 :
# service apache reload
h2. NUMDAM - Raffinement h3. Préparation * Récupérer les projets et dépendances depuis le dépôt Git (application et squelette de la base de données)
$ mkdir numdam+
$ cd numdam+
$ git clone mathdoc-infra:/home/bernaupa/git/numdam+/numdam-parent.git
$ git clone mathdoc-infra:/home/bernaupa/git/numdam+/numdam.git
$ git clone mathdoc-infra:/home/bernaupa/git/numdam+/numdam-data.git
* Créer les paquets Numdam+
$ ( cd numdam ; mvn install )
$ ( cd numdam-data ; mvn install )
Les paquets créés se trouvent dans les sous-répertoires @build@ de chaque projet avec l'extension @.xar@. Ils doivent être transférés sur le serveur dans un répertoire accessible par l'utilisateur 'exist'. h3. Installation * Installer les paquets XAR sur le serveur
# mkdir -p ~exist/eXist-db-2.2/autodeploy
# cp shared-X-Y-Z.xar numdam-X.Y.xar numdam-data-X-Y.xar ~exist/eXist-db-2.2/autodeploy
Ces paquets sont automatiquement déployés au prochain lancement d'eXist-db. h3. Démarrage * Démarrer manuellement eXist-db.
# service exist restart
Le service est lancé au démarrage de la machine par le script d'init. h1. Notes h2. @runuser@ vs @su@ Sur les systèmes disposant de la commande @runuser@ cette dernière sera utilisée préférentiellement à @su@. Mais le script ne permet pas de spécifier un shell. Pour cela il faut rajouter l'option '-s /bin/shell' ligne 738 de @exist.sh@. h2. dashboard, eXide La configuration précédente d'Apache définit un mandataire inverse (reverse proxy) pour la seule application Numdam+. Les autres applications ne sont pas accessibles depuis une machine distante, le serveur eXist-db n'écoutant que sur l'interface locale. Un utilisateur disposant d'un compte sur le serveur peut mettre en place un SSH tunneling depuis sa machine vers le serveur :
$ ssh -L 8880:localhost:8080 numdam-plus -N
Les applications autres que Numdam+ sont alors accessibles par des URLs de la forme http://localhost:8880/exist/apps/dashboard