Apache-2.2

在 mod_wsgi 上部署 django 應用程序的問題

  • April 29, 2019

我似乎在使用 mod_wsgi 部署 django 時遇到問題。過去我使用過 mod_python,但我想做出改變。我一直在這裡使用 Graham Dumpleton 筆記http://code.google.com/p/modwsgi/wiki/IntegrationWithDjango 1,但它似乎仍然不起作用。我收到內部伺服器錯誤。

django.wsgi file:

import os
import sys

sys.path.append('/var/www/html')
sys.path.append('/var/www/html/c2duo_crm')

os.environ['DJANGO_SETTINGS_MODULE'] = 'c2duo_crm.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

WSGIScriptAlias / /var/www/html/c2duo_crm/apache/django.wsgi

Apache httpd file:

<Directory /var/www/html/c2duo_crm/apache>
Order allow,deny
Allow from all
</Directory>

在我的 apache 錯誤日誌中,它說我有這個錯誤這不是全部,但我有最重要的部分:

[Errno 13] Permission denied: '/.python-eggs'
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] The Python egg cache directory is currently set to:
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]   /.python-eggs
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1]
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] Perhaps your account does not have write access to this directory?  You can
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] change the cache directory by setting the PYTHON_EGG_CACHE environment
[Thu Mar 03 14:59:25 2011] [error] [client 127.0.0.1] variable to point to an accessible directory.

您可以為此設置 WSGI 變數。在您的 Apache 配置中:

WSGIPythonEggs /var/tmp

這與設置PYTHON_EGG_CACHE環境變數相同,正如 topdog 的回答中所指出的,它僅適用於 mod_python。

這可能是 SELInux 權限問題。這是 RedHat Linux 還是 RedHat 變體(例如 CentOS 或 Scientific Linux)?如果是這樣,您可能需要禁用 SELinux(通常不推薦)或設置目錄的文件上下文。Debian(及其變體)預設禁用 SELinux,但 RedHat 和 CentOS 預設啟用它。

對於您讀/寫的任何文件/目錄,您可以使用此命令來更改文件上下文:

sudo chcon system_u:object_r:httpd_sys_rw_content_t:s0(上傳文件夾名稱)

我根據我對 mod_wsgi 編譯/安裝的經驗給出的這篇文章可能有用:

在具有 SElinux 強制模式的 Apache 伺服器上獲得編譯的 Python mod_wsgi 模組。讓我知道是否有任何 htis 有幫助。

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