セットアップ
デプロイのたびにサイトを落とさない
2026年10月8日

レン
更新するたびに、一瞬サイトが見えなくなる気がするんだけど…

プロクラ
気のせいじゃないかもしれない。稼働中のファイルを直接置き換えると、その最中のアクセスが失敗することがあるんだ。当サイトでも実際に起きた。
何が起きるのか

プロクラ
動いているプログラムは、必要になった時点でファイルを読みに行くことがある。その瞬間に、ファイルが差し替え中だと、読めずにエラーになる。
- 古いファイルを消した後、新しいファイルが置かれるまでの隙間
- その間に来たアクセスが、エラーになる
- 検索エンジンの巡回が、その瞬間に当たることもある
- 自分では気づきにくい(数秒で終わるため)

プロクラ
当サイトの場合、デプロイのたびに数十件のエラーが出ていた。ログを見るまで、まったく気づいていなかったよ。
作ってから差し替える
考え方は単純で、新しいものを別の場所に用意しきってから、参照先を切り替えるだけです。切り替えは一瞬で終わるので、その間に来た要求も待たされません。失敗したときも、参照先を戻すだけで元に戻ります。上書きしていく方式との差は、この戻しやすさに出ます。

プロクラ
考え方は単純だよ。稼働中の場所に直接書かず、別の場所で完成させてから、まとめて入れ替える。入れ替え自体は一瞬で終わる。
- 別のディレクトリに、新しい版を用意する
- 完成したことを確認する
- 参照先を、新しいほうへ切り替える
- 古い版は、しばらく残しておく(戻せるようにする)

プロクラ
4つめが保険になるよ。切り替えた後に問題が見つかったら、参照先を戻すだけで復旧できる。作り直しより、はるかに速い。
アプリの再起動も同じ考え方
- 止めてから起動すると、その間は応答できない
- 新しいプロセスを先に立ち上げ、切り替えてから古いほうを止める
- 対応している常駐の仕組みもある
- 個人のサイトなら、数秒の停止を許容する判断もあってよい

プロクラ
4つめは正直なところだね。完全に止めない構成は手間もかかる。まずはファイルの差し替えだけ直して、アプリの再起動は数秒許容する、という段階でも十分に効果があるよ。
気づけるようにする
- デプロイの後に、実際にページを取得して確認する
- エラーログに、その時刻の記録が無いか見る
- 外形監視を入れておけば、長い停止には気づける
- デプロイの手順に、この確認を組み込む

レン
上に書かずに、作ってから差し替える。それだけで違うんだね。
データベースの変更を伴う場合
ここだけは同じ手が使えません。新旧のアプリが同時に動く瞬間があるため、どちらから見ても矛盾しない形に変更を分ける必要があります。列を消すなら、まず使わないようにしてから、次の更新で消す。手間はかかりますが、切り戻せる状態を保てます。

プロクラ
ファイルの差し替えより厄介なのが、データベースの構造を変える更新だよ。新旧のコードが同時に動く瞬間があると、片方が対応していない構造を触ることになる。
- 構造の変更と、コードの入れ替えを分けて行う
- 先に、新旧どちらでも動く形の変更を入れる
- コードを入れ替えたあと、不要になった部分を消す
- 個人のサイトなら、短時間止めて一気にやるほうが単純

プロクラ
4つめは現実的な判断だよ。止められない規模でなければ、メンテナンス表示を出して数分止めるほうが、手順としてずっと簡単だ。
VPSの料金を比較する
あわせて読みたい
- セットアップビルドをどこでやるか:本番サーバーの負荷を避ける本番でビルドすると何が起きるのか、別の場所で作る場合の選択肢。小さいプランでビルドが失敗する理由と、その回避策を解説します。
- セットアップパッケージの更新でエラーが出る更新が通らないときの原因を、取得先・容量・依存関係・サポート期限の4つに分けて確認します。特に、期限切れのOSで起きる詰まり方を解説します。
- セットアップIPv6を有効にすべきか:有効にする前に考えること使えるからといって有効にすると、片方だけ守られていない状態が生まれます。何が変わるのか、ファイアウォールをどう揃えるのか、判断材料を解説します。
- セットアップcronが動かないときに見るところ手で実行すると動くのに、定期実行だと動かない。その原因のほとんどを占める環境変数とパスの問題を中心に、確認の順番を解説します。
サーバーを触る前に押さえておきたいこと
姉妹サイトの、この記事と相性のいいページです。
- Linuxコマンド入門
ls / cd / grep などを疑似ターミナルで試しながら学べる — prodou.net
- シェルスクリプト入門
サーバー作業の自動化スクリプトを基礎から — prodou.net
- Password Generator
サーバー用に強いパスワードをその場で生成 — toolkitbox.net
- Cron Generator
定期実行のcron式を組み立てる — toolkitbox.net