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


14

Як я можу запустити два екземпляри apache в одній системі та запустити та зупинити їх незалежно один від одного. Будь-яка допомога чи ведуча цінуються.

Відповіді:


11

Я думаю, що це може бути те, що ви шукаєте http://wiki.apache.org/httpd/RunningMultipleApacheInsances

Для довідки про вміст у вищенаведеному посиланні

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, він передається на ваш "python-dav" apache, тоді як запити для вашого блогу 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 ...  

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) Налаштуйте скрипти init для запуску 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, вже багато років усвідомлюють можливість різних профілів.

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

Ця функція з'явилася в Debian у версії 2.2.14-6 у лютому 2010 року: http://lists.alioth.debian.org/pipermail/pkg-apache-commiss/2010-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-in вещества


Який великий жирний безлад. Не ображаючи вас, я просто хочу сказати, що в S боляче робити такі речі з Linux.
Sliq

Не впевнений, що я вважаю другий згаданий процес встановлення легшим ... тому стосовно посилання на оригінальну відповідь ... Навіщо нам потрібен проксі? Чи не є кожна окрема конфігурація достатньою для простого прив'язування до різних портів?
Alex.Barylski

5

Дякую за детальну відповідь, але пізніше я знайшов це посилання http://someofmylearnings.wordpress.com/2011/07/02/multiple-apache2-instance-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 каталог doc є / usr / share / doc / apache2 /
Йосип Родін

Насправді я вважаю, що це краще рішення, оскільки воно дозволяє роздільний старт / стоп через підхід до системної служби, а випадки є дуже незалежними.
bfrguci
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.