CentOS 8に用意されたApache httpdパッケージをインストールしてテストページが見えるところまでを前回の記事で紹介しました。今回は記事内でインストールした「Apache httpd」を利用してバーチャルホストを設定してみたいと思います。
参考 CentOS 8へApache httpdをインストールする手順を紹介した記事
-
あわせて読みたいCentOS 8へApacheをインストールしてウェブサーバーを最短で構築する
以前のCentOS 8環境構築の記事でCentOS 8のインストールと基本的な設定までが完了しました。 せっかく作成した環境です。利用しない手はありません。本記事では、以前の記事で構築したCentOS 8の環境を利用してオープンソースソフト ...
「バーチャルホスト」はApache httpdに実装された機能の一つで、有効にすることによりApache httpd上で複数のサイトを運用できます。アクセスが多いサイトなら一つのウェブサーバーで一つのサイト運用でもサーバーリソースに余剰が出るようなことはありませんが、アクセスがそう多くないサイトを運用している場合はメモリやCPUといったリソースに無駄が出てきます。
そういったリソースを有効に利用するときにはバーチャルホストが力を発揮します。Apache httpdのバーチャルホストは設定に大きく以下のような方法があります。
ネームベースバーチャルホスト | 一つのIPアドレスで複数のウェブサイトを運用 |
IPベースのバーチャルホスト | 各ウェブサイトにIPアドレスを割り当てる |
IPベースのバーチャルホストはサイトの数だけIPアドレスが必要になることから、あまり利用されなくなっていますので、本記事では「ネームベースバーチャルホスト」を使って設定を行います。
1.バーチャルホストを設定するApache httpdの環境
ウェブサーバー「Apache httpd」を導入する環境は、以前の記事で詳細に紹介していますが、基本的な前提条件は以下の通りになります。
Apache httpd バーチャルホストを設定する環境のまとめ
- LinuxディストリビューションはCentOSで最新のバージョン8
- firewalldでファイアウォールが設定済み
- サーバーにはグローバルIPアドレス でアクセスができる(110.5.20.185/32)
- Apache httpd バージョン2.4.37がパッケージでインストール済み
- メインサイトが設定されており、テスト用のページが表示されている
参考 CentOS 8へApache httpdをインストールする手順を紹介した記事
-
あわせて読みたいCentOS 8へApacheをインストールしてウェブサーバーを最短で構築する
以前のCentOS 8環境構築の記事でCentOS 8のインストールと基本的な設定までが完了しました。 せっかく作成した環境です。利用しない手はありません。本記事では、以前の記事で構築したCentOS 8の環境を利用してオープンソースソフト ...
この記事内で作成したApache httpd環境を元にバーチャルホストの設定を進めて行きます。バーチャルホストとして「rem-site.com」「rem-site.jp」の2ドメインを追加します。
バーチャルホストの設定後には上記のような構成になります。
2. バーチャルホスト用の設定ファイル作成
Apache httpdの基本的な設定は前回の記事で完了していますので、本章からはバーチャルホストの設定手順を紹介します。まずバーチャルホストを利用するための設定ファイルを作成します。
バーチャルホスト用の設定ファイルは"/etc/httpd/conf.d/"ディレクトリに作成します。ここに配置された「.conf」拡張子がついた設定ファイルはApache httpdのメイン設定ファイル「httpd.conf」に取り込まれるようになっています。作成する設定ファイルの命名規則は「バーチャルホストのドメイン名に.confを付ける」で進めます。
2-1. 作成する設定ファイル
バーチャルホスト用の設定ファイルとして今回は以下の3ファイルを作成します。
virtualhost-00.conf | バーチャルホストとして設定されていないアクセス(例えばIPアドレスでのアクセス)を拒否するための設定ファイル |
rem-site.com.conf | バーチャルホスト「rem-site.com」用の設定ファイル |
rem-site.jp.conf | バーチャルホスト「rem-site.jp」用の設定ファイル |
前回の記事でhttpd.confに設定したサイトはバーチャルホスト設定時には無効になります。httpd.confに設定したサイトも有効にするためには、そのサイト分のバーチャルホスト設定を追加する必要があります。ご注意下さい。
2-2. 未設定アクセス拒否用設定ファイルの作成
最初にバーチャルホストとして設定されていないアクセスを拒否するための「virtualhost-00.conf」設定ファイルを作成します。作成先は"/etc/httpd/conf.d/"ディレクトリになりますので、ディレクトリに移動して"vi"コマンドを実行します。ファイル名には「.conf」という拡張子を付けます。
command
# cd /etc/httpd/conf.d/
# vi virtualhost-00.conf
設定ファイルの内容は以下のようになります。
code
<VirtualHost _default_:80>
ServerName any
<Location />
Require all denied
</Location>
</VirtualHost>
バーチャルホストとして設定されていないアクセスは「Require all denied」で全て拒否するという内容です。設定ファイルの記載が終わったら保存します。これで「virtualhost-00.conf」ファイルの作成は完了です。
2-3. バーチャルホスト「rem-site.com」設定ファイル作成
次にバーチャルホスト「rem-site.com」用の設定ファイルを作成します。作成先は"/etc/httpd/conf.d/"ディレクトリになりますので、viコマンドを以下のように実行します。ファイル名は「ドメイン名」+ 拡張子「.conf」という命名規則で作成します。
command
# vi rem-site.com.conf
作成するファイルの内容は以下になります。
code
## VirtualHost01 rem-site.com
<VirtualHost *:80>
ServerName rem-site.com
ServerAlias www.rem-site.com
ServerAdmin webmaster@rem-site.com
DocumentRoot "/home/www/html/rem-site.com"
<Directory "/home/www/html/rem-site.com">
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog logs/rem-site.com-error_log
CustomLog logs/rem-site.com-access_log combined
</VirtualHost>
設定ファイルに指定されている設定項目とパラメータは以下の内容になります。
<VirtualHost *:80> | バーチャルホストの定義 |
ServerName rem-site.com | バーチャルホスト名を指定 |
ServerAlias www.rem-site.com | バーチャルホストの別名を指定。FQDNを記載することで「www」あり・無し、どちらでもサイトへアクセスができます |
ServerAdmin webmaster@rem-site.com | バーチャルホストの管理用メールアドレスを指定 |
DocumentRoot "/home/www/html/rem-site.com" | バーチャルホストのドキュメントルートを指定。コンテンツが配置されます |
<Directory "/home/www/html/rem-site.com"> | ディレクトリのオプションを指定。全てのアクセスを許可しています |
ErrorLog | エラーログの出力先を指定します。ドメイン事に区別すると分かりやすくなります |
CustomLog | アクセスログの出力先を指定します。ドメイン事に区別すると分かりやすくなります |
上記のパラメータを運用する環境に合わせて変更します。変更後に設定ファイルを保存します。
2-4. バーチャルホスト「rem-site.jp.conf」用の設定ファイル作成
「項目2-3」と同じようにバーチャルホスト「rem-site.jp」用の設定ファイルを作成します。作成する手順は「rem-site.com.conf」と同じです。viコマンドを以下のように実行します。
command
# vi rem-site.jp.conf
ファイルの内容は「rem-site.com.conf」とほぼ同じです。サイト名に合わせてパラメータを変更します。実際の環境や運用に応じて変更してください。
code
## VirtualHost02 rem-site.jp
<VirtualHost *:80>
ServerName rem-site.jp
ServerAlias www.rem-site.jp
ServerAdmin webmaster@rem-site.jp
DocumentRoot "/home/www/html/rem-site.jp"
<Directory "/home/www/html/rem-site.jp">
Options FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog logs/rem-site.jp-error_log
CustomLog logs/rem-site.jp-access_log combined
</VirtualHost>
記載した内容を確認して、問題なければファイルを保存します。これでバーチャルホスト「rem-site.jp」用設定ファイルの作成は完了です。
3. コンテンツ配置用ディレクトリの作成
今回のApache httpdではバーチャルホストを利用することを前提としています。バーチャルホストではアクセス先URLに応じてドキュメントルートとなるディレクトリを分割します。バーチャルホスト毎にディレクトリを作成してコンテンツを配置する形になります。その為、コンテンツを配置するためのディレクトリを事前に作成しておきます。
本作業はバーチャルホストを追加する毎に必要になります。
3-1. コンテンツ配置用ディレクトリのパス
コンテンツはFTPを利用してアップロードを行うことを考えて、"/home/www/html/"以下にバーチャルホストのドメインに合わせたディレクトリを作成し、その中に配置します。
今回設定するバーチャルホストはドメイン名として「rem-site.com」と「rem-site.jp」を利用するため、ディレクトリとして「rem-site.com」「rem-site.jp」の2つを作成します。
3-2. バーチャルホスト用ディレクトリの作成
バーチャルホスト用のディレクトリを作成します。ディレクトリは"mkdir"コマンドで作成します。
command
# mkdir /home/www/html/rem-site.com /home/www/html/rem-site.jp
3-3. テスト用HTMLファイルの作成
作成したバーチャルホスト用のディレクトリにテスト用のHTMLファイルを作成します。「rem-site.com」「rem-site.jp」両方のディレクトリに作成します。
3-3-1.rem-site.com テスト用HTMLファイル
command
# vi /home/www/html/rem-site.com/index.html
index.htmlファイルの内容はバーチャルホストの名前を含んだ以下の記載を行いました。内容は任意になります。
code
rem-site.com test page
記載が終わったらindex.htmlファイルを保存します。これでrem-site.com用テストファイルの作成は完了です。続いて、rem-site.jpテスト用のHTMLファイルを作成します。
3-3-2.rem-site.jp テスト用HTMLファイル
command
# vi /home/www/html/rem-site.jp/index.html
index.htmlファイルの内容はバーチャルホストの名前を含んだ以下の記載を行いました。内容は任意になります。
code
rem-site.jp test page
記載が終わったらindex.htmlファイルを保存します。これでrem-site.jp用テストファイルの作成は完了です。
3-4. ディレクトリ所有者の変更
作成したバーチャルホスト用のディレクトリは"mkdir"コマンドを実行したユーザー「root」が所有者になっています。Apache httpdサービスがディレクトリにアクセスできるように所有者をApache httpdウェブサーバー用のユーザーである「www」に変更します。
所有者の変更には"chown"コマンド実行します。chownコマンドの"-R"オプションはディレクトリに含まれる全てのファイルとディレクトリの権限を一括で変更します。
command
# chown -R www:www /home/www/html/
これでファイルとディレクトリの所有者変更は完了です。
4. 設定ファイルの確認と反映
バーチャルホスト用のディレクトリと設定ファイルが作成できましたので「httpd.conf」設定ファイルの内容をチェックする"httpd"コマンドを実行します。"-t"オプションを付けるとチェックが行われます。
command
# httpd -t
Syntax OK
「Syntax OK」と表示されれば、設定ファイルに間違いはありません。これで設定ファイルの確認は完了です。
設定ファイルの確認が完了しましたので、変更した設定を反映するためにhttpdを再起動します。"systemctl"コマンドを以下のように実行します。
command
# systemctl restart httpd
エラーが無ければ、再起動は完了しています。再起動後にhttpdのステータスを"systemctl status"コマンドで確認します。
command $ systemctl status httpd ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Tue 2019-10-15 20:35:20 JST; 5s ago Docs: man:httpd.service(8) Main PID: 7275 (httpd) Status: "Started, listening on: port 80" Tasks: 213 (limit: 11374) Memory: 24.4M CGroup: /system.slice/httpd.service tq7275 /usr/sbin/httpd -DFOREGROUND tq7277 /usr/sbin/httpd -DFOREGROUND tq7278 /usr/sbin/httpd -DFOREGROUND tq7279 /usr/sbin/httpd -DFOREGROUND mq7280 /usr/sbin/httpd -DFOREGROUND
正常に起動していることが、コマンドの結果に含まれる「Active: active (running) 」から確認できました。ここまでの手順で「Apache httpd」のバーチャルホスト設定と反映が完了しました。
5. バーチャルホストの動作確認
本章では設定したバーチャルホストが正常に動作しているか、テストを行います。バーチャルホストの動作確認には、DNSによる名前引き(正引き:ドメイン名からIPが引ける)が設定されている必要があります。
もしDNSの名前引きが利用できない場合は、利用しているコンピューターのhostsファイルに、IPアドレスとホスト名を記載することでも対応できます。
5-1. rem-site.comの動作確認
ブラウザにバーチャルホスト「rem-site.com」のURL入力してページが表示されることを確認します。
http://rem-site.com
以下のようにrem-test.comテスト用に作成したHTMLファイルの内容が表示されればバーチャルホストは正常に設定されています。
ServerAliasパラメータで設定した「www.rem-site.com」でも同じページが表示されることを確認します。
http://www.rem-site.com
サーバーのエイリアス名でもページが表示されれば、バーチャルホスト「rem-site.com」の確認は完了です。
5-2. rem-site.jpの動作確認
もう一つのバーチャルホスト「rem-site.jp」の確認を行います。ブラウザにバーチャルホスト「rem-site.jp」のURL入力してページが表示されることを確認します。
http://rem-site.jp
ServerAliasパラメータで設定した「www.rem-site.jp」でも同じページが表示されることを確認します。
http://www.rem-site.jp
サーバーのエイリアス名でもページが表示されれば、バーチャルホスト「rem-site.jp」の確認は完了です。
両方のサイトが表示されたことで、バーチャルホストが正常に動作していることが確認できました。これでApache httpdのバーチャルホストの動作確認は完了です。
6. まとめ
今回の記事では「Apache httpd」でのネームベースバーチャルホスト設定手順を紹介しました。
ネームベースバーチャルホストは原理が分かれば比較的、かんたんに設定を行うことができます。昨今の性能が上がったサーバーであれば20から30サイトを運用しても問題ない場合も多く、サーバーリソースを有効利用にバーチャルホストは欠かせません。もしサーバーリソースに余裕があるようなら、是非、バーチャルホストを設定してみて下さい。
バーチャルホストを完全に分割する場合には「Suexec」機能を利用する必要があります。この機能についても別の記事で紹介していく予定です。
[st_af name="rem-free-support-cta-01"]