115 votes

Comment configurer Django pour un développement et un déploiement simples ?

J'ai tendance à utiliser SQLite en faisant Django développement, mais sur un serveur live, quelque chose de plus robuste est souvent nécessaire ( MySQL / PostgreSQL par exemple). Invariablement, il y a d'autres modifications à apporter aux paramètres de Django également : différents emplacements / intensités de journalisation, chemins d'accès aux médias, etc.

Comment gérer tous ces changements pour faire du déploiement un un processus simple et automatisé ?

2voto

Josue Points 126

Dans le même ordre d'idées, pour la question du déploiement de Django lui-même avec plusieurs bases de données, vous pouvez consulter le site suivant Djangostack . Vous pouvez télécharger un installateur entièrement gratuit qui vous permet d'installer Apache, Python, Django, etc. Dans le cadre du processus d'installation, nous vous permettons de sélectionner la base de données que vous souhaitez utiliser (MySQL, SQLite, PostgreSQL). Nous utilisons largement les installateurs pour automatiser les déploiements en interne (ils peuvent être exécutés en mode sans surveillance).

1voto

Sean O Donnell Points 601

En plus des multiples fichiers de paramètres mentionnés par Jim, j'ai également tendance à placer deux paramètres dans mon fichier settings.py en haut BASE_DIR et BASE_URL définis comme le chemin du code et l'URL de la base du site, tous les autres paramètres sont modifiés pour s'ajouter à ceux-ci.

BASE_DIR = "/home/sean/myapp/" ex. MEDIA_ROOT = "%smedia/" % BASEDIR

Ainsi, lorsque je déplace le projet, je ne dois modifier que ces paramètres et ne pas chercher dans l'ensemble du fichier.

Je recommande également de regarder les tissus et les Capistrano (outil Ruby, mais il peut être utilisé pour déployer des applications Django) qui facilitent l'automatisation du déploiement à distance.

1voto

Chase Seibert Points 7609

J'ai mon fichier settings.py dans un répertoire externe. De cette façon, il n'est pas vérifié dans le contrôle de source, ou écrasé par un déploiement. Je le place dans le fichier settings.py sous mon projet Django, avec tous les paramètres par défaut :

import sys
import os.path

def _load_settings(path):    
    print "Loading configuration from %s" % (path)
    if os.path.exists(path):
    settings = {}
    # execfile can't modify globals directly, so we will load them manually
    execfile(path, globals(), settings)
    for setting in settings:
        globals()[setting] = settings[setting]

_load_settings("/usr/local/conf/local_settings.py")

*Note : Ceci est très dangereux si vous ne pouvez pas faire confiance à local_settings.py.*.

1voto

sacabuche Points 1155

J'utilise cette configuration

à la fin de settings.py

#settings.py
try:
    from locale_settings import *
except ImportError:
    pass

et dans locale_settings.py

#locale_settings.py
class Settings(object):

    def __init__(self):
        import settings
        self.settings = settings

    def __getattr__(self, name):
        return getattr(self.settings, name)

settings = Settings()

INSTALLED_APPS = settings.INSTALLED_APPS + (
    'gunicorn',)

# delete duplicate settings maybe not needed but i prefer to do it
del settings
del Settings

0voto

Ycros Points 840

Je pense que cela dépend de la taille du site et de la nécessité d'utiliser SQLite. J'ai utilisé SQLite avec succès sur plusieurs petits sites et il fonctionne très bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X