Noethysweb

Application de gestion multi-activités

Outils pour utilisateurs

Outils du site


settings_production_detail

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édentesRévision précédente
Prochaine révision
Révision précédente
settings_production_detail [2023/09/17 10:53] – mise en forme baalthsettings_production_detail [2023/12/08 22:40] (Version actuelle) – voir aussi fred.th
Ligne 1: Ligne 1:
 ====== Détails du fichier settings_production.py ====== ====== Détails du fichier settings_production.py ======
  
-===== Valeurs à personnaliser impérativement avant une mise en ligne ===== +===== Valeurs à personnaliser ===== 
-<code shell+<code python
-SECRET_KEY : Saisissez une clé aléatoire complexe de votre choix (50 caract. minimum) +SECRET_KEY : Saisissez une clé aléatoire complexe de votre choix 50 caractères minimum, vous pouvez utiliser un générateur, tels que KeePass ou encore BitWarden. 
-ALLOWED_HOSTS  +ALLOWED_HOSTS : # Ce sont les hôtes pouvant accéder à Django 
-URL_GESTION +URL_GESTION : # Il s'agit de l'URL d'administration du site, permettant la gestion des utilisateurs, des groupes et des comptes bloqués.  
-DATABASES+DATABASES : # C'est la configuration de l'accès à la base de donnée utilisée par noethysweb.
 </code> </code>
  
-===== Aucun besoin de modifier cette section =====+===== Sections a ne pas modifier ===== 
 <code python> <code python>
 import os import os
Ligne 23: Ligne 24:
  
  
-URLS : à personnaliser selon les souhaits +===== Urls ===== 
-Il est fortement conseillé de définir une URL aléatoire pour le URL_GESTION +  
-Et de définir une URL un peu plus complexe pour le URL_BUREAU+URLS : à personnaliser selon les souhaits \\ 
 +Il est fortement conseillé de définir une URL aléatoire pour l'URL_GESTION \\ 
 +Et de définir une URL un peu plus complexe pour le URL_BUREAU \\
  
 <code python> <code python>
Ligne 35: Ligne 38:
  
  
-HOSTS+===== Hosts =====
  
 Cette variable **ALLOWED_HOSTS** défini les hôtes autorisés à accéder a Django, soit le localhost, mais aussi le nom de domaine du site de la structure.  Cette variable **ALLOWED_HOSTS** défini les hôtes autorisés à accéder a Django, soit le localhost, mais aussi le nom de domaine du site de la structure. 
Ligne 45: Ligne 48:
 ALLOWED_HOSTS = ["mon-association.org","localhost","127.0.0.1"] ALLOWED_HOSTS = ["mon-association.org","localhost","127.0.0.1"]
 </code> </code>
 +
 +===== Base de données =====
 +
 +Modifier si besoin (en cas d'utilisation de MySQL par exemple)
 +Le moteur par défaut SQLITE est à utiliser uniquement pour des tests en local.
 +
 +Exemple : [[https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management|Django#connection-management]]
 +
 +<code python>
 +DATABASES = {
 +    'default': {
 +        'ENGINE': 'django.db.backends.mysql',
 +        'NAME': 'nom_de_la_base_de_donnée',
 +        'USER': 'mon_utilisateur',
 +        'PASSWORD': 'mon_mot_de_passe', 
 +        'HOST': 'mon_hôte',
 +        'PORT': 3306,
 +    }
 +}
 +</code>
 +
 +
 +===== Sauvegardes =====
 +
 +Permet de générer et envoyer des sauvegardes chiffrées des données
 +vers un répertoire du serveur ou vers Dropbox.
 +Pour plus d'infos, consulter https://django-dbbackup.readthedocs.io/en/master/
 +<code python>
 +ID de la clé GPG pour le chiffrement de la sauvegarde nécessaire pour effectuer la sauvegarde.
 +
 +DBBACKUP_GPG_RECIPIENT = ""
 +
 +Pour un stockage de la sauvegarde sur le disque dur (Renseigner ci-dessous un répertoire existant)
 +DBBACKUP_STORAGE = "django.core.files.storage.FileSystemStorage"
 +DBBACKUP_STORAGE_OPTIONS = {"location": "C:/Users/XXXXXX/Desktop/sauvegardes/"}
 +DBBACKUP_CONNECTORS = {"default": {"dump_suffix": "--hex-blob"}}
 +
 +Pour un stockage de la sauvegarde sur Dropbox (Renseigner ci-dessous le token de Dropbox)
 +1. Connectez-vous à Dropbox et accédez à Developper Apps : https://www.dropbox.com/developers/apps
 +2. Cliquez sur le bouton 'Create app' et saisissez un nom de votre choix. Ex : "Mes sauvegardes".
 +3. Une fois l'appli créée, cochez les permissions files.metadata et files.content.
 +4. Générez le token et copiez-le ci-dessous.
 +DBBACKUP_STORAGE = "storages.backends.dropbox.DropBoxStorage"
 +DBBACKUP_STORAGE_OPTIONS = {"oauth2_access_token": "Token Dropbox à coller ici"}
 +</code>
 +
 +===== Stockage de documents =====
 +
 +Indiquer le type de stockage souhaité pour chaque information :
 +Pour un stockage sur le disque dur (par défaut) : django.core.files.storage.FileSystemStorage
 +Pour un stockage sur Dropbox : storages.backends.dropbox.DropBoxStorage
 +<code python>
 +STORAGE_PROBLEME = "django.core.files.storage.FileSystemStorage"
 +STORAGE_PIECE = "django.core.files.storage.FileSystemStorage"
 +STORAGE_QUOTIENT = "django.core.files.storage.FileSystemStorage"
 +STORAGE_ASSURANCE = "django.core.files.storage.FileSystemStorage"
 +STORAGE_PHOTO = "django.core.files.storage.FileSystemStorage"
 +
 +Si l'un des champs ci-dessus utilise Dropbox, renseignez le token Dropbox ci-dessous :
 +DROPBOX_OAUTH2_TOKEN = "XXXXXXXXXXXXXXX"
 +</code>
 +
 +===== Plugins =====
 +
 +PLUGINS = ["monpluginperso"]
 +
 +===== CRONTAB (tâches planifiées) =====
 + 
 +Décommentez les lignes ci-dessous pour activer les tâches automatisées et modifiez si besoin les horaires de déclenchement et le path python :
 +<code python>
 +CRONTAB_PYTHON_EXECUTABLE = "/usr/bin/python3.9"
 +CRONTAB_COMMAND_SUFFIX = '2>&1'
 +CRONJOBS = [
 +("* * * * *", "noethysweb.cron.Test_cron", ">> " + os.path.join(BASE_DIR, "debug_cron.log")) # Pour des tests
 +("00 23 * * *", "noethysweb.cron.Sauvegarder_db", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour sauvegarder la base de données
 +("25 23 * * *", "noethysweb.cron.Vider_rep_temp", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour purger le répertoire temp
 +("30 23 * * *", "noethysweb.cron.Sauvegarder_media", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour sauvegarde le répertoire media
 +("45 23 * * *", "noethysweb.cron.Traiter_attentes", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour traiter les réservations en attente
 +]
 +</code>
 +
 +===== Sécurité =====
 +Les paramètres par défaut conviendront généralement. \\
 +Nota : Lorsque vous voulez utiliser un serveur dédié en passthrough permettant notamment de passer en production. il est conseillé de désactiver l'ensemble des variables de sécurité. \\
 +En effet, le mode ProxyPass des serveurs n’autorise pas de transit de flux brut. \\
 +
 +<code python>
 +CSRF_COOKIE_SECURE = False
 +CSRF_COOKIE_SAMESITE = 'Strict'
 +SESSION_COOKIE_SECURE = False
 +SECURE_BROWSER_XSS_FILTER = False
 +SECURE_CONTENT_TYPE_NOSNIFF = False
 +SECURE_SSL_REDIRECT = False
 +X_FRAME_OPTIONS = 'DENY'
 +SECURE_HSTS_SECONDS = 15768000
 +SECURE_HSTS_INCLUDE_SUBDOMAINS = False
 +SECURE_HSTS_PRELOAD = False
 +SESSION_COOKIE_AGE = 60*60*12 # 12 heures
 +SESSION_EXPIRE_AT_BROWSER_CLOSE = False
 +AXES_META_PRECEDENCE_ORDER = ('HTTP_X_FORWARDED_FOR', 'X_FORWARDED_FOR', 'REMOTE_ADDR')
 +</code>
 +
 +===== Exemple de fichier =====
 +
 +
 +<file python settings_production.py>
 +#  Copyright (c) 2019-2021 Ivan LUCAS.
 +#  Noethysweb, application de gestion multi-activités.
 +#  Distribué sous licence GNU GPL.
 +
 +#########################################################################################
 +#              FICHIER DE CONFIGURATION A MODIFIER SELON LES BESOINS
 +#
 +# Valeurs à personnaliser impérativement avant une mise en ligne :
 +# SECRET_KEY, ALLOWED_HOSTS, URL_GESTION, DATABASES
 +#
 +#########################################################################################
 +
 +import os
 +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 +
 +#########################################################################################
 +# CLE SECRETE : Saisissez une clé aléatoire complexe de votre choix (50 caract. minimum)
 +#########################################################################################
 +
 +SECRET_KEY = 'ceciestlaclédesécuritéutiliséepourmonsitenoethysweb!'
 +
 +#########################################################################################
 +# MODE DEMO : Pour désactiver des fonctionnalités
 +#########################################################################################
 +
 +MODE_DEMO = False
 +
 +#########################################################################################
 +# MODE DEBUG : Conserver False en production impérativement
 +#########################################################################################
 +
 +DEBUG = False
 +
 +#########################################################################################
 +# URLS : à personnaliser selon les souhaits
 +# Il est fortement conseillé de définir une URL aléatoire pour le URL_GESTION
 +# Et de définir une URL un peu plus complexe pour le URL_BUREAU
 +#########################################################################################
 +
 +URL_GESTION = "administrateur/"
 +URL_BUREAU = "utilisateur/"
 +URL_PORTAIL = "portail/"
 +PORTAIL_ACTIF = True
 +
 +#########################################################################################
 +# HOSTS : Saisissez les hosts autorisés (IP ou urls du serveur).
 +# Obligatoire pour fonctionner sur un serveur.
 +# Exemple : ALLOWED_HOSTS = ["127.0.0.1", "www.monsite.com"]
 +#########################################################################################
 +
 +ALLOWED_HOSTS = ["www.monsite.fr","localhost","127.0.0.1"]
 +
 ######################################################################################### #########################################################################################
 # BASE DE DONNEES : Modifier si besoin (en cas d'utilisation de MySQL par exemple) # BASE DE DONNEES : Modifier si besoin (en cas d'utilisation de MySQL par exemple)
-# Le moteur par défaut SQLITE est à utiliser uniquement pour des tests en local.+# Le moteur ici est MySql.
 # Exemple : https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management # Exemple : https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management
 ######################################################################################### #########################################################################################
-<file JSON>+
 DATABASES = { DATABASES = {
     'default': {     'default': {
         'ENGINE': 'django.db.backends.mysql',         'ENGINE': 'django.db.backends.mysql',
-        'NAME': 'poly', +        'NAME': 'bdd', 
-        'USER': 'myuser', +        'USER': 'user', 
-        'PASSWORD': 'mypass', +        'PASSWORD': 'pass', 
         'HOST': 'localhost',         'HOST': 'localhost',
         'PORT': 3306,         'PORT': 3306,
     }     }
 } }
-</file>+
 ######################################################################################### #########################################################################################
 # SAUVEGARDES : Permet de générer et envoyer des sauvegardes chiffrées des données # SAUVEGARDES : Permet de générer et envoyer des sauvegardes chiffrées des données
Ligne 71: Ligne 232:
  
 # ID de la clé GPG pour le chiffrement de la sauvegarde # ID de la clé GPG pour le chiffrement de la sauvegarde
-DBBACKUP_GPG_RECIPIENT = "15BDE8F782F78F43BBAEF195A6BCCC77CB247553"+DBBACKUP_GPG_RECIPIENT = "TESTESTESTESTESTESTESTESTEST"
  
 # Pour un stockage de la sauvegarde sur le disque dur (Renseigner ci-dessous un répertoire existant) # Pour un stockage de la sauvegarde sur le disque dur (Renseigner ci-dessous un répertoire existant)
Ligne 135: Ligne 296:
 SESSION_EXPIRE_AT_BROWSER_CLOSE = False SESSION_EXPIRE_AT_BROWSER_CLOSE = False
 AXES_META_PRECEDENCE_ORDER = ('HTTP_X_FORWARDED_FOR', 'X_FORWARDED_FOR', 'REMOTE_ADDR') AXES_META_PRECEDENCE_ORDER = ('HTTP_X_FORWARDED_FOR', 'X_FORWARDED_FOR', 'REMOTE_ADDR')
 +</file>
  
 +=====Voir aussi=====
 +Dans la rubrique installation-hébergement : 
 +  * [[autohebergement]]
 +  * [[installation_apache]]
 +  * [[settings_production_detail]]
 +  * [[noethysweb_easy]]
settings_production_detail.1694940813.txt.gz · Dernière modification : 2023/09/17 10:53 de baalth