Как запустить два экземпляра apache в одной системе (Ubuntu)

14

Как я могу запустить два экземпляра Apache в одной системе и запускать и останавливать их независимо друг от друга. Любая помощь или ведет приветствуются.

Сэчин
источник

Ответы:

11

Я думаю, что это может быть то, что вы ищете http://wiki.apache.org/httpd/RunningMultipleApacheInstances

Для справки по содержанию в ссылке выше

1) Установите Apache на свой сервер

sudo apt-get install apache2
sudo apt-get install libapache2-mod-perl2
sudo apt-get install other-lib-mods-needed

2) Настройте отдельные конфигурации apache для каждого экземпляра, который вы хотите запустить

Для Ubuntu это должно быть в / etc / apache2 По существу для каждого экземпляра, который вам нужно прослушивать на другом порту.

# httpd-proxy.conf
Listen 80
ErrorLog /var/log/httpd-proxy-error.log
LoadModule proxy_module                 libexec/apache22/mod_proxy.so
LoadModule proxy_http_module            libexec/apache22/mod_proxy_http.so

# httpd-perl.conf
Listen 81
ErrorLog /var/log/httpd-perl-error.log
LoadModule perl_module                  libexec/apache22/mod_perl.so

# httpd-python.conf
Listen 82
ErrorLog /var/log/httpd-python-error.log
LoadModule python_module                libexec/apache22/mod_python.so

# httpd-php.conf
Listen 83
ErrorLog /var/log/httpd-php-error.log
LoadModule php5_module                        libexec/apache22/libphp5.so

В этом примере будет запущено 4 разных экземпляра, каждый из которых обрабатывает отдельный тип модуля, то есть один для perl, один для python и т. Д.

Теперь вам также необходимо настроить виртуальные хосты в экземпляре прокси-сервера, чтобы при поступлении запроса на DAV-сервер subversion он передавался на ваш apache «python-dav», тогда как запросы на ваш блог WordPress передавались на ваш php 'apache instance. Давайте снова отредактируем httpd-proxy.conf:

# httpd-proxy.conf
NameVirtualHost *:80
<VirtualHost *:80>
 DocumentRoot /www/wordpress
 ServerName blog.company.com
 ProxyPass / http://localhost:83/
 ProxyPassReverse / http://localhost:83/
 [... additional directives here ... ]
</VirtualHost>
<VirtualHost *:80>
 DocumentRoot /www/svn
 ServerName svn.company.com
 ProxyPass / http://localhost:82/
 ProxyPassReverse / http://localhost:82/
 [... additional directives here ... ]
</VirtualHost>
# you get the idea ...  

2b) проверить все Итак, мы закончили с настройкой, и теперь нам нужно запустить все экземпляры apache и проверить, что все работает как положено. Конечно, вы можете сделать это с помощью «apachectl», например,

 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf configtest
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/proxy-httpd.conf start
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf configtest
 /usr/local/sbin/apachectl -f /usr/local/etc/apache22/perl-httpd.conf start
 # and so on ...

3) Настройте сценарии инициализации для запуска apache с соответствующим файлом конфигурации

Связанный ресурс содержит более подробную информацию о редактировании файла rc.conf, но касается конкретно работы с Ubuntu, поэтому оба эти раздела я выделю ниже.

Файл /etc/rc.conf во FreeBSD является главным файлом, содержащим информацию о конфигурации системы>. Этот файл читается после загрузки ядра и служит для запуска служб,> демонов, настройки сетевых интерфейсов и т. Д. Для нашего рецепта мы включим сервер apache>, перечисляя доступные экземпляры (профили), их файлы конфигурации и > сообщая FreeBSD, какой из них необходимо запустить (включить) после загрузки системы.

# /etc/rc.conf
apache22_enable="YES"
apache22_profiles="proxy perl python php"

# the apache proxy instance
apache22_proxy_configfile="/usr/local/etc/apache22/httpd-proxy.conf"
apache22_proxy_enable="YES"

# the apache perl instance
apache22_perl_configfile="/usr/local/etc/apache22/httpd-perl.conf"
apache22_perl_enable="YES"

# the apache python instance
apache22_python_configfile="/usr/local/etc/apache22/httpd-python.conf"
apache22_python_enable="YES"

# the apache php instance
apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
apache22_php_enable="YES"

Когда эти профили настроены в /etc/rc.conf и включены, они будут запущены> после успешной загрузки системы. Если вы хотите объявить профиль, но хотите только> запустить соответствующий экземпляр apache вручную, вы можете просто отредактировать «/etc/rc.conf» и> сказать, например:

 # the apache php instance
 apache22_php_configfile="/usr/local/etc/apache22/httpd-php.conf"
 apache22_php_enable="NO"

Позже вы можете запустить / остановить любой экземпляр apache вручную, используя только имя профиля> (proxy, perl, python, php), например так:

 /usr/local/etc/rc.d/apache22 start php
 /usr/local/etc/rc.d/apache22 stop perl
 ...

3b) для Ubuntu

Я не уверен, что это будет похоже (и безболезненно), как в случае с FreeBSD (см. Раздел на rc.conf выше). Сценарии apache rc, установленные с портом apache во FreeBSD, уже много лет знают о возможности использования различных профилей.

Недавно сценарии инициализации Ubuntu / Debian (например, /etc/init.d/apache2) были обновлены для поддержки нескольких экземпляров apache (например, нескольких конфигураций с именем / etc / apache2- $ SUFFIX). В зависимости от того, какую версию Ubuntu / Debian вы используете, вам может повезти ... или нет.

Эта функция появилась в Debian в версии 2.2.14-6 в феврале 2010 года: http://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-Feb февраля/000295.html

В Ubuntu пакеты apache2 в Maverick (10.10) содержат следующие исправления: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog.

Однако apache2 из Lucid (10.04, выпуск долгосрочной поддержки), по-видимому, этого не делает: http://changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

Документация может быть найдена в /usr/share/doc/apache2/README.multiple-instances

Джо
источник
Какой большой жирный беспорядок. Не оскорбляя вас, я просто хочу сказать, что в S очень тяжело делать такие вещи с Linux.
Sliq
Не уверен, что второй упомянутый процесс установки мне кажется более легким ... так что со ссылкой на оригинальный ответ ... Зачем нам нужен прокси? Разве каждой отдельной конфигурации недостаточно для простого привязки к отдельным портам?
Alex.Barylski
5

Спасибо за ваш подробный ответ , но позже я нашел эту ссылку http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instances-on-ubuntu/ процедуру , указанную в этом очень просто.

Когда мы устанавливаем Apache, появляется /usr/share/doc/apache2.2-common/README.multiple-instancesфайл, который дает вам представление о том, что именно нужно сделать для создания экземпляра Apache.

Внутри того же каталога есть examplesкаталог, который содержит скрипт с именем, setup-instanceкоторый мы можем использовать для создания экземпляра Apache. Итак, для создания другого экземпляра Apache все, что нужно сделать, это:

sh /usr/share/doc/apache2.2-common/examples/setup-instance web-server1

где web-server1суффикс То есть по умолчанию он добавляет «apache2-» к имени вашего экземпляра.

Это создаст новый каталог, /etc/apache-web-server1который содержит все файлы конфигурации. Также будет /etc/init.d/apache-web-server1создан файл, который вы можете использовать для запуска нового экземпляра Apache.

Сэчин
источник
В Ubuntu 14.04 LTS каталогом документов является / usr / share / doc / apache2 /
Йосип Родин
На самом деле, я думаю, что это лучшее решение, потому что оно позволяет отдельно запускать / останавливать с помощью системного подхода, а экземпляры очень независимы.
bfrguci