Теоретическая Многосерверная настройка WordPress с общими пользователями


Организация, в которой я работаю, выиграла бы, если бы мы могли использовать существующие установки WordPress, расположенные на нескольких (~5) разных серверах, и иметь возможность использовать универсальную базу данных только с таблицей пользователей. Отдельные серверы будут использовать базу данных для оставшегося содержимого.

Идея заключается в следующем. Иметь "главный" сервер со всеми данными пользователя (более 300 пользователей), которым администратор сети может предоставить/редактировать разрешения этим пользователям на каждом из другие серверы.

Таким образом, когда пользователь входит в одну установку WordPress на одном сервере, пользователь может посетить другой сервер WordPress и все равно войти в систему с различными разрешениями на разных серверах.

Это будет соотношение 1:1 для сети WordPress и сервера. Как должны использоваться файлы cookie или сеансы, чтобы разрешить это?

Потребуется ли для этого использовать внешнюю систему входа в API? Или это может быть сделано в рамках Основные файлы WordPress?

Author: Jeremy, 2012-11-07

1 answers

Это может быть возможно. Многие основные API, которые работают с логинами и файлами cookie, являются подключаемыми.

Вы могли бы заменить wp_set_current_user например, с помощью чего-то, что запрашивало вашу внешнюю базу данных, а не внутреннюю.

Аутентификация уже выполняется с помощью фильтра authenticate (wp_authenticate - это функция, которая делает это, и фильтр добавляется в wp_signout).

Короче говоря, есть множество способов зацепить его, сделать свое дело и что-то изменить. Вы однако вы потеряете почти весь пользовательский API (без get_users, без области администрирования пользователя и т. Д.), За исключением вашего основного сайта, на котором находится функциональность пользователя.

Альтернативный подход состоял бы в том, чтобы все ~5 серверов/установок WP использовали один и тот же внешний сервер базы данных и базу данных. Оттуда установите пользовательскую таблицу пользователей в каждой wp-config.php, и каждая отдельная установка будет использовать одни и те же пользовательские данные. Вам также нужно будет установить разные $table_prefix для каждого сайт.

Возможности и роли будут разными на каждом сайте из-за того, как WordPress хранит роли/шапки (они имеют префикс $table_prefix). Все основные пользовательские данные, а именно имена пользователей, электронные письма и пароли, будут совместно использоваться серверами.

Конечно, это просто многоузловая установка WP без удобства многоузловой установки.

Мультисайт + плагин отображения доменов , вероятно, это то, что вам нужно. Или вы могли бы сыграть свою собственную роль sunrise.php и пропустите плагин сопоставления доменов. Должно быть возможно разместить несколько серверов приложений, на которых выполняется установка WP, с общим сервером базы данных. Направьте все домены на балансировщик нагрузки, который отправляет трафик на один из серверов приложений, и все готово.

 3
Author: chrisguitarguy, 2012-11-07 19:40:13