3.1 Paramétrage global [mode avancé]

Une fois Geoserver déployé, la première chose à faire en temps normal est de changer le mot de passe de l'administrateur dans la section Security > Passwords > Change Password. Nous ne le ferons toutefois pas ici afin de simplifier le déroulement du TP. Toutes les données de configuration et de définition des couches sont conservées dans un même répertoire dont le chemin par défaut est (sous Linux) /var/lib/tomcat8/webapps/geoserver/data. Afin d'éviter de perdre ces données, suite à une mauvaise manipulation au niveau de tomcat ou une mise à jour, il est conseillé de déplacer ce répertoire data dans un lieu externe à Geoserver. Pour cela :

  1. arrêter le service

    • soit arrêter tomcat, dans un shell :

      sudo service tomcat8 stop
      
    • soit arrêter uniquement Geoserver

  2. déplacer le répertoire data

    sudo mkdir /var/lib/geoserver
    sudo chown tomcat8.tomcat8 /var/lib/geoserver
    sudo mv /var/lib/tomcat8/webapps/geoserver/data /var/lib/geoserver
    
  3. éditer le fichier de configuration de geoserver /var/lib/tomcat8/webapps/geoserver/WEB-INF/web.xml

    • remplacer :

      <!--
      <context-param>
          <param-name>GEOSERVER_DATA_DIR</param-name>
          <param-value>...</param-value>
      </context-param>
      -->
      
    • par :

      <context-param>
         <param-name>GEOSERVER_DATA_DIR</param-name>
         <param-value>/var/lib/geoserver/data</param-value>
      </context-param>
      
  4. redémarrer le service

    • soit relancer tomcat, dans un shell :

      sudo service tomcat8 start
      
    • soit relancer uniquement Geoserver :

NB : il est déconseillé d'utiliser un lien symbolique du système de fichier pour changer le répertoire de place. Il semble en effet que cette méthode ne fonctionne étrangement pas...

Nous pouvons ensuite indiquer les informations administratives dans la partie About & Status > Contact Information.

3.2 Extensions

Geoserver supporte la notion d'extensions qui permet l'ajout de fonctionnalités qui ne sont pas présentes par défaut, comme par exemple :

  • le support de formats vecteurs alternatifs : GML, ...
  • le support de bases de données alernatives : MySQL, Oracle, ...
  • le support de formats raster alternatifs : Oracle Georaster, PostGis Raster, ArcGrid, ...
  • le support du format de fichiers NetCDF
  • le support du protocole CSW (Catalogue Service for the Web)
  • le support du protocole WPS (Web Processing Service)
  • un module de monitoring
  • le support de requêtes spatiales (Cross-Layer filtering)
  • ...

Exemple : installation de l’extension CSS

L'installation d'une extension est simple, elle consiste à déposer un fichier .jar dans un répertoire. Nous allons ajouter l'extension CSS qui nous servira plus tard à définir des styles de couche dans un format de type "Cascading Style Sheet", plus simple que le format SLD supporté de base.

L'extension CSS pour Geoserver a été préalablement téléchargée depuis la page de téléchargement de Geoserver 2.13.2.

  1. Dans un shell, exécuter les commandes suivantes :

    sudo cp /anfsist/geoserver/geoserver-2.13.2-css-plugin/*.jar /var/lib/tomcat8/webapps/geoserver/WEB-INF/lib/
    sudo chown -R tomcat8.tomcat8 /var/lib/tomcat8/webapps/geoserver/WEB-INF/lib/
    
  2. Aller sur la page d’administration de tomcat (http://localhost:8080/manager) et redémarrer Geoserver (bouton Recharger (Reload))

  3. Retourner sur la page d’administration de Geoserver (http://localhost:8080/geoserver)

  4. Cliquer sur Styles dans la barre latérale, puis sur Ajouter un nouveau style (Add a new style). Dans Format vous devriez voir apparaître dans la liste déroulante CSS en plus de SLD et ZIP.

3.3 CORS (Cross-Origin Resource Sharing) [mode avancé]

Pour des raisons de sécurité, la plupart des navigateurs web restreignent les scripts JavaScript permettant d'accéder à des données provenant d'un autre site web.

C'est le cas par exemple lorsque qu'un client OpenLayers (voir fin du TP) provient d'un serveur web dont l'adresse est http://localhost:10080 et émet des requêtes à Geoserver qui est accessible à l'adresse http://localhost:8080 (ce qui est considéré comme une autre adresse car les ports sont différents). Le problème ne se pose pas pour l'accès à un flux WMS car la politique ne s'applique pas aux images, mais il se pose lorsque le client OpenLayers essaie de récupérer une couche WFS de notre Geoserver car il récupère alors des données. Voir la page Same-origin policy de Wikipedia pour plus de détail.

Erreurs CORS lors de l'accès à un serveur WFS depuis OpenLayer

Pour remédier à ce problème il convient de dire à tomcat l'accès depuis d'autres sites en suivant la procédure décrite ici :

  1. Editer le fichier /etc/tomcat8/web.xml pour ajouter le filtre suivant :

    <filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
        <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposed.headers</param-name>
            <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Methods</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CorsFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
  2. Sauvegarder le fichier et relancer tomcat :

    sudo service tomcat8 restart
    

Note : l'accès est ici autorisé à tous les clients, et c'est ce qu'il faut faire si vous souhaitez que votre Geoserver puisse servir des couches à n'importe qui. Dans le cas contraire vous pouvez restreindre l'accès à par exemple votre portail cartographique en modifiant la valeur derrière la balise <url-pattern>.