====== Détails du fichier settings_production.py ====== ===== Valeurs à personnaliser ===== 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 : # Ce sont les hôtes pouvant accéder à Django 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 : # C'est la configuration de l'accès à la base de donnée utilisée par noethysweb. ===== Sections a ne pas modifier ===== import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) Ces deux valeurs sont à conserver à False en production. Nota: il est possible d'utiliser le mode DEBUG en cas de dysfocntionnement uniquement. MODE_DEMO = False DEBUG = False ===== Urls ===== 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 \\ URL_GESTION = "administrateur/" URL_BUREAU = "utilisateur/" URL_PORTAIL = "portail/" PORTAIL_ACTIF = True ===== 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. On note que trois hôtes sont définis **mon-association.org** est le nom de domaine de l'association, qui peut dont accéder a à Django **localhost** et **127.0.0.1** représentent la même entité, à savoir l'hôte du serveur. ALLOWED_HOSTS = ["mon-association.org","localhost","127.0.0.1"] ===== 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]] 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, } } ===== 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/ 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"} ===== 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 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" ===== 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_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 ] ===== 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. \\ 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') ===== Exemple de fichier ===== # 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) # 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"} ######################################################################################### # 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 ######################################################################################### # 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" ######################################################################################### # 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_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 # ] ######################################################################################### # SECURITE : Les paramètres par défaut conviendront généralement. ######################################################################################### 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') =====Voir aussi===== Dans la rubrique installation-hébergement : * [[autohebergement]] * [[installation_apache]] * [[settings_production_detail]] * [[noethysweb_easy]]