Cet article est destiné surtout aux utilisateurs Windows qui se retrouvent, à un moment donné, confrontés au besoin d’installer Postgresql et geoserver sur un serveur Linux.
A un moment donné, il faut bien faire le saut entre son PC et un véritable serveur. Une fois installé (postgresql et geoserver) l’administration et le travail se fgeront à distance avec les mêmes outils que sur le PC: pgAdmin pour Postgresql et l’interface WEB pour Geoserver.
Mais, entre les deux, il faut bien se lancer dans le monde Linux. Voici ce qu’il faut faire pour passer au mieux cette étape.
On va supposer que vous avez réussi à vous connecter sur votre serveur (je vous conseille d’utiliser Putty sur Windows), et que vous avez des droits d’administration.
Installation de Postgresql et Postgis
Sous Linux vous avez deux méthodes pour installer Postgresql: en installant un paquet ou manuellement en téléchargeant les fichier binaires. Nous verrons ici la première méthode qui, non seulement est plus simple, mais aussi elle vous permet des mises à jour beaucoup p^lus simples.
Le principe est simple:vous référencez un entrepôt correspondant à votre version système contenant l’installation de Postgresql et vous demandez son installation.
Voici comment faire ceci sous Ubuntu 18.04 qui est la dernière LTS (mais ça marche aussi avec la version 19).
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt bionioc-pgdg main" >> /etc/apt/sources.list'
wget --quiet -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
La première ligne ajoute l’entrepôt à la liste d’entrepôts disponibles sur votre machine. La deuxième ajoute la clé d’accès. La troisième met à jour le contenu de la commande d’installation des paquets (apt).
Vous pouvez maintenant installer Postgresql et Postgis:
sudo apt install postgresql-11
sudo apt install postgresql-11-postgis-2.5
sudo apt install postgresql-11-pgrouting
La première ligne installe Postgresql. La deuxième installe Postgis.
La troisième ligne est là juste pour l’exemple. Vous pouvez installer d’autres extensions selon vos besoins. Ici l’exemple installe l’extension pgrouting qui permet de calculer des itinéraires.
C’est fini, l’installation est terminée.
Avant de vérifier que tout c’est bien passé, il faut savoir que l’installation de postgresql crée un nouvel utilisateur sur votre serveur, nommé postgres. Il ne faut pas confondre cet utilisateur système avec l’utilisateur postgres dans Postgresql. Comme vous, vous avez un identifiant système qui vous permet de vous connecter sur le serveur, et aussi un identifiant Postgresql qui vous permet de vous connecter à vos bases de données.
Avant de continuer, il vaut mieux compléter cet utilisateur avec un mot de passe. Si non, vous serez bloqué si pour une opération le système a besoin de valider cet utilisateur.
Pour affecter un mot de passe à l’utilisateur système postgres:
sudo passwd postgres
Vous devrez rentrer deux fois le mot de passe choisi.
Maintenant, vous pouvez tester que votre installation s’est bien passée.
sudo su - postgres
psql
\conninfo
Si vous avez ce type de message, c’est que Postgresql est bien installé.
Profitez maintenant pour rentrer le mot de passe du rôle postgres dans Postgresql:
ALTER ROLE postgres ENCRYPTED PASSWORD 'mot de passe';
Pour sortir de postgresql, tapez \q.
Paramétrage de Postgresql
Pour pouvoir vous connecter à distance il faut modifier quelques paramètres.
Tout d’abord dans le fichier postgresql.conf il faut activer l’écoute de toutes les adresses (par défaut postgresql n’écoute que la machine serveur).
Allez dans le répertoire d’installation (/etc/postgresql/11/main/ dans cet exemple) et ouvrez le fichier postgresql.conf
Recherchez la ligne (en commentaire) listen_addresses et modifiez la en
listen_addresses = '*'
(Touche Inser pour ouvrir le mode édition, touche Escape pour en sortir, :wq pour enregistrer et sortir de Vim)
Le deuxième fichier à modifier est pg_hba.conf, situé dans le même répertoire. Ce fichier valide les adresse ip et les noms d’utilisateur qui essayent de se connecter à Postgresql
Vous allez ajouter une ligne
host all all 0.0.0.0/0 md5
pour autoriser toutes les adresses IP à se connecter à condition de disposer d’un nom d’utilisateur postgres et d’un mot de passe. Votre fichier doit ressembler à ça:
Vous pourrez modifier ultérieurement ce fichier pour restreindre les accès à certaines bases, à certaines plages d’adresses, à certains utilisateurs,etc.
Redémarrez Postgresql pour que les modifications soient prises en compte:
sudo service postgresql restart
A partir de là, vous pouvez vous connecter avec pgAdmin à distance.
Installation de Geoserver
Geoserver a besoin de l’environnement Java Runtime. S’il n’est pas déjà installé sur votre serveur, vous l’installez avec la ligne de commande suivante:
apt-get install openjdk-8-jre
Aussi, il vous faut disposer de l’application unzip. Si elle n’est pas déjà installée, vous l’installez avec la commande suivante:
sudo apt install unzip
Pour installer Geoserver:
sudo mkdir -p /var/www/geoserver
cd /var/www/geoserver
sudo wget https://netcologne.dl.sourceforge.net/project/geoserver/GeoServer/2.15.2/geoserver-2.15.2-bin.zip
sudo unzip geoserver-2.15.2-bin.zip
sudo mv geoserver-2.15.2/* .
sudo echo "export GEOSERVER_HOME=/var/www/geoserver" >> ~/.profile
. ~/.profile
Avec ces lignes, vous créez un répertoire /var/www/geoserver, vous téléchargez Geoserver version 2.15.2 et vous l’installez dans ce répertoire.
Pour démarrer Geoserver, allez dans le répertoire bin (cd bin) et tapez la commande:
sudo sh startup.sh
Pour vérifier que l’installation c’est bien terminée, à partir de votre PC, dans un navigateur, tapez l’adresse suivante:
http://adresse ip de votre serveur:8080/geoserver/web
Vous devez avoir la page suivante
Si vous souhaitez vous connecter, l’username par défaut est admin et le mot de passe geoserver. Vous serez invité à changer le mot de passe par défaut lors de votre connexion.
Revenons sur la console de votre serveur. Pour arrêter geoserver tapez simplement ctrl-c.
Il vous reste à configurer Geoserver pour qu’il démarre automatiquement lors de chaque reboot.
Vous devez tout d’abord créer un utilisateur geoserver
adduser --system geoserver
Et donner la propriété à cet utilisateur sur les parties modifiables de l’installation. Dans notre exemple on a installé geoserver dans /var/www/geoserver
chown -R geoserver /var/www/geoserver/data_dir
chown -R geoserver /var/www/geoserver/logs
Et autoriser la lecture de tous les fichiers
chmod -R o+rX /var/www/geoserver
Allez dans le répertoire etc et créez un fichier appelé geoserver.service
cd /var/www/geoserver/etc
sudo vim geoserver.service
Vous allez copier dans ce fichier les lignes suivantes, après vérification des chemins et noms des répertoires et fichiers: (touche Inser pour pouvoir rentrer du texte)
[Unit]
Description=GeoServer
After=network.target
[Service]
User=geoserver
Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
Environment=GEOSERVER_HOME=/var/www/geoserver
ExecStart=/var/www/geoserver/bin/startup.sh
ExecStop=/var/www/geoserver/bin/shutdown.sh
[Install]
WantedBy=multi-user.target
Pour sortir de vim tapez Escape, puis :wq
Pour activer le service tapez
systemctl enable /var/www/geoserver/etc/geoserver.service
sudo systemctl start geoserver.service
La première ligne n’est à exécuter qu’une fois (systemctl créera un lien symbolique vers le fichier).
Voilà. A chaque démarrage du système, Geoserver sera lancé.
A partir de là, vous pourrez travailler à distance, depuis votre poste de travail.
Bonjour,
> Dans notre exemple on a installé geoserver dans /var/www/geoserver
> chown -R geoserver /var/geoserver/etc/data_dir
> chown -R geoserver /var/geoserver/etc/logs
Il doit manquer www/ avant geoserver dans les deux commandes
Merci Bibi! c’est corrigé.
Allez on y est presque :
« Dans notre exemple on a installé geoserver dans /var/www/geoserver »
chown -R geoserver /var/www/geoserver/data_dir
chown -R geoserver /var/www/geoserver/logs »
Le « /etc » est de trop.
Et pour ma part (je suis pas spécialiste) mais la ligne suivante n’a pas fonctionnée (sur une version ubuntu 16.04) :
sudo systemctl start geoserver.service
Après quelques recherches, j’ai rajouté dans le fichier geoserver.service
[Unit]
au dessus de « Description=GeoServer »
Puis j’ai copié le fichier dans le répertoire
/etc/systemd/system/
(peut-être un lien symbolique aurait été plus adéquat, mais j’ai pas testé) et après avoir taper la commande suivante
sudo systemctl enable geoserver.service
Le service se lance bien après un redémarrage et tout marche nickel. Merci beaucoup pour ce(s) tutoriel(s) toujours très utile(s).
Merci! En effet, dans le copier-coller [Unit] était passé à la trappe. Et j’ai sauté le dernier pas en oubliant systemctl enable /var/www/geoserver/etc/geoserver.service qui crée le lien symbolique.
C’est corrigé dans l’article.