Projek saya digunakan menggunakan django + apache Untuk mudah membezakan antara persekitaran dalam talian dan pembangunan, saya menetapkan pembolehubah persekitaran pada pelayan Z_ENV
, dan kemudian menulis ini dalam fail konfigurasi Django,
env = os.environ.get("Z_ENV", None)
if env == "server":
from .server_settings import *
else:
from .local_settings import *
Cara penulisan ini tiada masalah apabila menggunakan beberapa arahan yang disertakan dengan Django secara tempatan atau pada pelayan Contohnya, apabila menjalankan os.environ.get("Z_ENV", None)
就是server
或者python managa.py syncdb
,确实是使用的server_settings
里面的配置,但是在apache载入配置文件的时候却没有获取到这个环境变量,然后就使用了local_settings
,我是在上面加了一句print env
的,然后service apache2 restart
secara langsung, Tiada dicetak dalam fail log apache.
Pengubahsuaian pembolehubah persekitaran ialah /etc/profile
文件,内容是Z_ENV=server export Z_ENV
Pada mulanya, ia tidak berkuat kuasa untuk pengguna apache, tetapi kemudian saya menyemak dan mendapati pembolehubah persekitaran yang ditetapkan di sini berkesan untuk semua pengguna.
Jom tanya semua orang apa yang berlaku?
di
/etc/apache2/envvars
中设置export Z_ENV=server