我的專案是使用django + apache部署的,為了方便的區分線上和開發環境,我在伺服器上設定了一個環境變數Z_ENV
,然後在Django的設定檔中是這樣寫的,
env = os.environ.get("Z_ENV", None)
if env == "server":
from .server_settings import *
else:
from .local_settings import *
這樣的寫法在本地和在伺服器上使用Django自帶的某些指令都是沒問題的,例如直接執行os.environ.get("Z_ENV", None)
就是 server
或python managa.py syncdb
,確實是使用的server_settings
裡面的配置,但是在apache載入設定檔的時候卻沒有取得到這個環境變量,然後就使用了local_settings
,我是在上面加了一句print env
的,然後service apache2 restart
的時候在apache的日誌檔案中就是列印的None 。
環境變數修改的是/etc/profile
文件,內容是Z_ENV=server export Z_ENV
一開始我是對apache的使用者不生效的呢,但後來查了查,這個地方設定的環境變數是所有的使用者生效的。
來請教大家,看看是怎麼回事?
在
/etc/apache2/envvars
中设置export Z_ENV=server