コース一覧
サーバー運用実践:セキュリティ・監視・デプロイ
デプロイの型

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

構築済みの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分

デプロイの型

上書きするデプロイは危ない

ここまで、サイトの中身は /var/www/mysite に直接置いてきました。更新するときは、そこへファイルを上書きすることになります。

このやり方には問題が3つあります。

  • 上書きの最中は、壊れた状態が見えている。半分だけ新しいページが訪問者に届く
  • 戻せない。上書きした瞬間、前の版はどこにも残っていない
  • いま何が公開されているのか分からない。ファイルの日付から推測するしかない

1つ目は数秒の話に見えますが、ファイルが多いほど窓は広がります。3つ目は事故が起きたときに効いてきます。「昨日の版に戻して」と言われて、昨日の版が手元に無い状況ほど困るものはありません。

版を並べて置き、向き先だけ変える

解決の型は決まっています。新しい版は別の場所に丸ごと作り、公開先の向き先を切り替える。この形です。

プレーンテキスト

/var/www/mysite-deploy/
├── releases/
│   ├── 20260806-120000/
│   ├── 20260807-093000/
│   └── 20260401-101500/
└── current -> releases/20260401-101500

releases の下に、版ごとのディレクトリが日時の名前で並びます。current は「いま公開しているのはこれ」を指す目印です。

この形にすると、さきほどの3つがそのまま解決します。

  • 新しい版は誰にも見えない場所で完成させてから、向き先を変える。切り替えは一瞬で終わる
  • 前の版は消さずに残っている。向き先を戻すだけで復帰できる
  • current が何を指しているかを見れば、公開中の版が分かる

名前を日時にするのは、並べたときに時系列の順になるからです。v1、v2 のような通し番号だと、いつの版なのかが分かりません。

中身は rsync で運ぶ

新しい版を作るには、元になるファイルを releases の下へ運びます。

ターミナル

rsync -a --delete /var/www/mysite/ /var/www/mysite-deploy/releases/20260401-101500/

rsync は、Linux 入門でバックアップに使ったものと同じです。

  • -a — 権限や更新日時を保ったまま丸ごと運ぶ
  • --delete — 運び元に無いファイルを、運び先から消す

--delete が要点です。付けないと、前に置いて今回消したはずのファイルが残り続けます。消したはずのページがなぜか見えている、という不具合の原因はたいていこれです。

運び元の末尾の / にも意味があります。付けると「中身を」、付けないと「そのディレクトリごと」運びます。付け忘れると releases/20260401-101500/mysite/ という一段深い形になります。

実際に運ぶのは誰か

4章で deploy ユーザーを作りました。デプロイはこのユーザーの仕事です。root で運ぶと、置かれたファイルの持ち主が root になり、次に deploy から触れなくなります。

置き場所ごと deploy の持ち物にしておくのが、この先で詰まらないための下ごしらえです。

手を動かす

版を並べて置くための場所を作り、いまのサイトを最初の版として置きます。

ヒント

--delete を付けないと、消したはずのファイルが運び先に残り続けます

運び元の末尾の / は、中身を運ぶかディレクトリごと運ぶかの違いです

  • 1. mkdir -p /var/www/mysite-deploy/releases で置き場所を作る
  • 2. rsync -a --delete で /var/www/mysite/ の中身を releases/20260401-101500/ へ運ぶ
  • 3. 運び元の末尾に / を付ける。付けないと一段深い形になる
  • 4. chown -R deploy:deploy /var/www/mysite-deploy で持ち主を変える
  • 5. ls -l /var/www/mysite-deploy/releases/ > /root/releases.txt で結果を保存する

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

9 項目で採点します