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