Как заставить Apache запускать скрипты Python, используя MOD_WSGI или MOD_PYTHON в RHEL6?
Я пытаюсь сделать Apache для запуска скриптов Python. У меня есть MOD_WSGI, Apache, Python, установленный на RHEL6. Я даже отредактировал файл httpd.conf, чтобы включить эти строки.
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews ExecCGI
AddHandler cgi-script .cgi
AddHandler wsgi-script .wsgi
AllowOverride None
Order allow,deny
allow from all
</Directory>
Я также перезапустил сервер apache. Но когда я пытаюсь выполнить сценарии Python, он просто печатается в виде обычного текста в браузере. Его совсем не исполняют. Пожалуйста, помогите.
2 ответа
Проверьте, правильно ли загружен модуль, выполнив apache2ctl -t -D DUMP_MODULES
или же apachectl -t -D DUMP_MODULES
, Если это не так, отредактируйте httpd.conf
или включенный файл, чтобы включить следующее (заменить lib
с lib64
если нужно):
LoadModule wsgi_module /usr/lib/httpd/modules/mod_wsgi.so
Обратите внимание, что вы не можете выполнить любой сценарий Python с WSGI - он должен поддерживать интерфейс с обработчиком WSGI, если я правильно помню. Если вы хотите выполнить какой-либо скрипт на Python, возможно, вам следует использовать обычный старый CGI, который является медленным (не используйте его в рабочей среде, если у вас больше пользователей, чем вы), но легко. Если ваши сценарии находятся в cgi-bin
и у них есть правильный Шебанг на вершине, они должны в значительной степени просто работать уже.
Если вы хотите использовать mod_python, чтобы Apache сначала выполнял обычные сценарии Python, убедитесь, что вы загружаете модуль:
LoadModule python_module modules/mod_python.so
А затем добавьте это в свою конфигурацию, например, внутри блока Directory, сначала удалив другие изменения:
AddHandler mod_python .py
PythonHandler mod_python.publisher
И mod_python, и mod_wsgi требуют специального кода для работы с соответствующими обработчиками. Если ваша цель состоит в том, чтобы просто выполнять простые скрипты на python, используйте cgi. В Redhat расположение по умолчанию /var/www/cgi-bin/
и уже сопоставлен с путем /cgi-bin/
в апаче.