Ubuntu20.04でApache仮想ホストを設定する方法
序章
Apache HTTPサーバーは、開発者に柔軟性、パワー、および広範なサポートを提供する、人気のあるオープンソースWebサーバーです。 Apacheサーバーの構成は、単一のモノリシックファイルでは行われず、代わりに、必要に応じて新しいファイルを追加および変更できるモジュラー設計によって行われます。 このモジュラー設計内で、仮想ホストと呼ばれる個別のサイトまたはドメインを作成できます。
仮想ホストを使用すると、1つのApacheインスタンスで複数のWebサイトにサービスを提供できます。 Apacheを使用して構成された各ドメインまたは個々のサイトは、訪問者をそのサイトの情報を保持する特定のディレクトリに誘導します。 これは、同じサーバーが他のサイトにも責任があることを訪問者に示すことなく行われます。 このスキームは、サーバーが負荷を処理できる限り、ソフトウェアの制限なしに拡張できます。
このガイドでは、Ubuntu20.04サーバーにApache仮想ホストをセットアップします。 このプロセスでは、2つの仮想ホストサイトを作成することにより、要求しているドメインに応じて、さまざまな訪問者にさまざまなコンテンツを提供する方法を学習します。
前提条件
このチュートリアルを開始する前に、次のものが必要です。
- sudo権限を持つroot以外のユーザーがいるUbuntu20.04サーバー。 Ubuntu 20.04での初期サーバーセットアップガイドを使用して、これをセットアップできます。
- サーバーにインストールされているApache。 Ubuntu 20.04チュートリアルにApacheWebサーバーをインストールする方法の手順1〜3を完了すると、その方法を学ぶことができます。
DigitalOceanを使用している場合は、製品ドキュメントドメインの追加方法に従って、ドメインの設定方法を学ぶことができます。
このチュートリアルを正常に完了するには、次の2つのドメインが必要です。
- サーバーのパブリックIPアドレスを指すyour_domainを持つAレコード。
- サーバーのパブリックIPアドレスを指すwww.your_domainを含むAレコード。
他のプロバイダーについては、関連する製品ドキュメントを参照してください。
注:現時点でドメインを使用できない場合は、コンピューターでローカルにテスト値を使用できます。 このチュートリアルのステップ6では、テスト値をテストおよび構成する方法を示します。 これにより、ドメイン名を介して他の訪問者がコンテンツを利用できない場合でも、構成を検証できます。
ステップ1—ディレクトリ構造を作成する
最初のステップは、訪問者に提供するサイトデータを保持するディレクトリ構造を作成することです。
ドキュメントルートは、Apacheが提供するコンテンツを見つけるために参照する最上位ディレクトリであり、 /var/www
ディレクトリ。 ここで、仮想ホストごとにディレクトリを作成します。
これらの各ディレクトリ内に、 public_html
ディレクトリ。 The public_html
ディレクトリには、訪問者に提供されるコンテンツが含まれています。 ここで名前が付けられた親ディレクトリ your_domain_1
と your_domain_2
は、Webコンテンツをサポートするためのスクリプトとアプリケーションコードを保持します。
独自のドメイン名で次のコマンドを使用して、ディレクトリを作成します。
- sudo mkdir -p /var/www/your_domain_1/public_html
- sudo mkdir -p /var/www/your_domain_2/public_html
必ず交換してください your_domain_1
と your_domain_2
あなた自身のそれぞれのドメインで。 たとえば、ドメインの1つが example.com の場合、次のディレクトリ構造を作成します。 /var/www/example.com/public_html
.
ステップ2—権限を付与する
ファイルのディレクトリ構造を作成しましたが、それらはrootユーザーが所有しています。 通常のユーザーがこれらのWebディレクトリ内のファイルを変更できるようにする場合は、次のコマンドを使用して所有権を変更できます。
- sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
- sudo chown -R $USER:$USER /var/www/your_domain_2/public_html
The $USER
変数は、を押したときと同じように、現在ログインしているユーザーの値を取ります ENTER
. これにより、通常のユーザーが所有するようになります public_html
コンテンツを保存するサブディレクトリ。
また、アクセス許可を変更して、ページが正しく提供されるように、一般的なWebディレクトリとそれに含まれるすべてのファイルとフォルダへの読み取りアクセスが許可されるようにする必要があります。
- sudo chmod -R 755 /var/www
これで、Webサーバーにコンテンツを提供するために必要なアクセス許可が与えられ、ユーザーは必要なフォルダー内にコンテンツを作成できるようになります。 次のステップは、仮想ホストサイトのコンテンツを作成することです。
ステップ3—各仮想ホストのデフォルトページを作成する
ディレクトリ構造が整ったら、個々の仮想ホストサイトとそのサイト内のコンテンツに焦点を当てることができます。 を作成することから始めます index.html
最初のサイトのページ your_domain_1
.
を開いて作成します index.html
お好みのテキストエディタでファイルします。 この例では、 nano
:
- nano /var/www/your_domain_1/public_html/index.html
このファイル内に、接続しているサイトを訪問者に示すHTMLファイルを作成します。
<html>
<head>
<title>Welcome to your_domain_1!</title>
</head>
<body>
<h1>Success! The your_domain_1 virtual host is working!</h1>
</body>
</html>
でファイルを保存して閉じるには nano
、を押すことから始めます CTRL+X
. プレス Y
ファイルを保存するように求められたら、を押します ENTER
終了したら。
次に、次のように入力して、このファイルをコピーして2番目のサイトのベースとして使用します。
- cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html
次に、この新しいファイルを開き、前と同じようにテキストエディタを使用して関連する情報を変更します。
- nano /var/www/your_domain_2/public_html/index.html
<html>
<head>
<title>Welcome to your_domain_2!</title>
</head>
<body> <h1>Success! The your_domain_2 virtual host is working!</h1>
</body>
</html>
このファイルを保存して閉じます。 これで、仮想ホスト構成のテストに使用できるサイトごとに1つのページができました。
ステップ4—新しい仮想ホストファイルを作成する
仮想ホストファイルは、仮想ホストの実際の構成を指定し、ApacheWebサーバーがさまざまなドメイン要求にどのように応答するかを指示するファイルです。
Apacheには、と呼ばれるデフォルトの仮想ホストファイルが付属しています 000-default.conf
. このファイルをコピーして、ドメインごとに仮想ホストファイルを作成できます。
デフォルトの構成ファイルを最初のドメインにコピーします。
- sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_domain_1.conf
デフォルトのUbuntu構成では、各仮想ホストファイルがで終わる必要があることに注意してください .conf
.
root 権限を使用して、好みのテキストエディタで新しいファイルを開きます。
- sudo nano /etc/apache2/sites-available/your_domain_1.conf
コメントを削除すると、ファイルは次のようになります。
<VirtualHost *:80>
...
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
このファイル内で、最初のドメインのアイテムをカスタマイズし、いくつかのディレクティブを追加します。 この仮想ホストセクションは、ポートで行われるすべての要求に一致します 80
、デフォルトのHTTPポート。
まず、 ServerAdmin
サイト管理者が次の方法で電子メールを受信できる電子メールへのディレクティブ:
ServerAdmin admin@your_domain_1
この後、2つのディレクティブを追加します。 最初の、と呼ばれる ServerName
、仮想ホスト定義のベースドメインを確立します。 2番目の ServerAlias
は、ベース名であるかのように一致する必要がある追加の名前を定義します。 これは、定義した追加のホストを照合する場合に役立ちます。 たとえば、 ServerName
指令 example.com
あなたは定義することができます ServerAlias
に www.example.com
、および両方がこのサーバーのIPアドレスを指します。
これらの2つのディレクティブを構成ファイルに追加します。 ServerAdmin
ライン:
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/html
...
</VirtualHost>
次に、このドメインのドキュメントルートの仮想ホストファイルの場所を変更します。 編集します DocumentRoot
このホスト用に作成したディレクトリを指すディレクティブ:
DocumentRoot /var/www/your_domain_1/public_html
上記ですべての調整を行った仮想ホストファイルの例を次に示します。
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_1
ServerName your_domain_1
ServerAlias www.your_domain_1
DocumentRoot /var/www/your_domain_1/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>
ファイルを保存して閉じます。
最初の仮想ホストサイトからファイルをコピーして、2番目の構成ファイルを作成します。
- sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf
お好みのエディタで新しいファイルを開きます。
- sudo nano /etc/apache2/sites-available/your_domain_2.conf
次に、2番目のドメインを参照するために、すべての情報を変更する必要があります。 終了すると、次のようになります。
<VirtualHost *:80>
...
ServerAdmin admin@your_domain_2
ServerName your_domain_2
ServerAlias www.your_domain_2
DocumentRoot /var/www/your_domain_2/public_html
...
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
...
</VirtualHost>
終了したら、ファイルを保存して閉じます。
手順5—新しい仮想ホストファイルを有効にする
仮想ホストファイルを作成したので、それらを有効にする必要があります。 Apacheには、これを可能にするいくつかのツールが含まれています。
を使用します a2ensite
各サイトを有効にするツール。 このスクリプトの詳細については、a2ensiteのドキュメントを参照してください。
次のコマンドを使用して、仮想ホストサイトを有効にします。
- sudo a2ensite your_domain_1.conf
- sudo a2ensite your_domain_2.conf
以下の例のように、両方のサイトの出力が表示され、Apacheサーバーをリロードするように通知されます。
OutputEnabling site example.com.
To activate the new configuration, you need to run:
systemctl reload apache2
サーバーをリロードする前に、で定義されているデフォルトのサイトを無効にしてください 000-default.conf
を使用して a2dissite
指図:
- sudo a2dissite 000-default.conf
OutputSite 000-default disabled.
To activate the new configuration, you need to run:
systemctl reload apache2
次に、構成エラーをテストします。
- sudo apache2ctl configtest
は次の出力を受け取るはずです。
Output. . .
Syntax OK
終了したら、Apacheを再起動して、これらの変更を有効にします。
- sudo systemctl restart apache2
オプションで、次のコマンドを使用して、これらすべての変更後にサーバーのステータスを確認できます。
- sudo systemctl status apache2
これで、サーバーが2つのWebサイトにサービスを提供するように設定されているはずです。 実際のドメイン名を使用している場合は、手順6をスキップして、手順7に進むことができます。 構成をローカルでテストしている場合は、ステップ6に従って、ローカルコンピューターを使用してセットアップをテストする方法を学習します。
手順6—(オプション)ローカルホストファイルの設定
この手順をテストするために所有している実際のドメイン名を使用しておらず、代わりにサンプルドメインを使用している場合でも、一時的に変更することで仮想ホストサイトの機能をテストできます。 hosts
ローカルコンピュータ上のファイル。 これにより、登録済みドメインを使用している場合にDNSシステムが行うのと同じように、構成したドメインに対するすべての要求がインターセプトされ、仮想プライベートサーバー(VPS)にポイントされます。 これはローカルコンピューターからのみ機能し、テスト目的でのみ機能します。
これらの手順では、VPSサーバーではなく、ローカルコンピューターで操作していることを確認してください。 コンピューターの管理者パスワードを知っているか、管理者グループのメンバーである必要があります。
MacまたはLinuxコンピューターを使用している場合は、次のように入力して、管理者権限でローカルファイルを編集します。
- sudo nano /etc/hosts
Windowsマシンを使用している場合は、コマンドプロンプトを開き、次のように入力します。
- notepad %windir%\system32\drivers\etc\hosts
追加する必要のある詳細は、サーバーのパブリックIPアドレスと、そのサーバーに到達するために使用するドメインです。 このガイドで使用されているドメインを使用し、サーバーのIPを your_server_IP
テキストの場合、ファイルは次のようになります。
127.0.0.1 localhost
127.0.1.1 guest-desktop
your_server_IP your_domain_1
your_server_IP your_domain_2
これにより、コンピューター上の2つのドメインに対するすべての要求が送信され、指定されたIPアドレスでサーバーに送信されます。
ファイルを保存して閉じます。
ステップ7—結果をテストする
仮想ホストが構成されたので、Webブラウザーで構成したドメインに移動してセットアップをテストできます。
http:
2番目のホストページにアクセスして、2番目のサイト用に作成したファイルを表示することもできます。
http:
これらのサイトの両方が期待どおりに機能する場合は、同じサーバー上に2つの仮想ホストを正常に構成しています。
注:このチュートリアルのステップ6のように、ローカルコンピューターのhostsファイルを調整した場合は、構成が機能することを確認したので、追加した行を削除することをお勧めします。 これはあなたの hosts
不要になったエントリでファイルがいっぱいになるのを防ぎます。
結論
これで、2つの別々のドメイン名を処理する単一のサーバーができました。 上記で概説した手順に従って仮想ホストを追加することで、このプロセスを拡張できます。 Apacheが処理できるドメイン名の数にソフトウェアの制限はないため、サーバーが処理できる数の仮想ホストを自由に作成してください。