Migration vers la 4.1 ou le nouveau système de livraison de Carto-SI (Linux)¶
Carto-SI a modifié son système de livraison pour suivre les méthodes standards de livraison Linux. Il utilise maintenant des packages Debian (.deb) et Red Hat (.rpm).
Ce document explique ce qui est installé par les packages ainsi que les étapes pour migrer vers le nouveau système tout en préservant vos données.
Vu d’ensemble¶
Afin de pouvoir écouter sur le port 80 et 443 tout en évitant de lancer Carto-SI avec le user root
, il a été décidé de faire tourner Carto-SI derrière un nginx.
Le schéma ci-dessous illustre la relation entre nginx et Carto-SI. Par défaut, nginx écoute sur le port 80 et Carto-SI sur le port 9327. Le nginx est configuré comme reverse proxy et transmet toutes les requêtes qu’il reçoit à Carto-SI. Le package ne touche pas à la configuration d”iptables
. Il est donc possible que le port 9327 soit accessible de l’extérieur de la VM.
L’option listen-localhost-only : true
du fichier de configuration /opt/carto-si/data/conf/carto-si.properties
permet de limiter l’écoute du port 9327 sur l’IP local. Ainsi, il n’est plus possible de se connecter sur ce port depuis l’extérieur de la VM.
Configuration de nginx¶
Carto-SI installe nginx avec les configurations par défaut de l’OS tout en apportant les modifications suivantes :
La page par défaut est retirée (
/etc/nginx/sites-enabled/default
).Sur Debian, la configuration du reverse proxy de Carto-SI est copié sur
/etc/nginx/sites-available/carto-si
.Sur Red Hat, la configuration du reverse proxy de Carto-SI écrase directement le fichier
/etc/nginx/nginx.conf
.
Vous êtes libre de configurer nginx pour activer le HTTPS.
Configuration de Carto-SI¶
Carto-SI est installé dans /opt/carto-si
et les données se trouvent sur dans /opt/carto-si/data
. C’est à cet endroit que vous devriez copier vos données.
Carto-SI tourne avec le user carto-si
.
La configuration des logs a été internalisée dans les jars
. Le fichier de configuration log4j.properties
n’est plus utilisé.
L’option de démarrage étant configuré dans systemd
, le fichier args.vm
n’est plus utilisé.
Installation de Java¶
Carto-SI installe la JRE de l’OpenJDK 11.
Configuration des logs¶
La gestion des logs a été modifiée. Le fichier data/conf/log4j.properties
n’est plus utilisé. Les logs sont forcément écrits dans le dossier data/log
.
Le niveau de logs peut être défini dans le fichier data/conf/carto-si.properties
.
De nouveaux fichiers de logs ont été rajoutés :
Les fichiers
orientdb.log
sont les logs de la base de données.Il existe un fichier de logs par tenant pour y journaliser les logs le concernant. Pour la plupart d’entre vous, n’ont qu’un tenant nommé
default
.
Le fichier carto-si.log
ne change pas et contient toujours une copie des logs des tenants.
Méthode de migration¶
Deux politiques peuvent être suivies :
On profite de la montée de version pour créer une nouvelle VM.
On migre la VM existante.
Nettoyage de la VM¶
Si vous souhaitez garder la VM, il faut réaliser ces travaux de préparation :
Arrêter Carto-SI et faire en sorte qu’il ne démarre plus automatiquement
Si Carto-SI est installé sur
/opt/carto-si/
, renommer le dossier.Si vous avez un dossier
/var/log/carto-si/
, renommer le.
Installer Carto-SI¶
Télécharger et installer Carto-SI comme indiqué sur Installation on premise.
Arrêter Carto-SI¶
Utilisez la commande suivante :
systemctl stop carto-si.service
Copier vos données¶
À l’exception du dossier data/conf
, copier l’ensemble des fichiers de votre ancien dossier data vers /opt/carto-si/data
.
Changer le propriétaire des fichiers data avec la commande suivante :
chown -R carto-si /opt/carto-si/data
Reporter vos configurations manuellement dans le fichier /opt/carto-si/data/conf/carto-si.properties
.
Les fichiers args.vm
et log4j.properties
ne sont plus utilisés.
Démarrer Carto-SI¶
Utilisez la commande suivante :
systemctl stop carto-si.service
migrer les certificats https¶
Pour configurer nginx avec le certificat utilisé par Carto-SI, commençons par définir certaines variables.
Commençons par générer les variables qui correspondent aux configurations contenues dans le fichier carto-si.properties
.
keystore_file=[keystore-file du fichier de configuration]
keystore_type=[keystore-type du fichier de configuration]
keystore_password=[keystore-password du fichier de configuration]
keystore_version=[keystore-version du fichier de configuration]
Définissons le chemin de keytool.
Sous Debian, taper :
keytool=/usr/lib/jvm/java-11-openjdk-amd64/bin/keytool
Sous Red Hat, taper :
keytool=/usr/lib/jvm/java-11-openjdk-11.*/bin/keytool
Nous avons besoin de trouver le nom de l’alias contenant le certificat. Taper la commande suivante :
$keytool -v -list -keystore $keystore_file -storepass $keystore_password | grep -i alias
Définissez la variable qui contient le nom de l’alias :
alias=[nom de l'alias qui se trouve après "Alias name: "]
Ensuite, on extrait les certificats du keystore avec les commandes suivantes. (Le mot de passe demandé est celui de votre keystore.) :
$keytool -importkeystore -srckeystore $keystore_file -srcstorepass $keystore_password -srckeypass $keystore_password -srcalias $alias -destalias $alias -destkeystore carto-si.p12 -deststoretype PKCS12 -deststorepass $keystore_password -destkeypass $keystore_password
openssl pkcs12 -in carto-si.p12 -nodes -nocerts -out carto-si.key
openssl pkcs12 -in carto-si.p12 -nokeys -out carto-si.crt
Ensuite, préparons nginx.
sudo mkdir /etc/nginx/ssl
sudo cp carto-si.crt carto-si.key /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
Sous Debian, remplacer le contenu du fichier /etc/nginx/sites-available/carto-si
par (une copie du fichier est disponible sur /opt/carto-si/data/conf/carto-si.ssl.nginx
) :
server {
listen 80;
# redirige vers le https
location / {
rewrite ^ https://$host$request_uri? permanent;
}
}
server {
listen 443 ssl;
client_max_body_size 2M;
ssl_certificate /etc/nginx/ssl/carto-si.crt;
ssl_certificate_key /etc/nginx/ssl/carto-si.key;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
location / {
root /var/www/html/carto-si;
}
location /api {
proxy_pass http://127.0.0.1:9327;
}
}
Sous Red Hat, remplacer le contenu du fichier /etc/nginx/nginx.conf
par (une copie du fichier est disponible sur /opt/carto-si/data/conf/carto-si.ssl.nginx
) :
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
# redirige vers le https
location / {
rewrite ^ https://$host$request_uri? permanent;
}
}
server {
listen 443 ssl default_server;
ssl_certificate /etc/nginx/ssl/carto-si.crt;
ssl_certificate_key /etc/nginx/ssl/carto-si.key;
# vérifier que le fichier existe bien. Sinon, taper la commande suivante :
# sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
server_name _;
root /usr/share/nginx/html/carto-si;
location / {
root /usr/share/nginx/html/carto-si/ ;
}
location /api {
proxy_pass http://127.0.0.1:9327;
}
}
}
Pour finir, rajouter la configuration suivante dans le fichier /opt/carto-si/data/conf/carto-si.properties
:
listen-localhost-only : true