2017-01-19 1 views
0

Je n'arrive pas à comprendre le passage des paramètres locaux aux paramètres de production pour le déploiement de projets Django. J'utilise une machine virtuelle Ubuntu (VM) si c'est important.Implémentation des paramètres de production dans Django

Je comprends comment configurer mes paramètres. Je comprends les meilleures pratiques pour créer des fichiers de paramètres (base.py, local.py, production.py, blah, blah). Je sais que dans le développement local DEBUG = True, dans la production DEBUG = False, blah, blah. Mais comment mettre en œuvre ce basculement dans le déploiement? Est-ce que je me débarrasse du fichier local.py? Est-ce que je crée une sorte de logique pour que ma machine ne lise que base.py et production.py?

Quelle est la meilleure approche?

+0

Je vous recommande d'éviter plusieurs fichiers de paramètres et d'utiliser à la place [django-environ] (https://github.com/joke2k/django-environ) pour gérer vos paramètres changeants en tant que variables d'environnement. Commander le [12-factor-app] (https://12factor.net) –

+0

Merci Gustavo pour la réponse. Votre recommandation est en effet tentante. Cependant, j'ai des exigences et des applications pour des choses que je ne veux pas en production (applications de test, générateurs de documentation, etc.). Jusqu'à ce que je trouve une solution plus propre, pour l'instant je vais garder mes settings.local.py hors du contrôle de version, et toujours déployer à partir d'un repo de git prêt à la production. Prends soin. –

Répondre

0

Je ne suis pas sûr de la meilleure approche, mais ce que je fais ... travaux

Au pied de mon settings.py, je:

try: 
    from local_settings import * 
except ImportError, e: 
    pass 

Je garde tout mon développement local paramètres dans local_settings.py qui surpassent tous les paramètres de production. Je m'assure également de ne pas télécharger mon fichier local_settings.py!

0

Ce que vous pouvez faire est de vérifier dans vos paramètres py quel environnement est utilisé pour le moment. Pour ce faire, vous pouvez définir une variable d'environnement sur votre système qui aurait des valeurs différentes sur votre environnement de développement et l'environnement de production.

vous pouvez définir ces variables d'environnement par

sudo -H gedit /etc/environment 

et ajoutez la ligne suivante dans le fichier:

DEBUG="true" 

(pour faire cela change disponible, vous devrez vous déconnecter et vous reconnecter Dans l'environnement de production, vous devez alors définir DEBUG = "false". Dans l'environnement de production,


alors vous pouvez le faire dans votre settings.py:

DEBUG = os.environ.get('DEBUG', 'true') != 'false' 

et vous pouvez définir chaque paramètre qui serait différent en fonction de l'environnement qui est utilisé comme ceci:

if DEBUG: 
    STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' 
else: 
    STATICFILES_STORAGE = STATICFILES_STORAGE = 'custom_storages.StaticStorage' 

(la Le paramètre ci-dessus utilise le serveur django local pour servir les fichiers statiques s'il est dans l'environnement de développement, et amazon s3 avec boto si dans l'environnement de production (défini dans le module custom_storages)

De cette façon, vous pouvez pousser vos mises à jour et toujours les bons paramètres devraient être ramassés en fonction de l'environnement.