Linux

Django 全域設置環境變數

  • February 25, 2010

我在使用 mod_python 在我們的 CentOS 伺服器上設置 Django 時遇到問題。站點“A”正在執行 PHP(Codeigniter),站點“B”正在執行 Django。我們的 Django 站點執行良好。

但是,每隔一段時間(可能 10 個請求中有 1 個或 2 個請求),站點“A”就會給出 404 錯誤。通過進一步調查,我發現 Django 全域設置了許多伺服器環境變數。例如,查看站點 A 中的 phpinfo() 頁面:

_ENV["DJANGO_SETTINGS_MODULE"]  mysite.settings
_ENV["REQUEST_URI"] /path/to/my/django/site/page

因為所有請求路徑都設置為我的 Django 站點 URL,所以 Codeigniter 是 404ing。

httpd.conf 中的設置是我們在 virtualhost 指令中設置了位置標籤。

任何人都可以幫忙嗎?

這可能不是您想听到的答案,但無論如何都可以:)

如果你執行你的 Django 站點mod_wsgi而不是mod_python你會看到很多好處:

  1. mod_wsgi您可以在守護程序模式下執行,這意味著您的 Django 站點將被隔離在自己的程序中。這意味著環境變數不會在 Apache 環境中全域設置(我認為在您的情況下是由 設置的mod_python)。這也意味著您可以在不重新啟動 Apache 的情況下重新啟動 Django 站點。
  2. 守護程序mod_wsgi模式下,您將只有一個 Python 解釋器實例在記憶體中執行,而不是在每個 Apache 程序中執行一個實例。這是一個巨大的記憶體節省,給你更多的記憶體空間,更多的 Apache 程序等等。
  3. mod_wsgi不僅更穩定,而且足以讓我成為眾多 Django 開發人員中的一員,每當我們看到有人仍在使用mod_python. 範例:來自 Django 核心開發者 Jacob Kaplan-Moss 的推文
  4. 最後,mod_wsgi與零支持和mod_python.

引用自:https://serverfault.com/questions/111583