Ubuntu 16.04でApache仮想ホストを設定する方法

前書き

Apache Webサーバーは、インターネット上でWebコンテンツを提供する最も一般的な方法です。 インターネット上のすべてのアクティブなWebサイトの半分以上を占め、非常に強力で柔軟です。

Apacheは、その機能とコンポーネントを個別にカスタマイズおよび構成できる個々のユニットに分割します。 個々のサイトまたはドメインを記述する基本単位は、virtual hostと呼ばれます。

これらの指定により、管理者はマッチングメカニズムを使用して、1つのサーバーを使用して、単一のインターフェースまたはIPから離れた複数のドメインまたはサイトをホストできます。 これは、単一のVPSから複数のサイトをホストする場合に関係します。

構成された各ドメインは、そのサイトの情報を保持している特定のディレクトリに訪問者を誘導し、同じサーバーが他のサイトにも責任があることを決して示しません。 このスキームは、サーバーが負荷を処理できる限り、ソフトウェアの制限なしに拡張できます。

このガイドでは、Ubuntu 16.04 VPSでApache仮想ホストをセットアップする方法を説明します。 このプロセスでは、リクエストしているドメインに応じて、異なる訪問者に異なるコンテンツを提供する方法を学びます。

前提条件

このチュートリアルを開始する前に、ここの手順1〜4で説明されているようにcreate a non-root userを実行する必要があります。

これらの手順を実行するには、Apacheをインストールする必要もあります。 まだインストールしていない場合は、apt-getを使用してApacheをサーバーにインストールできます。

sudo apt-get update
sudo apt-get install apache2

これらの手順が完了したら、開始できます。

このガイドの目的のために、この構成では、example.com用の仮想ホストとtest.com用の仮想ホストを作成します。 これらはガイド全体で参照されますが、従う際に独自のドメインまたは値を置き換える必要があります。

how to set up your domain names with DigitalOceanを学ぶには、このリンクをたどってください。 notに使用可能なドメインがある場合は、ダミー値を使用できます。

ダミー値を使用している場合は、後でローカルホストファイルを編集して構成をテストする方法を示します。 これにより、ドメイン名を介して他の訪問者がコンテンツを利用できない場合でも、自宅のコンピューターから構成をテストできます。

[[step-one -—- create-the-directory-structure]] ==ステップ1—ディレクトリ構造を作成します

最初に行うステップは、訪問者に提供するサイトデータを保持するディレクトリ構造を作成することです。

document root(Apacheが提供するコンテンツを見つけるために調べる最上位ディレクトリ)は、/var/wwwディレクトリの下の個々のディレクトリに設定されます。 ここで、作成する予定の両方の仮想ホスト用のディレクトリを作成します。

theseディレクトリ内に、実際のファイルを保持するpublic_htmlフォルダを作成します。 これにより、ホスティングの柔軟性が向上します。

たとえば、サイトの場合、ディレクトリを次のように作成します。

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

赤い部分は、VPSから提供したいドメイン名を表しています。

[[step-two -—- grant-permissions]] ==ステップ2—権限を付与する

これでファイルのディレクトリ構造はできましたが、それらはルートユーザーが所有しています。 通常のユーザーがWebディレクトリ内のファイルを変更できるようにしたい場合、これを行うことで所有権を変更できます。

sudo chown -R $USER:$USER /var/www/example.com/public_html
sudo chown -R $USER:$USER /var/www/test.com/public_html

$USER変数は、Enterを押したときと同じように、現在ログインしているユーザーの値を取ります。 これにより、通常のユーザーは、コンテンツを保存するpublic_htmlサブディレクトリを所有するようになります。

また、ページを正しく提供できるように、一般的なWebディレクトリとそれに含まれるすべてのファイルとフォルダーへの読み取りアクセスが許可されるように、アクセス許可を少し変更する必要があります。

sudo chmod -R 755 /var/www

これで、Webサーバーにはコンテンツを提供するために必要な権限が与えられ、ユーザーは必要なフォルダー内にコンテンツを作成できるようになります。

[[step-three -—- create-demo-pages-for-each-virtual-host]] ==ステップ3—各仮想ホストのデモページを作成する

ディレクトリ構造が整っています。 配信するコンテンツを作成しましょう。

デモを行うだけなので、ページは非常にシンプルになります。 サイトごとにindex.htmlページを作成します。

example.comから始めましょう。 次のように入力して、エディターでindex.htmlファイルを開くことができます。

nano /var/www/example.com/public_html/index.html

このファイルで、接続先のサイトを示す簡単なHTMLドキュメントを作成します。 私のファイルは次のようになります。

/var/www/example.com/public_html/index.html


  
    Welcome to Example.com!
  
  
    

Success! The example.com virtual host is working!

完了したら、ファイルを保存して閉じます。

次のように入力して、このファイルをコピーして、2番目のサイトのベースとして使用できます。

cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

その後、ファイルを開いて、関連する情報を変更できます。

nano /var/www/test.com/public_html/index.html

/var/www/test.com/public_html/index.html


  
    Welcome to Test.com!
  
   

Success! The test.com virtual host is working!

このファイルも保存して閉じます。 これで、仮想ホスト構成のテストに必要なページが用意されました。

[[step-four -—- create-new-virtual-host-files]] ==ステップ4—新しい仮想ホストファイルを作成する

仮想ホストファイルは、仮想ホストの実際の構成を指定し、Apache Webサーバーがさまざまなドメインリクエストに応答する方法を指定するファイルです。

Apacheには、出発点として使用できる000-default.confというデフォルトの仮想ホストファイルが付属しています。 これをコピーして、各ドメインの仮想ホストファイルを作成します。

1つのドメインから始めて構成し、2番目のドメイン用にコピーしてから、さらにいくつかの必要な調整を行います。 デフォルトのUbuntu構成では、各仮想ホストファイルが.confで終わる必要があります。

最初の仮想ホストファイルを作成する

最初のドメインのファイルをコピーすることから始めます。

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf

root権限でエディターで新しいファイルを開きます。

sudo nano /etc/apache2/sites-available/example.com.conf

ファイルは次のようになります(ファイルをより親しみやすいものにするために、ここでコメントを削除しました)。

/etc/apache2/sites-available/example.com.conf


    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

ご覧のとおり、ここにはあまりありません。 ここで最初のドメイン用にアイテムをカスタマイズし、いくつかの追加のディレクティブを追加します。 この仮想ホストセクションは、デフォルトのHTTPポートであるポート80で行われるany要求と一致します。

まず、ServerAdminディレクティブを、サイト管理者が電子メールを受信できる電子メールに変更する必要があります。

ServerAdmin [email protected]

この後、2つのディレクティブをaddする必要があります。 1つ目はServerNameと呼ばれ、この仮想ホスト定義に一致する必要があるベースドメインを確立します。 これはおそらくあなたのドメインになります。 2番目はServerAliasと呼ばれ、ベース名であるかのように一致する必要がある追加の名前を定義します。 これは、wwwのように、定義したホストを照合する場合に役立ちます。

ServerName example.com
ServerAlias www.example.com

基本的な仮想ホストファイルに対して変更する必要がある他の唯一のものは、このドメインのドキュメントルートの場所です。 必要なディレクトリはすでに作成されているので、作成したディレクトリを反映するようにDocumentRootディレクティブを変更する必要があります。

DocumentRoot /var/www/example.com/public_html

合計すると、virtualhostファイルは次のようになります。

/etc/apache2/sites-available/example.com.conf


    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

ファイルを保存して閉じます。

最初の仮想ホストをコピーし、2番目のドメイン用にカスタマイズする

最初の仮想ホストファイルが確立されたので、必要に応じてそのファイルをコピーして調整することにより、2番目の仮想ホストファイルを作成できます。

コピーして開始します。

sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

エディターでroot権限で新しいファイルを開きます。

sudo nano /etc/apache2/sites-available/test.com.conf

次に、2番目のドメインを参照するためにすべての情報を変更する必要があります。 終了すると、次のようになります。

/etc/apache2/sites-available/test.com.conf


    ServerAdmin [email protected]
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

完了したら、ファイルを保存して閉じます。

[[step-five -—- enable-the-new-virtual-host-files]] ==ステップ5—新しい仮想ホストファイルを有効にする

仮想ホストファイルを作成したので、それらを有効にする必要があります。 Apacheには、これを可能にするいくつかのツールが含まれています。

a2ensiteツールを使用して、次のように各サイトを有効にすることができます。

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

次に、000-default.confで定義されているデフォルトサイトを無効にします。

sudo a2dissite 000-default.conf

終了したら、Apacheを再起動してこれらの変更を有効にする必要があります。

sudo systemctl restart apache2

他のドキュメントでは、serviceコマンドを使用した例も表示される場合があります。

sudo service apache2 restart

このコマンドは引き続き機能しますが、systemdのsystemctlのラッパーになっているため、他のシステムで見慣れている出力が得られない場合があります。

[[step-six -—- set-up-local-hosts-file-optional]] ==ステップ6—ローカルホストファイルの設定(オプション)

この手順をテストするために所有している実際のドメイン名を使用しておらず、代わりにいくつかのサンプルドメインを使用している場合は、ローカルコンピューターのhostsファイルを一時的に変更することで、少なくともこのプロセスの機能をテストできます。 。

これは、登録済みドメインを使用している場合にDNSシステムが行うように、設定したドメインへのリクエストをインターセプトし、VPSサーバーにポイントします。 ただし、これはコンピューターからのみ機能し、テスト目的でのみ役立ちます。

これらの手順では、VPSサーバーではなく、ローカルコンピューターで操作していることを確認してください。 コンピューターの管理パスワードを知っているか、管理グループのメンバーである必要があります。

MacまたはLinuxコンピューターを使用している場合は、次を入力して管理者権限でローカルファイルを編集します。

sudo nano /etc/hosts

Windowsマシンを使用している場合は、ここでfind instructions on altering your hosts fileを実行できます。

追加する必要がある詳細は、VPSサーバーのパブリックIPアドレスと、そのVPSに到達するために使用するドメインです。

このガイドで使用したドメインの場合、VPS IPアドレスが111.111.111.111であると仮定すると、hostsファイルの最後に次の行を追加できます。

/etc/hosts

127.0.0.1   localhost
127.0.1.1   guest-desktop
111.111.111.111 example.com
111.111.111.111 test.com

これにより、コンピューター上のexample.comおよびtest.comに対するすべての要求が送信され、111.111.111.111でサーバーに送信されます。 これは、仮想ホストをテストするためにこれらのドメインの所有者ではない場合に必要なものです。

ファイルを保存して閉じます。

[[step-seven --- test-your-results]] ==ステップ7—結果をテストします

仮想ホストが構成されたので、Webブラウザーで構成したドメインに移動して、セットアップを簡単にテストできます。

http://example.com

次のようなページが表示されます。

Apache virt host example

同様に、2番目のページにアクセスできる場合:

http://test.com

2番目のサイト用に作成したファイルが表示されます。

Apache virt host test

これらのサイトの両方が正常に機能する場合は、同じサーバー上にtwo仮想ホストを正常に構成しています。

自宅のコンピューターのホストファイルを調整した場合は、構成が機能することを確認したため、追加した行を削除することをお勧めします。 これにより、実際には必要のないエントリでホストファイルがいっぱいになるのを防ぎます。

この長期的なアクセスが必要な場合は、必要なサイトごとにドメイン名とsetting it up to point to your VPS serverを購入することを検討してください。

結論

従えば、2つの別個のドメイン名を処理する単一のサーバーが必要になります。 上記の手順に従って仮想ホストを追加すると、このプロセスを拡張できます。

Apacheが処理できるドメイン名の数にソフトウェアの制限はないため、サーバーが処理できる数だけ自由に作成できます。