Назад | Перейти на главную страницу

Как заставить 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, они просто печатаются в браузере как обычный текст. Его совсем не казнят. Пожалуйста, помогите кому-нибудь.

Проверьте, правильно ли был загружен модуль, выполнив 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 и они имеют право Shebang вверху они уже должны в значительной степени просто работать.

Если вы хотите использовать 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/ в apache.