Carto-Station IN COMMON

Carto-Station : logiciels de cartographie

L’Atelier Cartographique a créé Carto-Station, une plateforme applicative web offrant des outils de gestion, de visualisation et de publication de données spatiales.

@natacha compte l’utiliser dans le cadre des ateliers cartographiques de la rentrée, aussi nous en avons installé une version sur https://cartostation.incommon.cc/

Installation

La documentation d’installation de l’application Django est disponible en anglais dans les sources de la partie serveur (sdi) du logiciel.

Le suivi de la documentation n’est pas forcément aisé à partir d’un système vierge et sans connaissance de Django. Voici quelques notes afin de se rappeler certaines étapes non-documentées et améliorer la documentation. Note : pour l’instant nous n’avons pas atteint le stade fonctionnel…

Pré-requis

Certains paquets sont nécessaires en plus de ceux documentés :
python3-virtualenv python-virtualenv postgresql postgresql-server-dev-all

PostGIS

Le paquet postgis doit être installé pour la base de données des layers.

4 GB RAM

ElasticSearch recommande 4 GB de RAM pour fonctionner correctement.

Gettext

Le paquet gettext est nécessaire pour installer les fichiers de langues de Django avec python3 manage.py compilemessages --settings prod_settings.

NodeJS

Il faut installer nodejs et webpack pour faire tourner les éléments de l’application.

Configuration du serveur

Ouf, ce n’est pas de tout repos, la documentation de Python et Django semblant, parmi cette communauté, aller de soi. Mais bon. Il faut faire quelques installations supplémentaires pour que la configuration avec Nginx fonctionne

apt install uwsgi
Configuration : `/etc/uwsgi/apps-available/cartostation.ini`
[uwsgi]                                                                                                                               
socket = 127.0.0.1:8000                                                                                                               
virtualenv = /home/carto/carto-station/sdi/venv                                                                                       
pythonpath = /home/carto/carto-station/sdi/venv/bin                                                                                   
chdir = /home/carto/carto-station/sdi                                                                                                 
env = DJANGO_SETTINGS_MODULE=prod_settings                                                                                            
wsgi-file = main/wsgi.py                                                                                                              
threads = 2                                                                                                                           
workers = 5                                                                                                                           
plugins = python3
Configuration: `/etc/nginx/sites-available/cartostation.incommon.cc`
#
## cartostation.incommon.cc
#

upstream cartostation {
        server 127.0.0.1:8000;
#       server unix:///run/uwsgi/app/cartostation/socket;
}

server {
        listen 80 default;
        server_name cartostation.incommon.cc;

        try_files $uri =404;

        location / {
                return 301 https://$server_name$request_uri;
        }
}

server {
        listen 443 http2 ssl default;
        listen [::]:443 http2 ssl default;
        server_name cartostation.incommon.cc;

        root /var/www/sdi;

        ssl_certificate      /etc/letsencrypt/live/cartostation.incommon.cc/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/cartostation.incommon.cc/privkey.pem;

        charset     utf-8;
        client_max_body_size 8M;

        location /media {
                alias /srv/cartostation/assets;
        }

        location /static {
                alias /srv/cartostation/static;
        }

        location / {
                uwsgi_pass cartostation;
                include uwsgi_params;
        }
}

On active les configurations :

cd /etc/uwsgi/apps-enabled
ln -s ../apps-available/cartostation.ini
systemctl restart uwsgi.service
cd /etc/nginx/sites-enabled
rm -f default # si vous avez ça
ln -s ../sites-available/cartostation.incommon.cc
nginx -t && systemctl restart nginx.service

Ce qui manque ici :

  1. Les certificats SSL : installer certbot et les mettre en service
  2. Autre chose ? Merci de le commenter !

Voilà, le serveur est disponible, on peut à présent ajouter les clients…

Installation des clients

Nous avons besoin de webpack, en tant qu’utilisateur carto on va dans notre répertoire clients puis on effectue les opérations suivantes :

cd ~/carto-station/clients
npm install webpack

Vulnérabilités

Le gestionnaire de paquets npm révèle des vulnérabilités sur les dépendances Node, comme d’habitude serais-je tenté de dire. Malheureusement npm audit fix ne résout pas tout et nous voici avec :

fixed 1112 of 1180 vulnerabilities in 1460 scanned packages
  61 vulnerabilities required manual review and could not be updated
  4 package updates for 7 vulnerabilities involved breaking changes
  (use `npm audit fix --force` to install breaking changes; or refer to `npm audit` for steps to fix these manually)

Pour l’instant nous allons nous contenter d’installer les clients avec les vulnérabilités sans quoi il nous faudrait également fixer les changements et nous ne sommes pas prêts à nous lancer dans la compréhension du code ou de TypeScript. C’est le taf de Pierre :slight_smile:

Continuons avec ce qu’il nous indique pour fabriquer les clients – pris dans build.sh:

for i in  $(find . -name webpack.config.js -not -path  './node_modules/*'  -exec sh -c 'dirname {}' \;) ; do npm run build $i; done

Il nous faut ensuite redéployer les fichiers statiques afin de mettre en ligne les clients :

cd ~/carto-station/sdi
python3 manage.py collectstatic --settings=prod_settings

Tadaa!

La suite…

Bon, cela fonctionne, mais cela ne fonctionne pas.
Il nous manque encore quelques étapes :

  1. Régler l’authentification (rappelez-vous le LDAP – on fera ça plus tard)
  2. Ajouter les fonds de carte (layers)
  3. Ajouter d’autres applications ?

Du coup on ajoute un super utilisateur avec python3 manage.py createsuperuser --settings prod_settings et on explore la suite…

Style…

Bon, ça marche ! Nous avions une erreur sur l’URL d’OWS. Une étape supplémentaire franchie.
À présent nous nous rendons compte que certaines applications ne peuvent pas être compilées, par exemple Solar : cela vient du fait que le style n’est pas celui utilisé par défaut mais plutôt celui mis à jour par exemple sur https://gitlab.com/atelier-cartographique/carto-station-platforms. On doit trouver le moyen d’intégrer ces dépôts dans le déploiement afin qu’ils prennent le pas sur les fichiers par défaut, ou utiliser la branche correspondante (solar).

1 Like