web-dev-qa-db-ja.com

共有ユーザーによる理論的マルチサーバーWordPressセットアップ

私が所属している組織は、いくつかの(〜5)サーバー上に存在し、ユーザーテーブルのみでユニバーサルデータベースを使用できる既存のWordPressインストールを利用できれば有益です。個々のサーバーは、残りのコンテンツにデータベースを使用します。

考えはこれです。ネットワーク管理者が他の各サーバー上のこれらのユーザーに権限を付与/編集できるすべてのユーザーデータ(約300人以上のユーザー)を持つ「メイン」サーバーを用意します。

このようにして、ユーザーがあるサーバー上の1つのWordPressインストールにログインすると、そのユーザーは別のWordPressサーバーにアクセスしても、さまざまなサーバー上のさまざまな権限でログインすることができます。

これはWordPressネットワークとサーバーの1:1の関係になります。これを可能にするためには、Cookieまたはセッションをどのように利用する必要がありますか?

これを達成するために外部のAPIログインシステムを使用する必要がありますか?それともこれはWordPressのコアファイル内で行うことができますか?

4
jmalais

それは可能かもしれません。ログインとクッキーを扱うコアAPIの多くは プラグイン可能です

たとえば、 wp_set_current_user を、内部データベースではなく外部データベースに問い合わせたものに置き換えることができます。

認証は既にauthenticateフィルタを介して行われます(wp_authenticateはこれを行う関数であり、フィルタはwp_signoutに追加されています)。

要するに、あなたがそれをフックし、あなたのことをし、そしてものを変えることができるたくさんの方法があります。ただし、ユーザー機能が存在するメインサイトを除き、ほとんどすべてのユーザーAPI(get_users、ユーザー管理領域などなし)を失うことになります。

別の方法では、〜5台のサーバー/ WPインストールすべてに、同じ外部データベースサーバーとデータベースを共有させることができます。そこから、 それぞれのwp-config.phpにカスタムユーザーテーブル を設定し、それぞれ別々のインストールで同じユーザーデータを共有します。サイトごとに異なる$table_prefixを設定する必要もあります。

WordPressがロール/キャップを保存する方法のために、機能とロールはサイトごとに異なります(それらには$table_prefixが付いています)。すべてのコアユーザーデータ、つまりユーザー名、電子メール、パスワードはサーバー間で共有されます。

もちろん、これはWPマルチサイトインストールにすぎず、マルチサイトの利便性はありません。

マルチサイト+ a ドメインマッピングプラグイン はおそらくあなたが望むものです。または自分で sunrise.php を実行してドメインマッピングプラグインをスキップすることもできます。共有データベースサーバーを使用してWPインストールを実行している複数のアプリケーションサーバーを配置することが可能です。すべてのドメインをいずれかのアプリケーションサーバーにトラフィックを送信するロードバランサーに向ければ完了です。

3
chrisguitarguy