同じシステムでApacheの2つのインスタンスを実行する方法(Ubuntu)


14

同じシステムでapacheの2つのインスタンスを実行し、互いに独立して起動および停止するにはどうすればよいですか。ヘルプまたはリードを歓迎します。

回答:


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用などです。

ここで、プロキシインスタンスで仮想ホストを構成する必要もあります。これにより、Subversion 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)適切な構成ファイルを使用してApacheを起動するようにinitスクリプトを構成します

リンクされたリソースには、このためのrc.confファイルの編集に関する詳細がありますが、Ubuntuの処理に特に関係しているため、これらのセクションの両方を以下で強調します。

FreeBSDの「/etc/rc.conf」は、システム構成情報を含むマスターファイルです。このファイルは、カーネルの起動後に読み込まれ、サービスの起動、デーモン、ネットワークインターフェイスのセットアップなどに役立ちます。 >これらのどれをシステムのブート後に実行する(有効にする)必要があるかを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」と> sayを編集するだけです。例えば:

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

後で、プロファイル名>(proxy、perl、python、php)を使用して、次のように任意のapacheインスタンスを手動で開始/停止できます。

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

3b)Ubuntuの場合

これがFreeBSDの場合と似ている(そして痛みがない)かどうかはわかりません(上記のrc.confのセクションを参照)。FreeBSDのapacheポートでインストールされたapache rcスクリプトは、何年もの間異なるプロファイルの可能性を認識しています。

最近、Ubuntu / Debianのinitスクリプト(/etc/init.d/apache2など)が更新され、Apacheの複数のインスタンス(たとえば、/ etc / apache2- $ SUFFIXという名前の複数の構成)がサポートされます。使用しているUbuntu / Debianのリリースによっては、幸運かもしれませんが、そうでない場合もあります。

この機能は2010年2月にバージョン2.2.14-6でDebianに登場しました:http ://lists.alioth.debian.org/pipermail/pkg-apache-commits/2010-February/000295.html

Ubuntuでは、Maverick(10.10)のapache2パッケージには次のパッチが含まれています。http//changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.16-1ubuntu3.1/changelog

しかし、Lucid(10.04、Long Term Support Release)apache2は明らかにそうではありません:http : //changelogs.ubuntu.com/changelogs/pool/main/a/apache2/apache2_2.2.14-5ubuntu8.4/changelog

ドキュメントは/usr/share/doc/apache2/README.multiple-instancesにあります。


なんて大きな脂肪の混乱。気分を害することはありません。LinuxでそのようなことをするのはSにとって苦痛だと言いたいだけです。
Sliq

2番目に言及したインストールプロセスが簡単だとはわかりません...元の返信を参照して...なぜプロキシが必要なのですか?個々の構成は、個別のポートに単純にバインドするには不十分ですか?
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インスタンスを作成するために正確に何をする必要があるかを示すファイルがあります。

同じディレクトリ内に、Apacheインスタンスの作成に使用できるexamples名前のスクリプトを含むディレクトリがありsetup-instanceます。したがって、別のApacheインスタンスを作成するために必要なことは次のとおりです。

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

where web-server1はサフィックスです。つまり、デフォルトでインスタンス名に「apache2-」を追加します。

これにより、/etc/apache-web-server1すべての構成ファイルを含む新しいディレクトリが作成されます。また/etc/init.d/apache-web-server1、新しいApacheインスタンスを起動するために使用できるものも作成します。


Ubuntu 14.04 LTSでは、docディレクトリは/ usr / share / doc / apache2 /
Josip Rodin

実際、これはシステムサービスアプローチによる個別の開始/停止を可能にし、インスタンスは非常に独立しているため、より良いソリューションだと思います。
-bfrguci
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.