У меня проблема с настройкой Django на нашем сервере CentOS с помощью mod_python. Сайт «A» работает под управлением PHP (Codeigniter), а сайт «B» - под управлением Django. Наш сайт Django работает отлично.
Однако время от времени (может быть, 1 или 2 запроса из 10) сайт «A» выдает ошибку 404. При дальнейшем исследовании я обнаружил, что существует ряд переменных среды сервера, которые глобально устанавливаются Django. Например, если посмотреть на страницу phpinfo () на сайте A:
_ENV["DJANGO_SETTINGS_MODULE"] mysite.settings
_ENV["REQUEST_URI"] /path/to/my/django/site/page
Поскольку все пути запроса настроены на URL-адреса моего сайта Django, Codeigniter отправляет ошибку 404.
Настройка в httpd.conf такова, что у нас есть теги местоположения, настроенные в директиве virtualhost.
Кто-нибудь может помочь?
Возможно, это не тот ответ, который вы хотите услышать, но все равно здесь :)
Если вы запустите свой сайт Django под mod_wsgi
вместо того mod_python
вы увидите несколько преимуществ:
Под mod_wsgi
ты можешь вбежать демон mode, то есть ваш сайт Django будет изолирован в отдельном процессе. Это означает, что переменные среды не будут установлены глобально в среде Apache (которые, как мне кажется, в вашем случае устанавливаются mod_python
). Это также означает, что вы можете перезапустить свой сайт Django без перезапуска Apache.
С участием mod_wsgi
в демон В режиме у вас будет только один экземпляр интерпретатора Python, работающий в памяти, вместо одного экземпляра в каждом процессе Apache. Это огромная экономия памяти, оставляющая больше места для кеширования, больше процессов Apache и т. Д.
mod_wsgi
не только более стабильный, но и достаточный, чтобы я был одним из многих разработчиков Django, которые хлопают нас по лбу, когда мы видим, что кто-то все еще использует mod_python
. Пример: твит от разработчика ядра Django Джейкоба Каплан-Мосса.
В заключение, mod_wsgi
работает быстрее и имеет отличную поддержку сообщества по сравнению с нулевой поддержкой и постоянными ошибками для mod_python
.