CodeGym /コース /Docker SELF /バーチャルホストの設定

バーチャルホストの設定

Docker SELF
レベル 7 , レッスン 1
使用可能

バーチャルホストの設定

1. 仮想ホストって何?

想像してみて、君が居心地の良いカフェを開くとするよ。お客さんの多くはコーヒー☕を求めてくるけど、時々誰かが紅茶🍵を注文することがある。紅茶好きのために別の店を開く代わりに、単に紅茶愛好者のための小さなコーナーを設けるんだ。ウェブサーバーの世界では、このコンセプトは仮想ホストと呼ばれるんだよ。それにより、1つの物理的なサーバーで、異なるドメインを持つ複数のサイトを処理することが可能になる。

仮想ホストの種類

  1. IPアドレスベース — 各サイトにユニークなIPアドレスが割り当てられるんだ。コンサートのVIPエリアみたいな感じで、VIPチケットを持っているお客さんそれぞれに専用の席が与えられる。
  2. ドメイン名ベース — 複数のサイトが1つのIPアドレスを共有できる。ここでサーバーは、クライアントのリクエストに含まれるホスト名(ドメイン名)を使って表示すべきサイトを判断するんだ。これはほとんどのプロジェクトにとってより一般的で便利なオプションだね。

2. Nginxでの仮想ホスト設定

1. 新しい仮想ホストの作成

仮想ホストを設定するには、まず設定ファイルを作成する必要があるよ。このファイルには、特定のドメインのリクエストをサーバーがどう処理するのかの情報が含まれてる。

サイト用のファイルを作成する。例えば、example.com:

sudo nano /etc/nginx/sites-available/example.com

以下の設定ブロックを追加する:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

コードを詳細に見てみよう:

  • listen 80;: サーバーが80番ポート(HTTP用のデフォルトポート)をリッスンすることを指定してる。
  • server_name example.com www.example.com;: サーバーがどのドメイン名に反応するかを定義してる。
  • root /var/www/example.com;: サイトのファイルが保存されているルートフォルダを指示してる。
  • index index.html;: サイトの「メインページ」として使われるファイルを指定してる。
  • location / { try_files $uri $uri/ =404; }: リクエストのルーティングの設定。もしファイルやディレクトリが見つからない場合、404エラーを返す。

2. 設定を有効にする

次に仮想ホストを「有効化」する必要があるよ。Nginxではシンボリックリンクを使うよ:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

次に設定にエラーがないか確認する:

sudo nginx -t

問題がなければ、サーバーを再起動する:

sudo systemctl reload nginx

3. 動作確認

サイトのファイル用フォルダを作成する:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

以下の簡単なHTMLコードを追加する:

<h1>example.comへようこそ!</h1>
<p>Nginxサーバーが準備完了です。</p>

ファイルを保存して、以下をブラウザで開く: http://example.com。ウェルカムメッセージが見えたら、仮想ホストが正しく動作してるよ!

4. Linuxでのシンボリックリンク

シンボリックリンク(またはsoft links, symlinks)は、別のファイルまたはディレクトリを指す特別なファイルオブジェクトだよ。Windowsでの「ショートカット」と同じように機能して、別のパスを通じて対象のファイルやフォルダにアクセスできるようにする。

シンボリックリンクには元のオブジェクトへのパスが含まれていて、オブジェクト自体ではない。元のファイルやフォルダが移動または削除されると、リンクは「壊れる」状態になり、存在しないオブジェクトを指すことになる。

シンボリックリンクを作成するコマンド:

ln -s target link_name
  • target — 元のオブジェクトへのパス。
  • link_name — リンクの名前。

例:

ln -s /var/log/syslog log_link

これでlog_linkを通じて/var/log/syslogファイルにアクセスできるようになる。

用途:

  • ナビゲーションを簡略化する。
  • ファイルへの別のアクセスポイントを作成する。
  • ディレクトリの整理。

3. Apacheでのバーチャルホストの設定

1. 設定ファイルの作成

Apacheでは別のアプローチを使うんだ。ここでは、バーチャルホスト用の設定は/etc/apache2/sites-available/ディレクトリにあるよ。サイト用のファイルを作成する:

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

次のコードを追加する:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

簡単な説明:

  • <VirtualHost *:80>: 80番ポートへの全リクエストにこの設定を適用するよ。
  • ServerNameServerAlias: サイトのメインドメイン名とサブドメイン名を指定する。
  • DocumentRoot: サイトのルートディレクトリを指定。
  • <Directory>: 指定されたディレクトリのアクセス権や動作を定義するブロック。

2. 設定を有効化する

設定を有効にするには、次のコマンドを使う:

sudo a2ensite example.com.conf

サーバーを再起動して、変更を反映:

sudo systemctl restart apache2

3. 動作確認

再度、サイト用のフォルダとファイルを作成する:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

次の内容を追加:

<h1>Apacheでのexample.comへようこそ!</h1>

保存してブラウザで開く: http://example.com。ウェルカムページが見えたら成功!Apacheでバーチャルホストの設定完了だよ、おめでとう!


4. 複数ホストの確認と管理

2つ目のバーチャルホストの設定

例えば、2番目のサイトtest.comを提供したい場合:プロセスは同じだよ:

  1. 新しい設定ファイルを作成。
  2. ユニークなドメイン名とルートフォルダを指定。
  3. 設定を有効にしてサーバーを再起動。

Nginxの場合:

sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Apacheの場合:

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

問題のデバッグ

バーチャルホストが動作しない場合は、エラーを確認することから始めてね。例えば:

  • Nginxの場合:

      sudo tail -f /var/log/nginx/error.log
    
  • Apacheの場合:

      sudo tail -f /var/log/apache2/error.log
    

また、curlコマンドを使用してサイトを直接テストすることもできるよ:

curl -I http://example.com

これで、バーチャルホストを設定して、1つのサーバーで複数のサイトを実行できるようになったね。この次はHTTPSの設定だよ。これでサイトをセキュアにするって話だけど、それは次回の講義のトピックだね!

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION