Как заставить 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/ в апаче.

Другие вопросы по тегам