甘栗の雨暮らし

第3回 Nginxの導入

カテゴリ:Ubuntuサーバー

作成日:2022年7月11日21:54

更新日:2022年11月12日15:27

前の記事 | 次の記事

初めに

Webサーバーといえば、「Nginx」と「Apache」が主に挙げられます。今回は「Nginx」を使ったWebサーバーの構築をしていきます。

Nginxのインストール

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」と表示されれば成功です。

HTTPSで公開

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

ホームアイコン 前の記事 | 次の記事
ブログ管理人のプロフィール画像
甘栗

 中学でホルンを吹いていた。Ubuntuサーバーの記事をメインで書くよ。他も色々と書いていく予定。