web-dev-qa-db-fra.com

Où dois-je définir les variables d'environnement pour Django?

toutes les personnes!

Django 1.11 + PostgreSQL 9.6 + Gunicorn + Ubuntu 16.04 dans AWS

Je veux définir des variables d'environnement pour les informations sensibles (clé secrète Django, mot de passe DB ...)

J'ai étudié de nombreux articles sur la définition des voies.

Mais quand j'ai essayé os.environ ['env_name'],

  1. .bashrc: ne fonctionne pas

  2. .bash_profile: ne fonctionne pas

  3. .profile: ne fonctionne pas

  4. / etc/environment: ne fonctionne pas

  5. Fichier de script Gunicorn. (Systemd): Je les ai mis dans le script gunicorn systemd. Ça marche très bien.

Mais parce que je veux également utiliser les variables d'environnement dans d'autres programmes, je les ai définies parmi 1 à 5 configurations. Je ne comprends pas pourquoi 1 à 5 configurations n'ont pas fonctionné. Est-il possible ou prioritaire de définir des variables d'environnement?

ÉDITER:

J'utilise le serveur Ubuntu 16.04. Je ne peux pas redémarrer la session de terminal.

J'ai essayé "source .bashrc" et déconnexion/connexion. Mais ça n'a pas marché.

Bien sûr, 'echo $ some_env_var' fonctionne, je dis, Django ne peut pas lire.

9
jayuloy

créez un fichier appelé .bashrc sur votre serveur

export('the_name_in_bashrc', some_value)

puis dans le settings.py

import os
some_variable = os.environ.get('the_name_in_bashrc')
8
Exprator

.bashrc fonctionnera pour le développement local mais pas pour un environnement de production. Je viens de passer un peu de temps à chercher la réponse à cette question et voici ce qui a fonctionné pour moi:

1) Créez un fichier quelque part sur votre serveur intitulé settings.ini. Je l'ai fait dans /etc/project/settings.ini

2) Ajoutez vos données de configuration à ce fichier en utilisant le format suivant où la clé peut être une variable d'environnement et la valeur est une chaîne. Notez que vous n'avez pas besoin d'entourer la valeur entre guillemets.

[section]
secret_key_a=somestringa
secret_key_b=somestringb

3) Accédez à ces variables à l'aide de la bibliothèque configparser de python. Le code ci-dessous peut se trouver dans le fichier de paramètres de votre projet Django.

from configparser import RawConfigParser

config = RawConfigParser()
config.read('/etc/project/settings.ini')

Django_SECRET = config.get('section', 'secret_key_a')

Source: https://code.djangoproject.com/wiki/SplitSettings (section de style ini)

10
Braden Holt