Apacheは現在、世界で最も広く使用されているWebサーバーです。これは、以下によってメンテナンスされているオープンソースソフトウェアです:The Apache Software Foundation。2020年9月現在、世界中の全Webサイトトラフィックの36%を処理していると推定されています。開発者は、その速度、セキュリティ、信頼性、および堅牢性を高く評価しています。カスタマイズが容易なため、拡張機能やモジュールをインストールすることで、多くの環境のニーズに対応できます。
Apacheには、単一のIPアドレスで公開されている単一のApacheサーバーインストールを使用して、複数のドメインまたはサイトをホストできるマッチングシステムが付属しています。ドメインまたはサイトは、バーチャルホストとして定義されたApache設定ファイルのいずれかで設定されます。
各ドメインには、それが指し示す特定のディレクトリを持つ1つのバーチャルホスト定義があります。ユーザーがドメインにアクセスすると、サーバーは一致するすべてのバーチャルホストを検査し、入力されたホスト名に応じて、訪問者のリクエストを処理するためにどれを使用するかを選択します。一致するホスト名が見つからない場合、サーバーはフォールバックとしてconfファイルで最初に定義されたバーチャルホストを使用します。訪問者は、同じサーバーが他のサイトも処理していることを知らずに、要求したWebページにアクセスします。サーバーのリソースと処理できるトラフィック量に応じて、必要な数だけドメインをホストできます。
このチュートリアルでは、Ubuntu 20.04サーバー上でバーチャルホストをセットアップする手順を説明します。
はじめに
このチュートリアルを進めるには、Ubuntu 20.04がインストールされている必要があります。また、non-rootユーザーを作成し、そのユーザーでログインする必要があります。
このチュートリアルの手順では、Apacheがインストールされていることも必要です。まだインストールしていない場合は、以下のコマンドを使用してインストールできます。より詳細なセットアップガイドについては、当社のLAMP Stack setup – Linux Apache MySQL PHP tutorialを参照してください。
|
1 2 |
sudo apt update sudo apt install apache2 |
お好みのドメインレジストラから登録された、無料または有料のドメイン名が必要です。DNSレコードを設定して、ドメインがサーバーを指すようにしてください。ただし、このチュートリアルの手順を進めるために、当社の設定をそのまま使用することもできます。このチュートリアルでは、example.devとmydomain.comを使用します。これらをご自身のドメインに自由に置き換えてください。テストドメインを使用する場合は、ドメインを処理するためにApacheのhostsファイルを編集する必要があります。これを行う方法については、チュートリアルの後半で説明します。
ステップ 1 – Webサイトのディレクトリを設定する
これらは、Webサイトの訪問者がアクセスするサイトのデータを保持するディレクトリです。インターネットからアクセス可能なApacheのドキュメントルートは、通常 /var/www にあります。ここに、ホストしたい個々のドメイン用のディレクトリを作成します。各ディレクトリ内に、実際のWebサイトファイルを保持する public_html ディレクトリを追加します。バーチャルホストは public_html ディレクトリを指します。これにより、重要なWebサイトファイルを public_html の外に置き、公開ファイルのみを内部に配置できるため、柔軟性が得られます。
次に、以下のコマンドを入力してディレクトリを作成します。以降のセットアップでは、テストドメインをご実際のドメインに置き換えることを忘れないでください。
|
1 2 |
sudo mkdir -p /var/www/example.dev/public_html sudo mkdir -p /var/www/mydomain.com/public_html |
ステップ 2 – 読み書き権限を変更する
前のコマンドでディレクトリ構造が作成されましたが、所有権はrootユーザーのままです。non-rootユーザーにディレクトリへの完全な読み書き権限を持たせたいと考えています。また、一般的なWebアクセスに対しては読み取り権限を持たせたいと考えています。
まず、次のコマンドを入力して、所有権をnon-rootユーザーに変更します。
|
1 2 |
sudo chown -R $USER:$USER /var/www/example.dev/public_html sudo chown -R $USER:$USER /var/www/mydomain.com/public_html |
$USERは、現在ログインしているユーザーの資格情報を取得する変数です。これで、一般ユーザーがpublic_htmlの所有権を持つようになりました。次に、一般的なウェブに対して読み取り権限を付与する必要があります。次のコマンドを実行すると、ディレクトリ内のすべてのファイルに権限が許可され、ウェブページが正しく提供されるようになります:
|
1 |
sudo chmod -R 755 /var/www |
前の3つのコマンドを実行したことで、ウェブサイトがコンテンツを提供できるようになりました。さらに、ユーザーは特定のディレクトリに提供するコンテンツを同様に作成できます。詳細については、こちらをご覧ください Ubuntuの権限について.
ステップ 3 – 各バーチャルホストのディレクトリにデモページを作成する
ディレクトリ構造が整ったので、スクリプトを作成します。ここでは、HTML とnanoテキストエディタを使用して、いくつかの基本的なウェブページを作成します。次のコマンドを入力してnanoを開き、最初のドメインのディレクトリにindex.htmlファイルを作成します:
|
1 |
vim /var/www/example.dev/public_html/index.html |
エディタに、ドメインにアクセスしたときに表示される次のサンプルコードを入力します:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>ようこそ へ Example.dev!</title> </head> <body> <h1>成功! その example.dev バーチャル ホスト は 動作しています!</h1> </body> </html> |
上記の行を貼り付けたら、“!wq”を押してファイルを保存し、終了します。
次のコマンドを入力して、nanoエディタを使用して2番目のドメインのindex.htmlページを作成します:
|
1 |
vim /var/www/mydomain.com/public_html/index.html |
次に、エディタに次のHTMLコードを貼り付け、保存して終了します:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>ようこそ へ Mydomain.com!</title> </head> <body> <h1>成功! その mydomain.com バーチャル ホスト は 動作しています!</h1> </body> </html> |
これで、次のステップで作成する2つのバーチャルホストをテストするためのページが用意できました。
ステップ 4 – ドメイン名用のバーチャルホストファイルを作成する
バーチャルホストファイルには、各バーチャルホストの設定が含まれています。これらは、ドメイン名がどのように提供されるかを定義します。Apacheを新規インストールすると、000-default.confというデフォルトのバーチャルホストファイルが付属しており、これを使用してドメインに適応させることができます。ご覧のとおり、拡張子は.confで終わっています。これはUbuntuが設定ファイルに期待する形式です。
Apacheの設定ファイルは、/etc/apache2/sites-availableディレクトリにあります。そこにバーチャルホストファイルを保存します。デフォルトのconfファイルをコピーし、必要に応じて編集できます。
-
example.devドメイン用の最初のバーチャルホストファイルを作成する
次のコマンドを入力して、デフォルトのconfファイルをコピーしてexample.dev.confを作成します:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.dev.conf |
次に、以下のコマンドを使用して、sudo権限でnanoエディタを使い、作成したファイルを開きます。
|
1 |
sudo nano /etc/apache2/sites-available/example.dev.conf |
デフォルトのconfファイルは、以下のスクリーンショットのようになっています。コメントはガイド用です。これらを削除して、実際の設定行だけが含まれるクリーンなファイルにすることができます。

このファイルは、お使いのドメイン名と、ウェブサイトのファイルを保存したディレクトリパスに合わせてカスタマイズする必要があります。さらに、ファイルにいくつかのディレクティブを更新および追加します。ファイルにはすでにServerAdminディレクティブがあり、ここにはサーバー管理者がメールを受信するメールアドレスが含まれています。また、ウェブサイトのファイルを保存したディレクトリを指すDocumentRootディレクティブもあります。
2つの新しいディレクティブ、ServerNameとServerAliasを追加する必要があります。ServerNameはベースドメイン名を設定します。ここにドメインを入力します。ServerAliasは、Apacheがベースドメイン名と同様に一致させるべき他の名前を定義します。これにより、wwwなどのホストを一致させることができます。
ファイルを以下のように更新します:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@example.dev ServerName example.dev ServerAlias www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
その後、ドメインとメールアドレスを適切に更新します。完了したら、CTRL + Oを押してからENTERを押してファイルを保存します。エディタを終了するには、CTRL + Xを押します。
-
mydomain.comドメイン用の最初のバーチャルホストファイルを作成する
最初のドメインのバーチャルホストをコピーして、2番目のドメインに必要な部分を更新するだけです。ファイルをコピーするには、以下のコマンドを使用します:
|
1 |
sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf |
次に、以下のコマンドを使用してnanoエディタで開きます:
|
1 |
sudo nano /etc/apache2/sites-available/mydomain.com.conf |
ディレクティブを見つけて適切に更新し、ファイルが以下のように表示されるようにします:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
完了したら、ファイルを保存してエディタを終了します。
ステップ 5 – バーチャルホストファイルの有効化
ステップ4で、バーチャルホストファイルを作成しました。ただし、これらは有効化するまで機能しません。Apacheには、バーチャルホストを有効化するために使用するa2ensiteというツールがあります。
バーチャルホストを有効にするには、次の2つのコマンドを入力します:
|
1 2 |
sudo a2ensite example.dev.conf sudo a2ensite mydomain.com.conf |
上記のコマンドの出力は以下のようになります:

次に、デフォルトの設定ファイルを無効にする必要があります。サイトを無効にするには、Apacheのa2dissiteツールを使用します。以下のコマンドを入力してください:
|
1 |
sudo a2dissite 000-default.conf |
出力からわかるように、設定を反映させるにはApacheを再起動する必要があります。以下のコマンドを使用してください:
|
1 |
sudo systemctl restart apache2 |
次に、以下のコマンドを使用してApacheのステータスを確認します:
|
1 |
sudo systemctl status apache2 |
出力結果は、サーバーが起動して稼働しており、2つのウェブサイトを提供できる状態であることを示しています。

ステップ 6 – ローカルのhostsファイルをサンプルドメインで変更する
実際のドメインを登録しておらず、代わりにテストドメインを使用している場合は、ローカルのhostsファイルを更新する必要があります。これにより、バーチャルホストファイルで設定されたドメインのいずれかにアクセスしたときに、トラフィックをインターセプトしてウェブサイトのディレクトリに転送する必要があります。これはローカルコンピューター上でのみ機能することに注意してください。ローカルコンピューターがWindowsオペレーティングシステムを実行している場合は、このリンクのhosts設定手順に従ってください.
MacまたはLinuxマシンの場合、hostsファイルは/etcディレクトリにあります。nanoエディタを使用してファイルを開き、テストドメインを追加します。まず、次のコマンドを入力してVPSのIPアドレスを確認します。
|
1 |
curl -4 icanhazip.com |
次のコマンドを入力してファイルを開き、サーバーのIPアドレスで更新します:
|
1 |
sudo nano /etc/hosts |
|
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 ComputerName your_server_IP example.dev your_server_IP mydomain.com |
その後、ファイルを保存して閉じます。ブラウザにドメイン名を入力すると、まずhostsファイルがチェックされます。ドメイン名が見つかった場合、トラフィックは指定されたIPアドレスに転送されます。見つからない場合は、グローバルなリダイレクションのためにDNSシステムが使用されます。今回のテストドメインでは、トラフィックは指定されたIPアドレスに転送されます。
ステップ 7 – バーチャルホストのテスト
ドメイン名を設定したら、ブラウザまたはターミナルで確認して、正常に動作しているかどうかをテストできます:
|
1 |
curl http://example.dev |
出力は以下のようになるはずです:

|
1 |
http://mydomain.com |

おめでとうございます!1台のサーバーで2つのウェブサイトを実行するための設定が正常に完了しました。
まとめ
このガイドでは、複数のウェブサイトを提供するためにApacheサーバーを設定する方法を学びました。さらにウェブサイトを追加したい場合は、手順に従ってバーチャルホストを設定することで追加できます。Apacheは、サーバーのリソースが許す限り、希望する数のドメインを処理できます。
快適なコンピューティングを!
コメント
コメントはまだありません。最初のコメントを投稿しましょう。