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

Совместная работа mod_wsgi и mod_php - возможно?

Можно ли запустить apache с одновременным запуском mod_wsgi и mod_php для обслуживания страниц python и php?

Если да, то где я могу найти информацию об этом?

Да, тогда можно смешивать. Смотрите рецепты в конце раздела:

http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines#The_Apache_Alias_Directive

В частности, метод исправления сценария AddHandler / mod_rewrite / WSGI.

Это позволит страницам PHP-сайта иметь приоритет над любыми URL-адресами, для которых PHP или статические ресурсы не попадают в приложение Python WSGI.

Единственное, что я могу придумать, это то, что запрос может обрабатываться только одним модулем или другим, поэтому вы не можете смешивать код PHP и WSGI. Это означает, что если вы используете WSGIScriptAlias /myapp /some/where/app.wsgi, http://example.com/myapp/foo.php будет обрабатываться либо mod_wsgi, либо mod_php, но не обоими (скорее всего, mod_wsgi). Это также означает, что ваше приложение WSGI не может быть /.

Теоретически, если вы можете заставить mod_php работать как фильтр Apache, ваше приложение python могло бы выводить соответствующий заголовок типа содержимого PHP (application/x-httpd-php) и PHP-код, и mod_php обработает его, но я не уверен, что это действительно возможно. я вижу много всего о том, что mod_perl работает таким образом, но кажется, что вам, вероятно, потребуется скомпилировать PHP, используя apache2filter SAPI вместо apache2handler по умолчанию, но поиск apache2filter вызывает множество отчетов об ошибках и другой шум, но мой Google-fu слишком слаб, чтобы найти инструкции о том, как его скомпилировать, настроить или использовать.

В противном случае просто настройте оба, следуя их указаниям: mod_wsgi, mod_php5. Если ваш дистрибутив предоставляет пакеты для apache, mod_php и mod_wsgi, используйте их и пропустите шаги компиляции, если в этом нет необходимости. Если ваш дистрибутив предоставляет a2enmod он должен выполнить большую часть настройки за вас (по крайней мере, часть загрузки модуля), но вам нужно будет установить WSGIScriptAlias сами.