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

Возможно ли несколько экземпляров Apache2 MPM-prefork MPM-worker на одном хост-компьютере Ubuntu?

У меня есть живой экземпляр Apache2 / MPM-Worker, на котором запущен Django. Я также хочу запустить экземпляр Apache2 / MPM-prefork для запуска некоторых приложений Drupal6 на одной и той же хост-машине и использовать широкий выбор модулей PHP, которые работают по модели prefork.

Я планирую использовать свой экземпляр MPM-worker для обратного прокси к экземпляру Apache2-prefork для URL-адресов, начинающихся с myhost.com/drupal6/. Это кажется теоретически выполнимым / настраиваемым, если второй экземпляр Apache2-prefork настроен для прослушивания внутреннего порта, скажем, 127.0.0.1:8080, и мой текущий Apache2-worker настроен на прокси-проход и обратный проход к нему для URL-адресов drupal6 .

Однако как мне скомпилировать или установить версию apache2-prefork, чтобы у нее было имя исполняемого файла, отличное от / usr / sbin / apache2, например / usr / sbin / apache2p, и поэтому apache2ctl имеет другое имя, скажем apache2pctl, и что apache2pctl вызывает / usr / sbin / apache2p вместо / usr / sbin / apache2 ... и так далее (например, / etc / apache2p), чтобы я мог запускать и перезапускать свои два экземпляра независимо?

Насколько я понимаю, ни один исполняемый файл apache2 не может быть скомпилирован с модулями MPM-prefork и MPM-worker, поэтому мне кажется, что мне нужны две отдельные версии разновидностей apache2 MPM. Но тогда, как я полагаю, мне нужно вызывать их и управлять ими по отдельным именам. Я посмотрел на параметры конфигурации для apache2, и меня немного тошнит от компиляции второй версии apache2 с prefork, потому что я не уверен, что могу установить все параметры, чтобы ни один из моих текущих файлов apache2 не был перезаписан. Есть способ?

Есть ли стандартное решение для раздельной установки и управления исполняемыми файлами prefork и worker apache2 на одном компьютере, чтобы они не наступали друг на друга во время установки или работы?

Вам не обязательно иметь две установленные копии, но вам нужны две разные конфигурации.

Все зависит от используемой вами ОС, я могу рассказать вам, как это сделать в Debian и Ubuntu:

  1. Выберите имя для вашего нового экземпляра. Скажем, ДРУПАЛ.
  2. Создайте новый каталог конфигурации для вашего нового экземпляра, скопируйте оригинал: cp -a /etc/apache2 /etc/apache2-DRUPAL
  3. создать ссылку на сценарий запуска: ln -s /etc/init.d/apache2 /etc/init.d/apache2-DRUPAL

Теперь отредактируйте новую конфигурацию в / etc / apache2-DRUPAL. Вы можете изменить имя пользователя веб-сервера в / etc / apache2-DRUPAL / envvars, порты прослушивания в /etc/apache2-DRUPAL/ports.conf и т. Д.

С Apache 2.4 вы также можете одновременно устанавливать разные MPM, поэтому вы можете использовать разные в своих экземплярах, что является вашим требованием.

После того, как вы закончите настройку, выполните следующие команды:

    service apache2-DRUPAL start
    update-rc.d apache2-DRUPAL defaults

Первый проверяет конфигурацию и запускает новый экземпляр. Если это не сработает, выполните обычную отладку Apache, чтобы заставить его работать.

Вторая строка просто создает ссылки rc по умолчанию для запуска.

Если вы не хотите запускать команды Apache без прохождения /etc/init.d/apache2-DRUPAL, вам нужно запустить . /etc/apache2-DRUPAL/envvars перед их запуском. Я думаю, что это специфично для Debian / Ubuntu. Когда вы это сделаете, вы заметите, что apache2ctl, apache2 -S и другие работают с вашей новой конфигурацией.

Вот и все. Нет необходимости в ручной установке и загромождении вашей системы :)

HTH.

P.S .: https://wiki.apache.org/httpd/RunningMultipleApacheInstances кажется хорошей отправной точкой для дальнейшего изучения.

Вики-сайт apache на wiki.apache.org дает мне ответ. Моя основная забота заключалась в том, чтобы не сбивать файлы в моей текущей версии apache2 при создании нового apache2, и я не видел раньше параметра конфигурации, чтобы контролировать, куда копируется apache2ctl. Тем не менее, он есть, и эта страница заставляет меня поверить, что все файлы apache2 учтены и что config.layout позволяет указать, куда они все идут. http://wiki.apache.org/httpd/DistrosDefaultLayout#Apache_httpd_2.2_default_layout_.28apache.org_source_package.29: