完成と次のステップ
何ができるようになったか
最初の回で打ったのは whoami でした。いまは、証明書を作り、待ち受けを開け、ログを畳ませ、定期実行を仕込み、版を並べて出し戻しできるところまで来ています。
並べてみます。
- 1章 — サーバーに入り、どこにいるかを掴む
- 2章 — nginx を入れて、サービスとして管理する
- 3章 — 配信の設定を自分で書き、待ち受けと通り道を開ける
- 4章 — 利用者と鍵を分け、入り口を絞る
- 5章 — 証明書を作り、HTTPS で話す
- 6章 — ログを畳み、様子を見る仕組みを自動で回す
- 7章 — 版を並べて出し、数秒で戻せるようにする
- 8章 — 手順を見ずに作り直し、壊れたところから復旧する
覚えたのはコマンドではありません。困ったときにサーバー自身へ聞く手順です。systemctl status で動きを見て、journalctl で理由を読み、nginx -t で構文を確かめ、ss -tlnp で待ち受けを見て、ログの最後の行を読む。この5つは、これから触るどのソフトウェアでもほぼそのまま使えます。
引き継ぎ資料を書く
実務で必ず求められるものが1つ残っています。このサーバーが何なのかを説明する文書です。
自分しか触らないサーバーでも要ります。3か月後の自分は他人です。どのポートで何が待っていて、設定ファイルがどこにあり、どのスクリプトが何時に動くのか。思い出せる保証はどこにもありません。
書くべきことは決まっています。
- 何が入っているか、どのサービスが自動起動か
- どのポートで何が待っているか
- サイトの中身と設定ファイルの場所
- 証明書と鍵の場所、その有効期限
- 自分で置いたスクリプトと、動く時刻
- 出す手順と、戻す手順
記憶ではなく、機械から書き写す
資料を書くときに、記憶を頼りにしてはいけません。そのサーバーに聞いて、返ってきたものを書き写します。
systemctl list-units --type=service --state=running
ss -tlnp
systemctl list-timers
ls -l /root/bin
openssl x509 -in /etc/ssl/certs/mysite.crt -noout -enddate記憶で書いた資料は、たいてい現物とずれています。ずれた資料は、無い資料より危険です。
この先に続く道
ここから先の行き先を挙げておきます。
- 本物のドメインと証明書 — 自己署名でやったことを、Let's Encrypt の証明書に置き換える。仕組みは同じで、証明書の出どころが変わるだけです
- クラウド上のサーバー — AWS の EC2 や Lightsail で同じ手順を踏む。触るコマンドはこのコースと変わりません
- アプリケーションを載せる — 静的なファイルの代わりに、Node.js や Python のアプリを nginx の後ろに置く。
proxy_passが入り口になります - ネットワークの理屈 — なぜ 443 番なのか、TCP と TLS の関係は何か。手が動くようになった今なら、理屈の側から読むと繋がります
どれも、ここでやったことの続きです。まったく新しいことは出てきません。
手を動かす
最後の課題です。このサーバーの引き継ぎ資料を、機械に聞きながら書き上げます。