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 11:01] 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 ces sections =====+===== Sections a ne pas modifier =====
  
 <code python> <code python>
Ligne 24: Ligne 24:
  
  
-===== URLS =====+===== Urls =====
    
-URLS : à personnaliser selon les souhaits +URLS : à personnaliser selon les souhaits \\ 
-Il est fortement conseillé de définir une URL aléatoire pour le URL_GESTION +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+Et de définir une URL un peu plus complexe pour le URL_BUREAU \\
  
 <code python> <code python>
Ligne 38: 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 49: Ligne 49:
 </code> </code>
  
-===== BASE DE DONNEES =====+===== Base de données =====
  
 Modifier si besoin (en cas d'utilisation de MySQL par exemple) 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 par défaut SQLITE est à utiliser uniquement pour des tests en local.
-Exemple : https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management 
  
-<code JSON>+Exemple : [[https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management|Django#connection-management]] 
 + 
 +<code python>
 DATABASES = { DATABASES = {
     'default': {     'default': {
         'ENGINE': 'django.db.backends.mysql',         'ENGINE': 'django.db.backends.mysql',
-        'NAME': 'poly', +        'NAME': 'nom_de_la_base_de_donnée', 
-        'USER': 'myuser', +        'USER': 'mon_utilisateur', 
-        'PASSWORD': 'mypass',  +        'PASSWORD': 'mon_mot_de_passe',  
-        'HOST': 'localhost',+        'HOST': 'mon_hôte',
         'PORT': 3306,         'PORT': 3306,
     }     }
Ligne 69: Ligne 70:
  
  
-===== SAUVEGARDES =====+===== Sauvegardes =====
  
 Permet de générer et envoyer des sauvegardes chiffrées des données Permet de générer et envoyer des sauvegardes chiffrées des données
Ligne 75: Ligne 76:
 Pour plus d'infos, consulter https://django-dbbackup.readthedocs.io/en/master/ Pour plus d'infos, consulter https://django-dbbackup.readthedocs.io/en/master/
 <code python> <code python>
-ID de la clé GPG pour le chiffrement de la sauvegarde nécessaire pour effectuer la sauvegarde.+ID de la clé GPG pour le chiffrement de la sauvegarde nécessaire pour effectuer la sauvegarde.
  
-DBBACKUP_GPG_RECIPIENT = "15BDE8F782F78F43BBAEF195A6BCCC77CB247553"+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) 
 +# Le moteur ici est MySql. 
 +# Exemple : https://docs.djangoproject.com/fr/4.0/ref/databases/#connection-management 
 +######################################################################################### 
 + 
 +DATABASES = { 
 +    'default':
 +        'ENGINE': 'django.db.backends.mysql', 
 +        'NAME': 'bdd', 
 +        'USER': 'user', 
 +        'PASSWORD': 'pass',  
 +        'HOST': 'localhost', 
 +        'PORT': 3306, 
 +    } 
 +
 + 
 +######################################################################################### 
 +# 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/ 
 +######################################################################################### 
 + 
 +PLUGINS = ["monpluginperso"
 + 
 +# ID de la clé GPG pour le chiffrement de la sauvegarde 
 +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 107: Ligne 262:
 # Si l'un des champs ci-dessus utilise Dropbox, renseignez le token Dropbox ci-dessous : # Si l'un des champs ci-dessus utilise Dropbox, renseignez le token Dropbox ci-dessous :
 # DROPBOX_OAUTH2_TOKEN = "XXXXXXXXXXXXXXX" # 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 : 
 +#########################################################################################
  
-===== CRONTAB (tâches planifiées) ===== +CRONTAB_PYTHON_EXECUTABLE = "/usr/bin/python3.9" 
-  +CRONTAB_COMMAND_SUFFIX = '2>&1' 
-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 : +CRONJOBS = [ 
-<code python> +#     ("* * * * *", "noethysweb.cron.Test_cron", ">> " + os.path.join(BASE_DIR, "debug_cron.log")) # Pour des tests 
-CRONTAB_PYTHON_EXECUTABLE = "/usr/bin/python3.9" +#     ("00 23 * * *", "noethysweb.cron.Sauvegarder_db", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour sauvegarder la base de données 
-CRONTAB_COMMAND_SUFFIX = '2>&1' +#     ("25 23 * * *", "noethysweb.cron.Vider_rep_temp", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour purger le répertoire temp 
-CRONJOBS = [ +#     ("30 23 * * *", "noethysweb.cron.Sauvegarder_media", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour sauvegarde le répertoire media 
-("* * * * *", "noethysweb.cron.Test_cron", ">> " + os.path.join(BASE_DIR, "debug_cron.log")) # Pour des tests +#     ("45 23 * * *", "noethysweb.cron.Traiter_attentes", ">> " + os.path.join(BASE_DIR, "debug_cron.log")), # Pour traiter les réservations en attente 
-("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 +# SECURITE : Les paramètres par défaut conviendront généralement. 
-+#########################################################################################
-</code>+
  
-===== SECURITE ===== 
-Les paramètres par défaut conviendront généralement. 
-<code python> 
 CSRF_COOKIE_SECURE = False CSRF_COOKIE_SECURE = False
 CSRF_COOKIE_SAMESITE = 'Strict' CSRF_COOKIE_SAMESITE = 'Strict'
Ligne 143: 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')
-</code>+</file> 
 + 
 +=====Voir aussi===== 
 +Dans la rubrique installation-hébergement :  
 +  * [[autohebergement]] 
 +  * [[installation_apache]] 
 +  * [[settings_production_detail]] 
 +  * [[noethysweb_easy]]
settings_production_detail.1694941297.txt.gz · Dernière modification : 2023/09/17 11:01 de baalth