5

たとえば、オンライン ゲームを実行していて、そのバージョンが 1.0 だとします。

ステージング サーバーで開発を続け、新しい機能をゲームに取り入れています。ステージング サーバーは、ライブ サーバーとは別のサーバーです。(きっと、ほとんどの人がこの方法でやっていると思います)

わかった。新しいバージョン 1.1 を終了します。オンライン ゲーム サーバーのアップグレードを行うためのベスト プラクティスは何ですか?

単純なゲーム サーバー PHP + MYSQL であると仮定しましょう。したがって、新しい php スクリプトまたは変更されたスクリプト、および新しい mysql テーブル、列、または変更された列があります。手動で行わないことを願っています - ライブ サーバーで同じ変更を 1 つずつ手動で行います。それは醜く、間違いを犯しやすく、行ったすべての変更を覚えておく必要があります。

私が考えることができる別の方法は、ステージング サーバーを稼働させ、既存のデータベース データをすべてインポートすることです。私はそれが好きではありません、間違いはいつでも起こり得るようです。

あなたが推奨できる最良の方法は何ですか?

4

3 に答える 3

8
  • バージョン管理 - 使用してください!
  • 移行 - 使用してください!

バージョン管理 (Git)

テスト/ステージ サーバーと同様に、ライブ サーバーにも git サーバーが必要です。行った変更をコミットし、それらのコミット/変更をサーバーに「プッシュ」します。テスト サーバーが機能したら、それをライブ サーバーにプッシュします。

移行

最新の PHP フレームワークのほとんどは、この機能を提供しています。基本的に、コード内でデータベース スキーマを記述します。Laravel では、以下を実行します:artisan migrateまたはスキーマをデータベースにプッシュする何か。

データベースが 1 つと Web サーバーが 1 つしかない場合、更新されるまで一般ユーザーがそれらにアクセスするのを止めたいと思うかもしれません。これは主にデータベースのためであり、数秒しか持続しませんが、移行中のエラーを防ぐことができます。シンプルな git post フックでうまくいきます。これについては、オンラインでたくさんの情報があります。

于 2013-01-24T02:58:56.740 に答える
2

データベースアップグレードスクリプトを作成します。できればツールを使用して生成します。

まだ行っていない場合は、バージョン1.0のリリースパッケージを作成します。バージョン1.1のアップグレードパッケージとデプロイメントスクリプトをビルドします。これにより、本番バージョンが1.0から1.1にパッチされます。

既存のデプロイメントを更新する方法のインスピレーションについては、Wordpressのアップグレード方法をご覧ください。

  1. アップグレードパッケージをダウンロードして、一時ディレクトリに解凍します
  2. ファイルが解凍されていることを確認してください!
  3. 「メンテナンスのためにダウン」メッセージを表示します
  4. 新しいファイルをコピーします。これはストレートコピー/交換です。削除しないでください。
  5. データベースがまだ最新でない場合は、データベースをアップグレードします
  6. 解凍したファイルを一時ディレクトリから削除します
  7. 「メンテナンスのためダウン」メッセージを削除します
  8. 古いファイルを削除します。非推奨および未使用のファイルのリストを調べて、それらを削除します。

1.0リリースパッケージを使用してステージング環境で本番マシンを再作成し、満足するまでアップグレードパッケージの展開をテストしてから、本番環境に移行します。

本番のバックアップ、本番のアップグレード。

于 2013-01-30T21:30:25.293 に答える
0

SharePoint では、フロントエンドが古いデータベースと新しいデータベースをサポートしていると聞きました。次に、最初にすべてのフロントエンド コードを更新し、古いデータベースを使用します。すべてのユーザーが新しいフロントエンド コードを使用したら、データベースを更新します。アップグレードが完了したら、古いデータベースのサポートを削除し、次のバージョンで同じトリックをもう一度行うことができます。

このようにして、負荷分散されたフロントエンドでダウンタイムを最小限に抑えます。

多分彼らはそれを実際よりも簡単に聞こえるようにしましたが、私はその原則が好きです.

于 2013-01-30T11:11:00.153 に答える