Cette documentation est destinée à vous faciliter l'installation et la configuration d'un serveur ERDDAP dans une machine (virtuelle ou pas)

Pour le TP que nous allons réaliser ensembles, cette machine vous est fournie en tant que machine virtuelle "VirtualBox" (outil de virtualisation distribué par Oracle) avec Tomcat et Java préinstallés.

Ce TP a été préparé sur une distribution Linux Debian 8 disponible sur * https://cdimage.debian.org/mirror/cdimage/archive/8.8.0/amd64/iso-cd/

Vous pouvez librement vous en inspirer pour créer votre serveur avec une version plus récente...:-)

Préparation de la machine virtuelle

  • Téléchargez une Debian8 64 bits
  • Lancez VirtualBox et créez une VM avec 16 Go de disque dur, 2Go de mémoire
  • On utilise le fichier debian-8.8.0-amd64-CD-1.iso pour créer la VM nommée « erddap »

  • On crée 2 users créés avec les droits « sudo »

    user root, passwd anfsist
    user anfsist, passwd : anfsist
    
  • On installe les "additions invitées" de VirtualBox (NB: pour installer le CD additions invites de virtualBox, il faut quelques paquets supplémentaires comme les headers du kernel Linux, gcc, build-essential module-assistant)

    $ apt-get install linux-headers-3.16.0-4-amd64 gcc build-essential  module-assistant
    $ sh /media/cdrom/VBoxLinuxAdditions.run
    

création d'un répertoire de partage

  • Créez-vous également un répertoire sur votre PC (C:\partage-VM/ par exemple) qui va servir de répertoire partagé entre la machine hôte et la machine virtuelle pour faciliter le passage des données vers la VM.

  • Après avoir créé ce répertoire sur la machine physique, il faut aller dans le menu "périphériques/dossiers partagés" de VirtualBox, pour rajouter votre répertoire (voir l'image ci dessous). On peut également le monter automatiquement au démarrage.

    Par exemple, pour partager le disque /mnt/partage-VM, il faut (dans la VM)
    
    $ sudo mkdir /mnt/share
    $ sudo mount -t vboxsf partage-VM /mnt/share
    

Créer un répertoire nommé "ERDDAP" dans ce montage partagé pour y déposer vos données.

Télécharger et Installer java8

  • Prendre la dernière version de Java en format .tar.gz sur https://www.java.com/fr/download/ (Attention, java9 est disponible depuis le 22/09/2017 mais nous ne l'avons pas testé dans ce contexte)

ATTENTION : bien prendre la version 64bits Linux_x64, par exemple, le paquetage java jre-8u-144-linux-x64.tar.gz qui était le dernier en date à moment de cette rédaction...:-)

  • Extraire le paquet dans dans /opt

    $ cd /opt
    $ tar zxvf /mnt/share/jre-8u144-linux-x64.tar.gz
    
  • Créer un lien symbolique

    $ ln -s /opt/jre1.8.0_144 /opt/java
    

Télécharger et Installer tomcat

  • Créer un user tomcat

    $ adduser tomcat
    (mot de passe anfsist)
    
  • Récupérer la dernière version de tomcat (8.5.20 à la date de préparation de ce TP) Sur https://tomcat.apache.org/download-80.cgi

  • puis, l’installer dans /opt/tomcat

    $ cd /opt
    $ tar zxvf /mnt/share/apache-tomcat-8.5.20.tar.gz
    
  • créer un lien symbolique "tomcat" sur le répertoire de tomcat

     $ ln -s /opt/apache-tomcat-8.5.20 /opt/tomcat/
    
  • Toute la hiérarchie de fichier doit appartenir au user tomcat

    $ chown -R tomcat:tomcat /opt/tomcat
    
  • se connecter avec le user tomcat

    $ su - tomcat
    
  • Pour le user tomcat, ne pas oublier de mofidier la variable PATH pour rajouter le PATH vers java en premier dans le PATH (éventuellement modifier dans le fichier .bashrc et le rajouter dans sudo également).

    $ export PATH=/opt/java/bin:$PATH
    

Initialiser les variables d’environnement pour JAVA_HOME et TOMCAT_HOME dans un fichier setenv.sh par exemple

NB : NE PAS oublier de lancer ce fichier setenv.sh pour initialiser les variables lors de chaque lancement de tomcat et de erddap

$ cd ~tomcat
$ cat > ./setenv.sh 
$ export JAVA_HOME=/opt/java
$ export JRE_HOME=/opt/java
$ export JAVA_OPTS='-server -Djava.awt.headless=true -Xmx1500M -Xms1500M'
$ export TOMCAT_HOME=/opt/tomcat/
$ export CATALINA_HOME=/opt/tomcat
*ctrl D*

$ source ./setenv.sh
  • Lancer le serveur tomcat …

    $ cd ~tomcat
    $ /opt/tomcat/bin/startup.sh
    
  • ou l’arreter

    $ /opt/tomcat/bin/shutdown.sh
    
  • vérifiez si le serveur tomcat est bien lancé sur le port par défaut 8080

    sudo apt-get install lsof
    sudo lsof -i:8080
    
  • tester avec un navigateur si le serveur tomcat est lancé… par défaut tomcat est lancé sur le port 8080

    http://localhost:8080
    

Configuration de tomcat

Si vous voulez faire écouter le serveur sur le port standard 80 (pas nécessaire dans ce TP), il vous faudra modifier le fichier* /opt/tomcat/conf/server.xml *

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

pour autoriser l’accès à l’URL de management http://localhost:8080/manager/html Il faut rajouter un utilisateur pour un certain rôle dans le fichier ~/conf/tomcat-users.xml

<role rolename="manager-gui"/>
<user username="tomcat" password="anfsist" roles="manager-gui"/>

Si vous souhaitez accéder à l'interface de management en dehors de la VM elle même, il vous faudra également ajouter les adresses IP autorisées dans le fichier ./webapps/manager/META-INF/context.xml (ce n'est pas nécessaire pour le TP, mais ça peut vous servir...:-)

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|139.124.2.128" />
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="139\.124\.2\.\d+|::1|0::0:0:0:0:0:0:1" />
</Context>

Astuce pour acceder à la VM depuis l'hôte

Si on veut, on peut acceder à la VM depuis l'hôte physique. C'est parfois plus simple que de rentrer en session dans la VM via l'interface graphique et d'ouvrir une fenetre dans la VM.

Pour cela on fait une redirection de port... on va dire par exemple que le port 22 (ssh) de la VM est redirigé ver le port 3022 de l'hôte physique... et par la suite on se connecte en ssh sur le port 3022 de la machine physique.... et on se retrouve dans laVM :-)

    $ VBoxManage modifyvm "le_nom_de_la_vm" --natpf1 "ssh,tcp,,3022,,22"
    $ VBoxManage startvm "le_nom_de_la_vm"
    $ ssh anfsist@localhost -p 3022

Optionnellement, si on n'a pas du tout besoin de l'affichage, rajouter l'option "--type headless"

Conclusion

Voilà, vous devez avoir une machine virtuelle qui fonctionne avec un serveur Apache/Tomcat opérationnel et prêt à recevoir votre nouveau serveur de données ERDDAP... que nous allons installer ensemble maintenant.