2013-01-21 60 views
0

嘗試使用2個不同的設置文件進行生產和開發。正在部署django站點(wsgi)

我正在運行的服務器時runserver

當我與Apache運行它雖然設置DJANGO_SETTINGS_MODULE =「mysite.settings_production」
完美的作品,阿帕奇似乎沒有使用設置在~/.bash_profile,而使用os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")在wsgi.py文件

我想這可能是因爲Apache運行在不同的用戶,不是我的.. 好吧..所以它似乎是在我的ec2 Ubuntu的www數據運行。

所以我必須創建/home/www-data/.bash_profile並設置env變量?

使用不同的設置文件似乎很麻煩。
有沒有一個明顯更簡單的方法來做到這一點? (我不想更改wsgi.py文件,因爲它是源代碼控制的)

回答

0

使用bash_profile完全是這樣做的錯誤方法。

正確的方法是使用wsgi.py文件。然而,因爲你不希望這樣做(雖然我不明白它被版本控制有什麼關係),那麼你可以直接在你的Apache配置中使用SETENV設置環境變量:

SetEnv DJANGO_SETTINGS_MODULE mysite.settings 
+0

我可以在httpd.conf中做到這一點? (我想在我的開發計算機中使用settings.py,在生產計算機中使用settings_production.py。由於wsgi.py是由git或svn控制的版本,它會影響兩個部署) – eugene

+0

我嘗試將SetEnv添加到httpd.conf apache2.conf 。但不起作用.. – eugene

+0

mod_wsgi文檔特別提到SetEnv對被調用腳本的系統環境沒有影響 – hop

0

嗯,這真的是錯誤的方式。有不同的環境不同的設置常用的方法是存儲環境依賴於local_settings.py(或任何你的名字),並從imprort settings.py

from local_settings.py import * 

不要把local_settings.py項目庫作爲下您將在每次提交時覆蓋它。如果您想保留本地設置的樣本,請將其放入單獨的文件中,例如local_settings.py.example

您可以在settings.py的開頭導入本地設置(因此settings.py設置將覆蓋本地設置),或者在最後導入本地設置,或者在兩種情況下都有兩個本地設置文件。