14. 1台の Ubuntu サーバーで複数のウェブサイトをホストする:役立つヒント

はじめに

1台の Ubuntu サーバーで複数のウェブサイトをホストすることは、開発者、中小企業、愛好家にとってコスト効率の高いソリューションです。このガイドでは、 バーチャルホスト を Apache と Nginx で設定し、同じサーバーで複数のウェブサイトをホストする方法を順を追って解説します。このチュートリアルを終える頃には、複数のドメインやサブドメインを効率的に処理できるようサーバーを構成できるようになります。


これまでの記事:

01. Ubuntu サーバー入門 – SysOSX: AI & Cloud

02. 初めての Ubuntu サーバーをセットアップする方法:初心者向けガイド – SysOSX: AI & Cloud

03. Ubuntu サーバーのための Linux コマンドライン入門 – SysOSX: AI & Cloud

04. Ubuntu サーバーでのユーザーと権限の管理:包括的ガイド – SysOSX: AI & Cloud

05. Ubuntu サーバーのためのネットワークの基礎:包括的ガイド – SysOSX: AI & Cloud

06. Ubuntu サーバーへのソフトウェアのインストールと管理:完全ガイド – SysOSX: AI & Cloud

07.Ubuntu サーバーのパッチ適用と更新:包括的ガイド – SysOSX: AI & Cloud

08. Ubuntu サーバーを保護する:強化と保護のための実践的な手順 – SysOSX: AI & Cloud

09. Ubuntu サーバーの監査とログ記録

10. Ubuntu サーバー向けシステム監視ツール:包括的ガイド – SysOSX: AI & Cloud

11. Ubuntu サーバーのための集中ログ管理:必読ガイド – SysOSX: AI & Cloud

12. Ubuntu サーバーの監査とコンプライアンス:ベストプラクティス – SysOSX: AI & Cloud

13. ホスティングとウェブアプリケーションのための Ubuntu サーバーのセットアップ:究極ガイド – SysOSX: AI & Cloud



前提条件

このガイドに従うには、次のものを用意してください。

  • Ubuntu サーバー(バージョン 20.04 以降を推奨)。
  • 権限( sudo )を持つユーザーアカウント。
  • サーバーの IP アドレスを指す複数のドメイン名。
  • Linux コマンドの基本的な知識。

パート 1:Apache で複数のウェブサイトをホストする


ステップ 1:Apache ウェブサーバーをインストールする

Apache がまだインストールされていない場合は、次のコマンドを実行します。

sudo apt update && sudo apt install apache2 -y


ステップ 2:各ウェブサイトのバーチャルホストを設定する

Apache は、バーチャルホストを使って1台のサーバーから複数のウェブサイトを提供します。各ウェブサイトには専用のバーチャルホスト設定ファイルがあります。

ウェブサイト用のディレクトリを作成する

  • 各ウェブサイト用に別々のディレクトリを作成します。
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • これらのディレクトリの所有権をユーザーアカウントに割り当てます。
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

バーチャルホスト設定ファイルを作成する

  • 最初のウェブサイト用の設定ファイルを作成します。
sudo nano /etc/apache2/sites-available/website1.com.conf
  • 次の構成を追加します。
<VirtualHost *:80>
    ServerName website1.com
    ServerAlias www.website1.com
    DocumentRoot /var/www/website1.com
    ErrorLog ${APACHE_LOG_DIR}/website1_error.log
    CustomLog ${APACHE_LOG_DIR}/website1_access.log combined
</VirtualHost>

  • 2番目のウェブサイト用の設定ファイルを作成します。
sudo nano /etc/apache2/sites-available/website2.com.conf
  • 次の構成を追加します。
<VirtualHost *:80>
    ServerName website2.com
    ServerAlias www.website2.com
    DocumentRoot /var/www/website2.com
    ErrorLog ${APACHE_LOG_DIR}/website2_error.log
    CustomLog ${APACHE_LOG_DIR}/website2_access.log combined
</VirtualHost>

バーチャルホストを有効にする

  • バーチャルホストの構成を有効にします。
sudo a2ensite website1.com.conf
sudo a2ensite website2.com.conf
  • 変更を適用するために Apache を再読み込みします。
sudo systemctl reload apache2

ステップ 3:Apache の構成をテストする

  • 各ウェブサイト用にシンプルな index.html ファイルを作成します。
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html


  • ブラウザで http://website1.com と http://website2.com にアクセスして、セットアップを確認してください。

ステップ 4:SSL/TLS でウェブサイトを保護する

Certbot をインストールする

Apache プラグインを使って Certbot をインストールします。

sudo apt install certbot python3-certbot-apache -y

SSL 証明書を取得する

各ウェブサイトで Certbot を実行します。

sudo certbot --apache -d website1.com -d www.website1.com
sudo certbot --apache -d website2.com -d www.website2.com

Certbot は、両方のウェブサイトの SSL を自動的に構成し、HTTP トラフィックを HTTPS にリダイレクトします。


パート 2:Nginx で複数のウェブサイトをホストする


ステップ 1:Nginx ウェブサーバーをインストールする

Nginx がまだインストールされていない場合は、次のコマンドを実行します。

sudo apt update && sudo apt install nginx -y


ステップ 2:各ウェブサイトのサーバーブロックを設定する

Nginx は、サーバーブロック(Apache のバーチャルホストに相当)を使って、1台のサーバーから複数のウェブサイトを提供します。

ウェブサイト用のディレクトリを作成する

  • 各ウェブサイト用に別々のディレクトリを作成します。
sudo mkdir -p /var/www/website1.com /var/www/website2.com
  • これらのディレクトリの所有権をユーザーアカウントに割り当てます。
sudo chown -R $USER:$USER /var/www/website1.com /var/www/website2.com

サーバーブロック設定ファイルを作成する

  • 最初のウェブサイト用の設定ファイルを作成します。
sudo nano /etc/nginx/sites-available/website1.com

  • 次の構成を追加します。
server {
    listen 80;
    server_name website1.com www.website1.com;

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

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

    error_log /var/log/nginx/website1_error.log;
    access_log /var/log/nginx/website1_access.log;
}

  • 2番目のウェブサイト用の設定ファイルを作成します。
sudo nano /etc/nginx/sites-available/website2.com

  • 次の構成を追加します。
server {
    listen 80;
    server_name website2.com www.website2.com;

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

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

    error_log /var/log/nginx/website2_error.log;
    access_log /var/log/nginx/website2_access.log;
}

サーバーブロックを有効にする

  • サーバーブロックを有効にするためにシンボリックリンクを作成します。
sudo ln -s /etc/nginx/sites-available/website1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/website2.com /etc/nginx/sites-enabled/

  • Nginx の構成をテストします。
sudo nginx -t
  • 変更を適用するために Nginx を再読み込みします。
sudo systemctl reload nginx

ステップ 3:Nginx の構成をテストする

  • 各ウェブサイト用にシンプルな index.html ファイルを作成します。
echo "<h1>Welcome to Website 1</h1>" > /var/www/website1.com/index.html
echo "<h1>Welcome to Website 2</h1>" > /var/www/website2.com/index.html

  • ブラウザで http://website1.com と http://website2.com にアクセスして、セットアップを確認してください。

ステップ 4:SSL/TLS でウェブサイトを保護する

Certbot をインストールする

Nginx プラグインを使って Certbot をインストールします。

sudo apt install certbot python3-certbot-nginx -y

SSL 証明書を取得する

各ウェブサイトで Certbot を実行します。

sudo certbot --nginx -d website1.com -d www.website1.com
sudo certbot --nginx -d website2.com -d www.website2.com

Certbot は、両方のウェブサイトの SSL を自動的に構成し、HTTP トラフィックを HTTPS にリダイレクトします。


参考資料

まとめ

1台の Ubuntu サーバーで複数のウェブサイトをホストすることは、ウェブアプリケーションやドメインを管理するための実用的でコスト効率の高い方法です。Apache を使う場合でも Nginx を使う場合でも、プロセスは、ディレクトリの設定、バーチャルホストまたはサーバーブロックの構成、Certbot を使った SSL/TLS 証明書によるウェブサイトの保護で構成されます。このガイドに従うことで、複数のドメインやサブドメインを効率的にホストでき、サーバーがスケーラビリティとセキュリティの面で最適化されていることを確認できます。

Apache と Nginx はどちらも強力なウェブサーバーであり、どちらを選ぶかは多くの場合、具体的な要件によって決まります。Apache は豊富な構成オプションと互換性を提供し、Nginx はパフォーマンスと同時接続の処理に優れています。どちらを選んでも、このガイドで複数のウェブサイトを効果的に管理するための基礎知識が身につきます。


次のトピックをお楽しみに: Ubuntu サーバーでのストレージとディスクの管理 この近日公開のガイドでは、ディスクの初期化の構成、異なるファイルシステム用のパーティションの作成、ファイルシステムへのマウントを含むディスクの拡張方法を学びます。お見逃しなく!