web-dev-qa-db-ja.com

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

Apacheの2つのインスタンスを同じシステムで実行し、互いに独立して起動および停止するにはどうすればよいですか。どんな助けやリードでもありがたいです。

15
Sachin

これはあなたが探しているものかもしれないと思います 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」は、システム構成情報を含むマスターファイルです。このファイルはカーネルの起動後に読み込まれ、サービスの起動、デーモン、ネットワークインターフェイスのセットアップなどに使用されます。このレシピでは、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"

後で、次のように、プロファイル名>(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、長期サポートリリース)Apache2は明らかに次のことを行いません: http://changelogs.ubuntu.com/changelogs/pool/main/a/Apache2/Apache2_2.2.14-5ubuntu8.4/changelog

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

12
Joe

詳細な回答に感謝しますが、後でこのリンクを見つけました http://someofmylearnings.wordpress.com/2011/07/02/multiple-Apache2-instances-on-ubuntu/ これに示されている手順シンプル。

Apacheをインストールすると、/usr/share/doc/Apache2.2-common/README.multiple-instancesファイルが作成され、Apacheインスタンスを作成するために何を実行する必要があるかがわかります。

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

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

ここで、web-server1はサフィックスです。つまり、インスタンス名にデフォルトで「Apache2-」が追加されます。

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

6
Sachin