Mon projet est déployé avec Django + Apache Afin de distinguer facilement les environnements en ligne et de développement, j'ai défini une variable d'environnement sur le serveur Z_ENV
, puis je l'ai écrit dans le fichier de configuration de Django,
env = os.environ.get("Z_ENV", None)
if env == "server":
from .server_settings import *
else:
from .local_settings import *
Cette façon d'écrire ne pose aucun problème lors de l'utilisation de certaines des commandes fournies avec Django localement ou sur le serveur. Par exemple, lors de l'exécution directe de os.environ.get("Z_ENV", None)
就是server
或者python managa.py syncdb
,确实是使用的server_settings
里面的配置,但是在apache载入配置文件的时候却没有获取到这个环境变量,然后就使用了local_settings
,我是在上面加了一句print env
的,然后service apache2 restart
, None est imprimé dans le fichier journal Apache.
La modification de la variable d'environnement est /etc/profile
文件,内容是Z_ENV=server export Z_ENV
Au début, elle n'a pas pris d'effet pour les utilisateurs d'Apache, mais plus tard, j'ai vérifié et constaté que les variables d'environnement définies ici sont efficaces pour tous les utilisateurs.
Demandons à tout le monde ce qui se passe ?
à
/etc/apache2/envvars
中设置export Z_ENV=server