- はじめに
- 構成情報
- Apacheインストール準備
- Apacheのコンパイル
- IPアドレス・ポートの設定
- Apacheをサービスに登録
- 2つのインスタンスの動作確認
- Tomcatの複数起動について
- 最後に
はじめに
今回はLinux(CentOS)上にApacheをインストールし、複数の独立したインスタンスとして起動する方法を書いていきます。
ここでは2つのインスタンスを起動しますが、それぞれのインスタンスへのアクセスはポート番号で区別することとします。
(もちろん、IPアドレスでも区別できます)
アクセスする時のイメージは下図のような感じです。
Apacheインストール準備
今回はApacheのソースファイルをダウンロードし、コンパイルしてインストールする方法で進めます。
Apacheのコンパイルにはいくつかパッケージが必要なので、先にインストールしておきます。
まずは以下のパッケージをyumでインストールします。実行前にはインターネットと接続できること、DNSサーバが設定されていて名前解決ができることを確認しておきましょう。
yum -y install gcc pcre pcre-devel expat-devel
Apacheのソースファイルをコンパイルするためには「apr」と「apr-util」が必要なので、これらのソースファイルを以下のリンク先からダウンロードします。tar.gz形式を選択しましょう。
apr.apache.org
ここでは「apr-1.6.5」と「apr-util-1.6.1」をダウンロードしました。基本的に最新版を使用で問題ないと思います。
以下の「apr-x.x.x」と「apr-util-x.x.x」は適宜ダウンロードしたバージョンに読み替えてください。
ダウンロードしたtarファイルをSCP等でインストール先のサーバに配置します。今回は「/tmp」に置きました。
以下コマンドで解凍します。
cd /tmp tar -zxvf apr-1.6.5.tar.gz tar -zxvf apr-util-1.6.1.tar.gz
aprを「/opt/apr-1.6.5」にインストールします。
cd /tmp/apr-1.6.5/ ./configure --prefix=/opt/apr-1.6.5 make make install
下記のエラーが出た場合にはconfigureファイルを編集します。
rm: cannot remove 'libtoolT': No such file or directory
以下のように変更し、保存したら再度上記のコマンドを実行します。
vi /tmp/apr-1.6.5/configure 変更前: $RM "$cfgfile" 変更後: $RM -f "$cfgfile"
次にapr-utilを「/opt/apr-util-1.6.1」にインストールします。このとき、先ほどインストールした「apr-x.x.x」を指定します。
cd /tmp/apr-util-1.6.1/ ./configure --prefix=/opt/apr-util-1.6.1 --with-apr=/opt/apr-1.6.5 make make install
また、Apacheの実行用ユーザを作成しておきます。
useradd -s /sbin/nologin apache groupadd apache usermod -aG apache apache
Apacheのコンパイル
以下のダウンロードページからApacheのソースファイルをダウンロードします。
httpd.apache.org
最新版のtar.gz形式のソースファイルを選択しましょう。
以下、「httpd-x.x.x」はダウンロードしたバージョンに読み替えてください。
ダウンロードしたソースファイルをSCP等でインストール先のサーバに配置します。
ここでは「/tmp」に配置したので、以下コマンドで解凍します。
cd /tmp tar -zxvf httpd-2.4.41.tar.gz
以下コマンドでコンパイルします。先ほどインストールした「apr-x.x.x」と「apr-util-x.x.x」を指定します。
cd /tmp/httpd-2.4.41/ ./configure --prefix=/opt/httpd-2.4.41 --with-apr=/opt/apr-1.6.5 --with-apr-util=/opt/apr-util-1.6.1 make make install
ここまでで1つ目のApacheをインストールすることができたので、次は2つ目のApacheをインストールしていきましょう。
「/tmp」に展開した「/tmp/httpd-2.4.41」は一度削除し、再度2つ目のApache用にtarファイルを展開します。
cd /tmp rm -rf httpd-2.4.41 tar -zxvf httpd-2.4.41.tar.gz
その後、2つ目のApacheはディレクトリ名を「httpd-2.4.41-ex」として「/opt/httpd-2.4.41-ex」にインストールします。
cd /tmp/httpd-2.4.41 ./configure --prefix=/opt/httpd-2.4.41-ex --with-apr=/opt/apr-1.6.5 --with-apr-util=/opt/apr-util-1.6.1 make make install
これで独立した2つのApacheをインストールすることができました。
最後にインストールしたディレクトリの所有者・グループをapacheに変更しておきましょう。
chown -R apache:apache /opt/httpd-2.4.41 chown -R apache:apache /opt/httpd-2.4.41-ex
IPアドレス・ポートの設定
ここからは、インストールした2つのApacheが使用するIP・ポートを設定します。
今回は以下のように、同じIPアドレス・別々のポートでアクセスするようにしました。
・httpd-2.4.41
ServerRoot:/opt/httpd-2.4.41
IPアドレス:192.168.1.12
ポート:80
・httpd-2.4.41-ex
ServerRoot:/opt/httpd-2.4.41-ex
IPアドレス:192.168.1.12
ポート:8080
まずは1つ目のインスタンス「httpd-2.4.41」の設定をするため、「/opt/httpd-2.4.41/conf/httpd.conf」をエディタで開きます。
ServerRootが「/opt/httpd-2.4.41」となっていることを確認。
使用するIPとポートの指定部分で「Listen 192.168.1.12:80」と記述します。
UserとGroupは「apache」を指定しておきましょう。
DocumentRootが「/opt/httpd-2.4.41/htdocs」であることを確認します。
ここまでできたら、「/opt/httpd-2.4.41/conf/httpd.conf」を保存して閉じます。
次に2つ目のインスタンス「httpd-2.4.41-ex」の設定ファイル「/opt/httpd-2.4.41-ex/conf/httpd.conf」を開き、
・ServerRootが「/opt/httpd-2.4.41-ex」となっていることを確認
・使用するIPとポートの指定部分で「Listen 192.168.1.12:8080」と記述
・UserとGroupは「apache」を指定
・DocumentRootが「/opt/httpd-2.4.41-ex/htdocs」であることを確認
を実施します。
Apacheをサービスに登録
インストールした2つのApacheをそれぞれ別のサービスとして登録しましょう。
まずは「/etc/systemd/system」に1つ目のインスタンス用として「httpd24.service」というファイルを作成し、中身を以下のように記述します。
[Unit] Description=httpd24 After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=forking ExecStart=/opt/httpd-2.4.41/bin/apachectl -f /opt/httpd-2.4.41/conf/httpd.conf -k start ExecReload=/opt/httpd-2.4.41/bin/apachectl -k graceful ExecStop=/opt/httpd-2.4.41/bin/apachectl -k stop PrivateTmp=true [Install] WantedBy=multi-user.target
2つ目のインスタンスについても同様に「/etc/systemd/system」に「httpd24-ex.service」というファイルを作成し、中身を以下のように記述します。
[Unit] Description=httpd24-ex After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=forking ExecStart=/opt/httpd-2.4.41-ex/bin/apachectl -f /opt/httpd-2.4.41-ex/conf/httpd.conf -k start ExecReload=/opt/httpd-2.4.41-ex/bin/apachectl -k graceful ExecStop=/opt/httpd-2.4.41-ex/bin/apachectl -k stop PrivateTmp=true [Install] WantedBy=multi-user.target
2つのインスタンスのファイルを用意できたら、起動してみましょう。
systemctl start httpd24
以下コマンドで起動できているか確認します。
systemctl status httpd24
同様に、2つ目のインスタンスも起動しましょう。
systemctl start httpd24-ex
以下コマンドでプロセスを確認し、それぞれ起動していればOKです。
ps aux | grep httpd
2つのインスタンスの動作確認
ブラウザを起動して「http://192.168.1.12」にアクセスすると、1つ目のインスタンスが応答しています。
また、「http://192.168.1.12:8080」にアクセスすると、2つ目のインスタンスが応答します。
しかし、この状態だと両方とも初期画面なので、それぞれのインスタンスが応答しているのか分かりずらいですね。
そこで、初期画面にインスタンスの番号を表示するように少し書き換えます。
1つ目のインスタンスの初期画面として表示されるのは「/opt/httpd-2.4.41/htdocs/index.html」なので、これを以下のように編集します。
<html> <body> <h1>It works!<br></h1> Instance1 </body> </html>
この状態で再び「http://192.168.1.12」にアクセスすると、以下のように「Instance1」と表示されていますね。
また、2つ目のインスタンスの初期画面として表示されるのは「/opt/httpd-2.4.41-ex/htdocs/index.html」なので、これも以下のように編集します。
<html> <body> <h1>It works!<br></h1> Instance2 </body> </html>
こちらも編集後、「http://192.168.1.12:8080」にアクセスすると、「Instance2」が表示されています。
Tomcatの複数起動について
Tomcatをインストールして複数起動させる方法についても以下の記事に記載しています。
www.77-lifework.com