コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
ミッション ワンコマンドデプロイ

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

構築済みの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コマンドで終わる deploy.sh、数秒で戻る rollback.sh。

この章の締めくくりは、この3つを一続きの流れとして通すことです。実際の運用は、出して終わりではありません。

  1. 新しい版を出す
  2. 出したものが正しいかを確かめる
  3. おかしければ戻す

2 が抜けている運用が、いちばん多い失敗です。出したことは分かっても、出したものが正しいかは誰も見ていない。訪問者からの連絡で初めて気づく、という状態になります。

出したあとに自分で確かめさせる

6章で作ったヘルスチェックが、そのまま使えます。デプロイの最後で1回呼べば、出した直後の状態を判定できます。

ターミナル

if ! /root/bin/healthcheck.sh; then
    echo "デプロイ後の確認に失敗しました"
    exit 1
fi

! は結果をひっくり返す指定です。失敗したときだけ中に入ります。

さらに踏み込むなら、判定に失敗したら自動で戻すこともできます。

ターミナル

if ! curl -skf --max-time 5 https://localhost/ > /dev/null; then
    /root/bin/rollback.sh
fi

自動で戻すかどうかは、慎重に決める必要があります。判定の作りが甘いと、正常なのに戻ってしまい、しかも戻ったことに誰も気づきません。判定が確かなうちは、止めて知らせるだけに留めるほうが安全です。

記録を1か所にまとめる

deploy.sh も rollback.sh も、何をしたかを /var/log/deploy.log に残します。同じファイルに集めることで、時系列で読めるようになります。

プレーンテキスト

2026-08-08 10:15:00 deploy 20260401-101500
2026-08-08 10:22:31 rollback 20260401-101500 -> 20260807-093000

この2行が並んでいれば、7分で気づいて戻したことが後から分かります。障害の記録は、その場の記憶より後の判断のために残します。

いま何が動いているかを1コマンドで

最後に、状況をまとめて見る手段を用意します。公開中の版、版の一覧、直近の記録。この3つが1度に見えれば、朝いちばんの確認が数秒で済みます。

6章の monitor-report.sh と同じ考え方です。見る場所を増やさない。増やした場所は、そのうち見られなくなります。

手を動かす

デプロイの最後に自分で確認させ、記録を1か所に集め、いまの状態を1コマンドで見られるようにします。

ヒント

! は結果をひっくり返す指定です。失敗したときだけ中に入ります

自動で戻す仕組みは、判定の作りが甘いと正常なのに戻ってしまいます。まずは止めて知らせるだけに留めるほうが安全です

  • 1. deploy.sh の最後に /root/bin/healthcheck.sh を呼び、失敗したら exit 1 で止める
  • 2. deploy.sh に、deploy と版の名前を /var/log/deploy.log へ追記する行を足す
  • 3. /root/bin/status.sh を書く。readlink で公開中の版、ls で版の一覧、tail で直近の記録を /root/deploy-status.txt に書き出す
  • 4. chmod +x を付けて status.sh を実行する
  • 5. deploy.sh を実行し、そのあと rollback.sh を実行する
  • 6. /var/log/deploy.log に deploy と rollback の記録が並んでいることを確かめる

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

13 項目で採点します