Это среда моего приложения:
Redhat 6.0
Apache 2.2
Django 1.3.0
Python 2.6.6
cx_Oracle 5.1
mod_wsgi 3.2
Oracle DBMS 11.2 (on a different machine)
Выпуск:
не удается получить доступ к моему веб-сайту django из веб-браузера, поскольку cx_Oracle не может получить дескриптор Oracle.
Тесты:
- запуск оболочки django-admin.py для запроса к db DOES WORK (запускается из сеанса bash с установленными переменными ORACLE_HOME и LD_LIBRARY_PATH)
- запуск собственного сценария, который добавляет ORACLE_HOME и LD_LIBRARY_PATH к os.environ и использует cx_Oracle для подключения к БД, без использования django DOES WORK (запускается из сеанса bash с установленными переменными ORACLE_HOME и LD_LIBRARY_PATH)
- запуск того же пользовательского скрипта с «sudo -u apache» НЕ работает
- запуск того же пользовательского сценария с "sudo -u env ORACLE_HOME = foo LD_LIBRARY_PATH = foo myscript.py" DOES WORK
- изменение django.db.backends.oracle.base.py, чтобы перед оператором Database.connect я печатал os.environ в файл, ПОКАЗЫВАЕТ, Я ИСПОЛЬЗУЛ ORACLE_HOME И LD_LIBRARY_PATH УСТАНОВЛЕНО
- явная установка ORACLE_HOME и LD_LIBRARY_PATH в os.environment внутри сценария adhoc django wsgi.py НЕ РАБОТАЕТ
- перезапуск httpd с помощью команды "sudo env ORACLE_HOME = foo LD_LIBRARY_PATH = foo /etc/init.d/httpd restart" РАБОТАЕТ
Мой вопрос: почему тест 7 отличается от тестов 2, 5, 6? Другими словами, почему я должен передавать env vars родительскому процессу httpd, а не просто устанавливать их в скриптах python / django?