web-dev-qa-db-ja.com

1つのデータベースに接続してデータを共有するための3つのサイトの設定

どのようにして3つの異なるWordpressインストールを3つの異なるサーバにセットアップするのですか。それらはすべて1つのデータベースに接続し、同じデータを共有しますか?

3つの異なるサーバーをセットアップしたいのですが。開発、QA /ステージング、そしてプロダクションのためのもの。各サイトは他のサイトから分離されている必要があり、データベースから同じデータを表示するために使用されています。

  • 開発者は開発サーバーで作業することになります。つまり、このインストールは常に変更される状態になります。
  • QA担当者が開発チームから追加された機能をテストするため、QA /ステージングサーバーはほとんど変化のない状態になります。
  • 生産はQA/Stagingサーバーを通して吟味されたテスト済みの作業コードから定期的に更新されるだけです。

「アップロード」リソースを共有することは問題ではないことをご了承ください。AWSS3サービスを使用してすべてのリソース(画像など)を保存する予定です。 CDNは、上記のすべてのリソースを提供します。

1
Corey

私の提案を詳しく説明するために、これはいくつかの実用的なコードです。

// hook in before theme is loaded
add_action('plugins_loaded','custom_maybe_switch_themes');
function custom_maybe_switch_themes() {
    if (!is_user_logged_in()) {return;}
    if (!current_user_can('manage_options')) {return;}

    // check for query request eg. ?usertheme=theme-slug
    if (isset($_REQUEST['usertheme'])) {
        // sanitize request
        $usertheme = strtolower(sanitize_title($_REQUEST['usertheme']));
        global $current_user; $current_user = wp_get_current_user();

        // maybe reset user meta stylesheet
        if ($usertheme == 'reset') {delete_user_meta($current_user->ID,'stylesheet'); return;}

        // validate theme
        $theme = wp_get_theme($usertheme);
        if ($theme->exists()) {
             delete_user_meta($current_user->ID,'stylesheet');
             add_user_meta($current_user->ID,'stylesheet',$usertheme);
        }
    }
}

// add filter to stylesheet option
add_filter('pre_option_stylesheet', 'get_user_stylesheet');
function get_user_stylesheet($stylesheet) {
    if (!is_user_logged_in()) {return $stylesheet;}
    if (!current_user_can('manage_options')) {return $stylesheet;}

    // check user meta stylesheet
    global $current_user; $current_user = wp_get_current_user();
    $userstylesheet = get_user_meta($current_user->ID,'stylesheet',true);
    // if we have a value use it instead
    if ($userstylesheet) {return $userstylesheet;}
    return $stylesheet;
}

ユーザーベースでテーマに切り替えるには、?usertheme=theme-slugを使用します。

...そしてリセットするには?usertheme=resetを使うだけ

すべてのテーマコードはが使用されるスタイルシートに依存してロードされるので、Live、Staging、DevelopmentのChild Themesディレクトリを(同じ親テンプレートで)設定して切り替えることができます。開発者としてのテーマは非常に簡単で、同じドメインですぐに結果が表示されます。 :-)

私が考えることができる唯一の警告は主要なプラグインアップデートをテストすることです、あなたはまだその目的のための開発環境を必要とし、そしておそらくそれらを現在のデータベース内容でテストするためにデータベースを同期させるでしょう。これは、オプションデータベースのテーブル構造を変更するかどうかがわからないからです(実際にはこのようにして壊れる可能性があるため、戻ることはありません)。

ログアウトしたユーザーのサイト出力をテストするには、さらに何かが必要ですが、これは一時的な負荷の場合は別のクエリ文字列を使用するか、ユーザーの代わりにcookieを使用します。同様の永続的な結果を得るにはmeta。

いずれにしても、開発中のテストと同じドメインでのステージングのためにコードスニペットをファイルに編成できるので、両者の間で新しい変更をプッシュすることが非常に簡単になり、データベースの同期について常に心配する必要がなくなります。実行可能なアプローチ)は、これを私が考えることをするのに非常に便利な方法にします。

0
majick

開発者用およびQA用のインストールにサブドメインを使用できます。 qa.domain.comやdev.domain.comなど。サブドメインが作成されると、通常サブディレクトリも作成されます。各サブドメインディレクトリに追加のワードプレスをインストールできます。それから2つの追加データベースを作成します。本番データベースをバックアップし、それを2つの新しいデータベースにロードします。これらの新しいデータベース用にconfig.phpファイルを設定すると、2つの新しいサーバーができます。データベースを更新する必要があります。 _optionsテーブル内の少なくとも2つの場所homeとsite_url。私は通常.sqlファイルをテキストエディタで開き、domain.comを探してsub.domain.comに置き換えます。

0
stoi2m1