serveurs:installation:web-srv:geonature-nginx

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
serveurs:installation:web-srv:geonature-nginx [2021/09/09 13:06] – [Installer les domaines de GeoNature] jpmilcentserveurs:installation:web-srv:geonature-nginx [2023/11/15 08:18] (Version actuelle) – [Installer les domaines de GeoNature] jpmilcent
Ligne 21: Ligne 21:
         proxy_read_timeout 300s;         proxy_read_timeout 300s;
         proxy_connect_timeout 75s;          proxy_connect_timeout 75s; 
-        proxy_pass http://127.0.0.1:8000/;# ATTENTION : bien mettre un slash final ! Sinon => 404+        proxy_pass http://127.0.0.1:8000/api/;# ATTENTION : bien mettre un slash final ! Sinon => 404
     }     }
 } }
Ligne 27: Ligne 27:
   * Créer un lien depuis les sites actifs : ''cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/geonature.conf geonature.conf''   * Créer un lien depuis les sites actifs : ''cd /etc/nginx/sites-enabled/ ; ln -s ../sites-available/geonature.conf geonature.conf''
   * Tester la config et relancer Nginx si OK : ''nginx -t && nginx -s reload''   * Tester la config et relancer Nginx si OK : ''nginx -t && nginx -s reload''
-  * Tester l'URL <nowiki>http://geonature.<domaine-sinp>/</nowiki> qui doit afficher une erreur 502 si le serveur //Gunicorn// de GeoNature n'est pas lancé. +  * Tester l'URL <nowiki>http://geonature.<domaine-sinp>/</nowiki> qui doit afficher une erreur 502 si le service de GeoNature n'est pas lancé. 
-    * Vérifier les services supervisés par Supervisor : ''supervisorctl status'' +    * Vérifier le service : ''systemctl status geonature.service'' 
-    * Démarrer le service //GeoNature// : ''supervisorctl start geonature2'' +    * Démarrer le service //GeoNature// : ''systemctl start geonature'' 
-    * Arrêter le service //GeoNature// : ''supervisorctl stop geonature2''+    * Arrêter le service //GeoNature// : ''systemctl stop geonature''
  
 ===== Ajout de la page de maintenance auto ===== ===== Ajout de la page de maintenance auto =====
Ligne 47: Ligne 47:
 ===== Activer SSL et HTTP2 pour GeoNature ===== ===== Activer SSL et HTTP2 pour GeoNature =====
   * Installer un certificat SSL via Certbot (Letsencrypt) : ''<nowiki> certbot --nginx -d <alias>.<domaine-sinp> -d geonature.<domaine-sinp> </nowiki>''   * Installer un certificat SSL via Certbot (Letsencrypt) : ''<nowiki> certbot --nginx -d <alias>.<domaine-sinp> -d geonature.<domaine-sinp> </nowiki>''
-    * Ex. pour PACA : '' certbot --nginx -d expert.silene.eu -d geonature.silene.eu ''+    * Ex. pour PACA : ''<nowiki> certbot --nginx -d expert.silene.eu -d geonature.silene.eu </nowiki>''
     * Ex. pour AURA : <code bash>  certbot --nginx \     * Ex. pour AURA : <code bash>  certbot --nginx \
     -d donnees.biodiversite-auvergne-rhone-alpes.fr -d geonature.biodiversite-auvergne-rhone-alpes.fr \     -d donnees.biodiversite-auvergne-rhone-alpes.fr -d geonature.biodiversite-auvergne-rhone-alpes.fr \
Ligne 70: Ligne 70:
     * https://www.ssllabs.com/ssltest/analyze.html?d=<alias>.<domaine-sinp>     * https://www.ssllabs.com/ssltest/analyze.html?d=<alias>.<domaine-sinp>
     * https://www.ssllabs.com/ssltest/analyze.html?d=geonature.<domaine-sinp>     * https://www.ssllabs.com/ssltest/analyze.html?d=geonature.<domaine-sinp>
-  * Modifier les redirections (geonature.<domaine-sinp> -> <alias>.<domaine-sinp>) pour qu'au final le fichier //geonature.conf// contienne : <code nginx>+  * Préparer les fichiers de maintenances dans ''~/www/maintenance/'' en les transférant depuis le dépôt //sinp-<region>-srv// à l'aide de //rsync//
 +  * Modifier les redirections (geonature.<domaine-sinp> -> <alias>.<domaine-sinp>) et l'UUID pour la maintenance (//<uuid-maintenance-disable>//) pour qu'au final le fichier //geonature.conf// contienne : <code nginx>
 server { server {
     listen 443 ssl http2; # managed by Certbot     listen 443 ssl http2; # managed by Certbot
Ligne 76: Ligne 77:
  
     server_name <alias>.<domaine-sinp>;     server_name <alias>.<domaine-sinp>;
-    root /home/geonat/www/geonature/frontend/dist; 
  
 +    # Set maintenance mode
 +    # Define root paths
 +    set $base_root_path /home/geonat/www;
 +    set $geonature_root_path $base_root_path/geonature/frontend/dist;
 +    set $maintenance_root_path $base_root_path/maintenance/geonature;
 +    # Disable maintenance mode by default
 +    set $maintenance off;
 +
 +    # Activate maintenance mode ("short") if GeoNatue is being recompiled
 +    if (!-d $geonature_root_path) {
 +        set $maintenance on; 
 +        set $maintenance_duration "short";
 +    }   
 +
 +    # Activate maintenance mode ("long") if file "maintenance.enable" exists
 +    if (-f $maintenance_root_path/maintenance.enable) {
 +        set $maintenance on; 
 +        set $maintenance_duration "long";
 +    }   
 +    
 +    # Disable maintenance mode if user browser send a cookie named "maintenance_disable" with a specific UUID value
 +    if ($cookie_maintenance_disable = "<uuid-maintenance-disable>") {
 +        set $maintenance off;
 +    }   
 +
 +    # Disable maintenance mode for specific IP (default web server IP)
 +    if ($remote_addr ~ (51.91.137.130)) {
 +        set $maintenance off;
 +    }   
 +
 +    # Disable maintenance mode for the URI with the path to the shared CSS, JS, or images used in the maintenance page.
 +    if ($uri ~ "^/maintenance/shared/") {
 +        set $maintenance off;
 +    }   
 +
 +    # Return HTTP code 503 (service unavailable) if maintenance is on
 +    if ($maintenance = on) {
 +        return 503;
 +    }   
 +
 +    error_page 503 @maintenance;
 +
 +    # Display the long or short term maintenance page.
 +    location @maintenance {
 +        root $maintenance_root_path;
 +        rewrite ^(.*)$ "/maintenance.$maintenance_duration.html" break;
 +    }   
 +
 +    # Set root path
 +    root $geonature_root_path;
 +
 +    # Change root path for shared files used in the maintenance page.
 +    location ~ "^/maintenance/shared/" {
 +        root $base_root_path;
 +    }
 +    
     # GeoNature Angular App     # GeoNature Angular App
     # No cache for index.html Angular App and config/locale json files     # No cache for index.html Angular App and config/locale json files
Ligne 154: Ligne 210:
 </code> </code>
   * **Notes** : la configuration Nginx de GeoNature active la mise en cache définitive des fichiers comprenant un hash dans leur nom (JS, CSS, polices et images). Angular Cli génère des fichiers comprenant le hash de leur contenu dans leur nom. Tout nouveau build génère une nouveau hash pour les fichiers modifiés. Les fichiers peuvent donc être mis en cache définitivement à l'exception du fichier //index.html//.   * **Notes** : la configuration Nginx de GeoNature active la mise en cache définitive des fichiers comprenant un hash dans leur nom (JS, CSS, polices et images). Angular Cli génère des fichiers comprenant le hash de leur contenu dans leur nom. Tout nouveau build génère une nouveau hash pour les fichiers modifiés. Les fichiers peuvent donc être mis en cache définitivement à l'exception du fichier //index.html//.
-===== Création config Nginx maintenance GeoNature ===== +===== Gestion des pages de maintenance ===== 
-  * **Notes** : le fichier de configuration //geonature_maintenance.conf// pointe vers un fichier //index.html// indiquant que GeoNature est en maintenance+Deux types de pages de maintenance peuvent être affichées : 
 +  * une page de maintenance "**courte**" indiquant que le site sera à nouveau fonctionnel d'ici quelques minutes 
 +  * une page de maintenance "**longue**" indiquant que le site sera à nouveau fonctionnel après une durée indéterminée. La page se rafraîchie automatiquement toutes les 30s. 
 + 
 +==== Maintenance courte ==== 
 +Le site bascule **automatiquement** en maintenance courte lorsque le dossier ''dist'' contenant les fichiers du site générés par Angular n'existe pas. 
 + 
 +La compilation de GeoNature via Angular supprime automatiquement ce dossier en début de compilation et le régénère à la fin. 
 + 
 +==== Maintenance longue ==== 
 +Pour basculer le site GeoNature en maintenance longue, renommer le fichier ''maintenance.disable'' en ''maintenance.enable'' dans le dossier ''~/www/maintenance/geonature/''
 +  * Activation : <code bash>mv ~/www/maintenance/geonature/maintenance.disable ~/www/maintenance/geonature/maintenance.enable</code> 
 +  * Désactivation : <code bash>mv ~/www/maintenance/geonature/maintenance.enable ~/www/maintenance/geonature/maintenance.disable</code> 
 + 
 +Ce fichier doit simplement exister et avoir le bon nom. Il peut être vide. 
 + 
 +==== Forcer l'accès au site ==== 
 + 
 +Dans le cas d'une maintenance longue, vous pouvez souhaiter accéder au site pour visualiser le résultat de votre travail de maintenance : 
 +  * Via **IP** :  certaines IP fixes comme celle du serveur ou celles des postes des administrateurs peuvent être ajouté dans ''/etc/nginx/sites-available/geonature.conf'' 
 +afin de ne pas afficher la page maintenance. Les navigateurs présentant ces IP continueront d'accéder normalement au site. 
 +  * Via **Cookie** : il est aussi possible de court-circuiter la page de maintenance en ajoutant un cookie nommé ''**maintenance_disable**'' au domaine principal hébergeant GeoNature. Vous pouvez passer par le "**DevTools**" de votre navigateur. Ce cookie doit contenir comme valeur un UUID spécifique. Si l'UUID coïncide avec celui indiqué dans le fichier ''/etc/nginx/sites-available/geonature.conf'' la maintenance est désactivée. 
 + 
 +===== 🗑️ Création config Nginx maintenance GeoNature (DÉPRÉCIÉ) ===== 
 +  * **Notes** : le fichier de configuration //geonature_maintenance.conf// pointe vers un fichier //index.html// indiquant que GeoNature est en maintenance. C'est la méthode proposée par la doc de GeoNature. Le fichier de config Nginx précédent propose une solution plus simple et une page de maintenance améliorée. Pour activer la page de maintenance, il suffit de créer un fichier ''~/www/maintenance/geonatue/maintenance.enable''. Sa suppression désactive la page de maintenance.
   * Copier la config de GeoNature : cp /etc/nginx/sites-available/geonature.conf /etc/nginx/sites-available/geonature_maintenance.conf   * Copier la config de GeoNature : cp /etc/nginx/sites-available/geonature.conf /etc/nginx/sites-available/geonature_maintenance.conf
   * Éditer le fichier : ''vi /etc/nginx/sites-available/geonature_maintenance.conf''   * Éditer le fichier : ''vi /etc/nginx/sites-available/geonature_maintenance.conf''
  • serveurs/installation/web-srv/geonature-nginx.1631192777.txt.gz
  • Dernière modification : 2021/09/09 13:06
  • de jpmilcent