コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
ゼロから構築ミッション

サーバー運用実践:セキュリティ・監視・デプロイ

構築済みのnginxサーバーを、専用ユーザー・SSH鍵認証・ufwで保護し、HTTPS化、ログとヘルスチェックの監視、systemdタイマー、リリース切替、ロールバック、障害復旧までを実践します。本番を想定した安全な公開・監視・デプロイの基本を身につける30レッスンのコースです。

1
セキュリティのきほん
01. 専用ユーザーで動かす16分
02. SSH鍵認証16分
03. sshdを固める16分
04. ufwファイアウォール16分
05. ポートの棚卸し16分
06. ミッション サーバーを固める16分
07. 第4章クイズ12分
2
HTTPS
01. HTTPSとTLSのしくみ16分
02. 自己署名証明書を作る16分
03. nginxにHTTPSを設定16分
04. HTTPからのリダイレクト16分
05. ミッション HTTPS化完了16分
06. 第5章クイズ12分
3
運用と監視
01. tmuxで多重端末16分
02. ログローテーション16分
03. エラーログ監視16分
04. ヘルスチェック16分
05. systemdタイマー16分
06. ミッション 監視の自動化16分
07. 第6章クイズ12分
4
デプロイ
01. デプロイの型16分
02. シンボリックリンク16分
03. deploy.sh v216分
04. ロールバック16分
05. ミッション ワンコマンドデプロイ16分
06. 第7章クイズ12分
5
総合制作
01. ゼロから構築ミッション16分
02. 障害対応演習16分
03. 自由拡張16分
04. 完成と次のステップ16分

ゼロから構築ミッション

手順を見ずに、もう一度作る

ここからは総合制作です。1章から7章までで作ってきたものを、手順を見ずに自力で組み立て直します。

新しい知識は出てきません。出てくるのは、自分がどこまで身についているかという事実だけです。詰まった場所が、そのまま復習すべき場所になります。

何を作るのか

作るのは、これまでと同じ形のサーバーです。

  1. nginx を入れて、起動して、自動起動を有効にする
  2. サイトの置き場を作り、専用の server ブロックを書く
  3. 自己署名証明書を作り、443 番で待たせる
  4. 80 番から 443 番へ案内する
  5. 自分の 404 ページを返す
  6. 専用のアクセスログとエラーログを出す

今回は /var/www/portfolio という別の場所に、別の設定ファイルで作ります。同じ手順を別の対象でやると、覚えていたのが手順なのか場所なのかがはっきりします。

詰まったときの調べ方

手順書は見ませんが、サーバー自身に聞くのは構いません。むしろそれが実務です。

  • nginx -t — 設定に文法の誤りがないか
  • systemctl status nginx — 起動しているか、直近に何が起きたか
  • journalctl -u nginx -n 30 — 起動できなかったときの理由
  • nginx -T — 実際に読み込まれている設定の全体
  • ss -tlnp — どの番号で誰が待っているか
  • tail /var/log/nginx/*error.log — 配信できなかった理由

この6つで、たいていの詰まりは自力で抜けられます。エラーの文面を読む。それが一番の近道です。

つまずきやすいところ

見落としがちな点を挙げておきます。答えではなく、確認の観点です。

  • 設定を書いただけで有効にしていない (sites-enabled へのリンク)
  • 既定のサイトが残っていて、そちらが応答している
  • reload を打っていないので、古い設定のまま動いている
  • 待ち受けは足したのに、ufw で通していない
  • ファイルの権限が www-data から読めない形になっている

どれも、これまでの章で1度ずつ踏んできたものです。

手を動かす

ポートフォリオサイトを、HTTPS で公開できる状態まで自力で作ります。

ヒント

詰まったら nginx -t、systemctl status、journalctl -u nginx、ss -tlnp、エラーログの5つを順に見てください

設定を書いただけでは有効になりません。sites-enabled へのリンクと reload が要ります

  • 1. /var/www/portfolio に index.html と 404.html を置く
  • 2. openssl で portfolio 用の自己署名証明書と秘密鍵を作る
  • 3. portfolio.conf を書く。80 番は 301 で案内、443 番が中身を持つ
  • 4. 443 番のブロックに access_log と error_log、error_page 404 を書く
  • 5. sites-enabled へリンクを張り、nginx -t のあと reload する
  • 6. ufw で 443 番が通っていることを確かめる
  • 7. curl -skI で 80 番の 301 と、443 番の 200 を確かめる

Linux は使うときに起動します(初回は約102MB通信します)

17 項目で採点します