web-dev-qa-db-fra.com

Configuration théorique de WordPress sur plusieurs serveurs avec des utilisateurs partagés

L’organisation pour laquelle je travaille bénéficierait si nous pouvions utiliser les installations WordPress existantes situées sur plusieurs serveurs (~ 5) différents et pouvoir utiliser une base de données universelle avec uniquement la table users. Les serveurs individuels utiliseraient une base de données pour le contenu restant.

L'idée est la suivante. Avoir un serveur "principal" avec toutes les données de l'utilisateur (plus de 300 utilisateurs) à qui un administrateur réseau peut donner/modifier les autorisations à ces utilisateurs sur chacun des autres serveurs.

Ainsi, lorsqu'un utilisateur se connecte à une installation WordPress sur un serveur, il peut visiter un autre serveur WordPress et rester connecté avec différentes autorisations sur les différents serveurs.

Ce serait une relation 1: 1 pour WordPress Network to Server. Comment les cookies ou les sessions doivent-ils être utilisés pour permettre cela?

Est-ce qu'un système de connexion externe à l'API doit être utilisé pour accomplir cela? Ou cela pourrait-il être fait dans les fichiers de base de WordPress?

4
jmalais

C'est peut-être possible. Une grande partie de l'API principale qui traite des connexions et des cookies est connectable .

Vous pouvez remplacer wp_set_current_user par quelque chose qui interroge votre base de données externe plutôt que la base interne, par exemple.

L'authentification est déjà effectuée via un filtre authenticate (wp_authenticate est la fonction qui effectue cette opération et le filtre est ajouté dans wp_signout).

En bref, il y a de nombreuses façons de l’accrocher, de faire des choses et de changer des choses. Cependant, vous perdriez presque toutes les API utilisateur (pas de get_users, pas de zone d’administrateur d’utilisateur, etc.), à l’exception de votre site principal, où réside la fonctionnalité d’utilisateur.

Une autre approche serait de faire en sorte que tous les ~ 5 serveurs/installations WP partagent le même serveur de base de données externe et la même base de données. À partir de là, définissez une table d'utilisateurs personnalisée dans chaque wp-config.php, et chaque installation distincte avec le même partage de données d'utilisateur. Vous devrez également définir un $table_prefix différent pour chaque site.

Les capacités et les rôles seront différents sur chaque site, en raison de la manière dont WordPress stocke les rôles/majuscules (ils sont préfixés par $table_prefix). Toutes les données utilisateur essentielles, à savoir les noms d'utilisateur, les adresses électroniques et les mots de passe, seront partagées entre les serveurs.

Bien sûr, , il ne s'agit que d'une WP installation multisite sans la commodité de multisite.

Multisite + un plug-in de cartographie de domaine est probablement ce que vous voulez. Vous pouvez également jouer votre propre rôle sunrise.php et ignorer le plug-in de mappage de domaine. Il devrait être possible de placer plusieurs serveurs d'applications exécutant une installation WP avec un serveur de base de données partagé. Pointez tous les domaines sur un équilibreur de charge qui envoie le trafic à l'un des serveurs d'applications et vous avez terminé.

3
chrisguitarguy