仮想ホストとSSLを使ったWebサーバーの展開
1. 環境の準備
いよいよすべてをまとめる時が来たよ。今日は複数の仮想ホストが設定されたサーバーをデプロイして、HTTPSを接続するね。テストしたり、デバッグしたり、最終設定を行う予定だよ。
私たちの目標
このプロジェクトでは、1つのWebサーバーに2つのサイトをデプロイするよ:
- example.com
- test.com
それぞれのサイトには仮想ホストを設定し、HTTPSを接続する。デバッグと動作確認のステップも説明するよ。準備はいい?始めよう!
準備
始める前に、すべてが正しく設定されているか確認しよう:
Webサーバー (NginxまたはApache) がすでにインストールされていることを確認する。
Nginxを使う場合:
sudo apt-get update sudo apt-get install nginx
またはApacheを使う場合:
sudo apt-get update sudo apt-get install apache2
SSL用のCertbotパッケージがインストールされていること。
Nginxの場合:
sudo apt-get install certbot python3-certbot-nginx
Apacheの場合:
sudo apt-get install certbot python3-certbot-apache
example.comとtest.comのドメイン用にDNSが設定されたサーバーにアクセスできるか、またはテスト用に
/etc/hosts
を使用できることを確認しよう。
2. 各サイト用ディレクトリの設定
まずはサイト用のディレクトリとファイルを作成しましょう。
ステップ 1: サイト用のフォルダを作成
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
ステップ 2: テスト用HTMLファイルを作成
各サイト用にシンプルなHTMLファイルを作ってみましょう:
example.com
sudo nano /var/www/example.com/index.html
コンテンツ:
<!DOCTYPE html>
<html>
<head>
<title>example.comへようこそ</title>
</head>
<body>
<h1>こちらはexample.comです</h1>
<p>example.comへようこそ!サイトはSSLで保護されており正常に動作しています!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
コンテンツ:
<!DOCTYPE html>
<html>
<head>
<title>test.comへようこそ</title>
</head>
<body>
<h1>こちらはtest.comです</h1>
<p>test.comへようこそ!サイトはSSLで保護されており正常に動作しています!</p>
</body>
</html>
3. バーチャルホストの設定
各サイト用の個別の設定ファイルを作成するよ。
ステップ 1: Nginxの設定
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;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
内容:
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
設定を有効化する:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
サーバーを再起動する:
sudo nginx -t
sudo systemctl reload nginx
ステップ 2: Apacheの設定
example.com
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>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
内容:
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
設定を有効化する:
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. サイト用のHTTPSの設定
今からLet’s Encryptを使用して、両方のサイトのSSLを接続するよ。
sudo certbot --nginx
# またはApacheの場合:
sudo certbot --apache
プロセス中に、どのサイトの証明書を発行するかを選択するよう求められるよ。example.com
とtest.com
を選択してね。Certbotは自動的にサーバーの設定を更新してくれるよ。
5. サイトの動作確認
設定が完了したら、以下のサイトを訪れてみてね。
作成したHTMLページが表示されるはずだよ。ブラウザのアドレスバーに「安全」(Secure)と表示されているか確認してね。
6. デバッグと確認
何かうまくいかなかった場合は、ログを確認してみて:
Nginxの場合:
sudo tail -f /var/log/nginx/error.log
Apacheの場合:
sudo tail -f /var/log/apache2/error.log
またはcurl
を使ってアクセス可能か確認してみて:
curl -I http://example.com
curl -I https://example.com
7. 証明書の更新
Certbotはシステムのcron
を使って証明書を自動的に更新するよ。確認するために手動で以下を実行できる:
sudo certbot renew --dry-run
このように、一歩一歩進んで、複数サイトとHTTPSをサポートするウェブサーバーの設定を完了したよね。空っぽのサーバーから仮想ホストとSSLが動作するまでの全工程を終えたばかりだ。これでサーバーが自分のサイトを世界に披露できる準備が整ったんだ。すごくない?
GO TO FULL VERSION