ステージングサーバーをセットアップする際に役立ついくつかのヒントがあります。
ステージングサーバーとは?
ステージングサーバーは、基本的に本番サイトのクローンです。サーバー上に存在し、機能も同一です。通常のDiscourseサイトと同様に、Dockerコンテナ内で実行されます。
これは、リスクの高いものを試したり、ユーザーから簡単に隠せないものを試したりするための場所を提供します。Discourse Advertising Plugin (Ads) を使用して広告を試したり、フォーラムのインポートやマージのような何か面白いことをしたい場合に非常に役立ちます。
これは、開発者が安全にコードをいじることができるように、通常は簡単にアクセスできる(そしてサンドボックス化された)場所で実行される開発サーバーとは対照的です。
何が必要ですか?
-
標準的なセルフホスト型インストールに必要なすべて
-
S3バックアップがセットアップされている場合、作業が大幅に楽になります
- そうでない場合は、SSH経由でサーバーとの間で大きなファイルを移動する方法が必要になります
手順
サーバーを希望通りにセットアップする
通常はDigital OceanでホストされているUbuntu仮想サーバーで行いますが、使い慣れたもので構いません。
Discourseをインストールする
このガイド(またはdashboard.literatecomputing.com)から。メール認証は不要なので、「junk」メール認証情報を使用することをお勧めします(メールは機能する必要も、機能させたいわけでもありません)。
discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
インストールが機能していることを確認する:
管理者アカウントを設定する(必要な場合)
コマンドラインから管理者アカウントを設定します。これにより、メール経由での認証が不要になります。
./launcher enter app
rake admin:create
これは、コマンドラインからバックアップを復元できるため、インストールのテストを除いて厳密には必要ありません。
app.ymlを編集していくつかの調整を加える
-
元のapp.ymlのコピーを作成することをお勧めします(問題が発生した場合に元に戻せるように、私はそれを
app.vanilla.ymlと呼んでいます)。 -
envセクションの下部にこれらの行を追加します:## ステージングサーバー固有の設定 DISCOURSE_AUTOMATIC_BACKUPS_ENABLED: false DISCOURSE_LOGIN_REQUIRED: true DISCOURSE_DISABLE_EMAILS: 'yes' DISCOURSE_S3_DISABLE_CLEANUP: true DISCOURSE_ALLOW_RESTORE: true -
S3(または類似のもの)バックアップが設定されている場合は、これらも追加します(メインサイトの設定を使用)。
## S3設定 DISCOURSE_S3_ACCESS_KEY_ID: 'your_key' DISCOURSE_S3_SECRET_ACCESS_KEY: 'your_secret' DISCOURSE_BACKUP_LOCATION: 's3' DISCOURSE_S3_BACKUP_BUCKET: 'your_backups_location' DISCOURSE_S3_REGION: 'your_s3_region' DISCOURSE_S3_DISABLE_CLEANUP: trueS3アップロードも行っている場合は:
DISCOURSE_ENABLE_S3_UPLOADS: true DISCOURSE_S3_UPLOAD_BUCKET: 'your_uploads_location' -
必要であれば、本番サイトと同じプラグインを追加することもできます。
-
再構築を実行します。
./launcher rebuild app
ステージングサーバーの管理
これで、S3バックアップに接続されている(ただし上書きしない)、復元が簡単で、いかなる状況でも誰にもメールを送信できないステージングサーバーができました。完璧です!
ステージングサーバーに新しいバックアップを復元して、自由に操作できます。気に入らない場合は、再度復元するだけです。
オフ/オンの切り替え
ステージングサーバーを長期間「オン」のままにしておくと、Googleにインデックスされるリスクがあり、ユーザーが誤ってログインしてしまう可能性があります。それらは本番サイトのクローンであるため、これは非常に可能です。
これら2つの問題を軽減する簡単な方法は、Discourseをオフにすることです。
./launcher stop app
そして、使用できるようにオンに戻すには:
./launcher restart app
アップデート
プラグインやコードの観点から整合性を保つためには、ステージングサーバーと本番サーバーの両方を同時に更新/再構築する必要があります。app.ymlの変更も同様です。
S3を使用しない場合は、サーバー間でバックアップを手動で移動する必要があります。そして、それらは大きいです!
テストサーバーへのシード
ステージングサーバーが必要な場合は、Restore を介して実際のフォーラムから実際のデータでそれを populate する必要があります。問題の原因が特定のデータである場合があり、他のデータセットでフォーラムをテストすると、誤った安心感を得られる可能性があります。
しかし、Discourseがどのようなものかを確認するためのテストサーバーが必要な場合は、偽のデータで確認することをお勧めします。その場合は、次のようにします。
./launcher enter app
ALLOW_DEV_POPULATE=1 bundle install
ALLOW_DEV_POPULATE=1 rake dev:populate
これにより、フォーラムに偽のデータがシードされ、希望するテーマやプラグインでどのように見えるかを確認できます。まだフォーラムを開始していない場合は、これがどのように見えるかのアイデアを得ることができます。
2要素認証の管理
メインサイトのアカウントのユーザー名/パスワードはステージングサイトでも問題なく機能するはずですが、2FAの場合はそれほど簡単ではありません。問題が発生した場合は、2FAをオフにします。
./launcher enter app
rake users:disable_2fa[<USERNAME>]


