はじめに
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
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 サーバーでのストレージとディスクの管理 この近日公開のガイドでは、ディスクの初期化の構成、異なるファイルシステム用のパーティションの作成、ファイルシステムへのマウントを含むディスクの拡張方法を学びます。お見逃しなく!
7 thoughts on “14. Host Multiple Websites on a single Ubuntu Server: Useful tips”