Webサーバーといえば、「Nginx」と「Apache」が主に挙げられます。今回は「Nginx」を使ったWebサーバーの構築をしていきます。
Nginxをインストールします
$ sudo apt install nginx
Webサーバーは80番のポートを使用します。
80番ポートを解放します。
$ sudo ufw allow 80
Nginxを起動します。
$ sudo service nginx start
ブラウザで自分のIPアドレスを入力して検索します。
次のように表示されたらOKです!
次に、画面上に「Hello World」と表示してみましょう。
/var/www/html/index.nginx-debian.htmlの内容を書き換えます。
$ sudo vim /var/www/html/index.nginx-debian.html
次のように書き換えます。
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
ページを更新して確認します。
画面上に「Hello World」と表示されれば成功です。
Certbotをインストールします。
$ sudo apt install certbot python3-certbot-nginx
Nginxの設定ファイルを編集します。
$ sudo vim /etc/nginx/sites-available/default
serverコンテキスト内のserver_nameフィールドを編集し、SSLを発行するドメインを指定します。
例としてドメイン名をexample.comとします。
# 46行目を変更
server_name example.com;
設定が正しく記載されているかテストします。
$ sudo nginx -t
Nginxのサービスをリロード
$ sudo service nginx restart
SSL証明書取得します。
$ sudo certbot --nginx -d example.com
HTTPからリクエストがあったとき、HTTPSにリダイレクトさせるか聞かれます。リダイレクトさせるには「2」を選択します。
「IMPORTANT NOTES」に「Congratulations!」と記載があればOKです。
certbot.timerサービスを確認します。Active: active (waiting)と出ればOKです。
$ sudo systemctl status certbot.timer
dry-runで更新処理をテストします。少し待って、出てくる真ん中あたりにCongratulations, all renewals succeeded.と出ればOKです。
$ sudo certbot renew --dry-run
HTTPSは443番ポートを使用します。443番ポートを解放します。
$ sudo ufw allow 443
Nginxを再起動します。
sudo systemctl restart nginx
ブラウザでホスト名で検索し、Hello Worldと表示され、ホスト名の隣に鍵マークがあれば成功です。お疲れ様でした。
本格的に、Webサーバーとしてブログなどを運用したい場合はDjangoを使ったWebサーバーの構築を強くお勧めします。
Djangoを使ったブログ記事の作成は、
こちらからどうぞ。IPアドレスからリダイレクトさせます。
$ sudo vim /etc/nginx/sites-available/default
最後に追記(server_nameフィールドはIPアドレスを入力します。)
server{
#IP Canonicalization
server_name xxx.xxx.xxx.xxx;
return 301 http://example.com;
}
次に、証明書を自動更新させます。
Letsencryptの証明書は3ヶ月ごとに更新する必要があります。これを自動化させます。
crontabを編集します。
$ sudo crontab -e
以下のように表示された場合は、テキストエディタを選択します。vimを選ぶ場合は「2」を選択。
no crontab for root - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
毎月1日0時にNginxの停止、証明書の更新、Nginnxの開始を行います。
00 00 01 * * sudo systemctl stop nginx; sudo letsencrypt renew; sudo systemctl start nginx
Nginxを再起動します。
$ sudo service nginx restart
前の記事 | 次の記事