mod_wsgi и mod_php, работающие вместе - возможно?
Можно ли запустить apache с работающими вместе mod_wsgi и mod_php для обслуживания страниц python и php?
Если да, где я могу найти информацию о том, как это сделать?
2 ответа
Да, вы можете смешать тогда. Смотрите рецепты к концу раздела:
http://code.google.com/p/modwsgi/wiki/ConfigurationGuidelines
В частности, метод исправления сценария 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-фу слишком слаб, чтобы найти инструкции о том, как его скомпилировать, настроить или использовать.
В противном случае, просто установите оба, следуя их указаниям: mod_wsgi, mod_php5. Если ваш дистрибутив предоставляет пакеты для apache, mod_php и mod_wsgi, используйте их и пропустите этапы компиляции, если в этом нет особой необходимости. Если ваш дистрибутив предоставляет a2enmod
он должен выполнить большую часть настройки для вас (по крайней мере, часть загрузки модуля), но вам нужно будет установить WSGIScriptAlias
сам.