{{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-tgzL'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.shh3. 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* Limiter par défaut l'écoute du service à l'interface locale :... true ...
# 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 apache2h3. 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.confLiens : # 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 :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
# a2enmod proxy proxy_http deflate* Activer le Virtual Host Numdam :
# a2ensite numdam.conf* Recharger la configuration Apache2 :
# service apache reloadh2. 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/autodeployCes paquets sont automatiquement déployés au prochain lancement d'eXist-db. h3. Démarrage * Démarrer manuellement eXist-db.
# service exist restartLe 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 -NLes applications autres que Numdam+ sont alors accessibles par des URLs de la forme http://localhost:8880/exist/apps/dashboard