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

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

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

Я думаю, это может быть то, что вы ищете 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 и т. Д.

Теперь вам также необходимо настроить виртуальные хосты в экземпляре прокси, чтобы всякий раз, когда приходит запрос к серверу Subversion DAV, он передавался на ваш apache python-dav, тогда как запросы для вашего блога wordpress передавались на ваш php 'экземпляр apache. Давайте снова отредактируем 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 ...  

2б) все проверить Итак, мы закончили настройку, и теперь нам нужно запустить все экземпляры 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 вручную, используя только имя профиля> (прокси, 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-commit/2010-Feb February/000295.html

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

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

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

Спасибо за подробный ответ, но позже я нашел эту ссылку 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.