Могу ли я сменить провайдера сайта (с staging на prod)?

У меня есть staging-копия сайта на WordPress, созданная несколько месяцев назад. Я подумал, что попробую, как работает SSO с форумом (регистрация закрыта, проект ещё не запущен), а позже подключу его к продакшн-сайту, к которому к тому времени добавится больше пользователей. Не запутается ли Discourse? Я попробую протестировать работу с несколькими пользователями из staging, но что произойдёт с ними, когда подключение будет переключено на другой сайт? Их ID пользователя и email в WordPress останутся прежними.

Если ID пользователя WP и адрес электронной почты совпадают на вашем продакшн- и тестовом (staging) сайтах, вы можете переключиться на использование продакшн-сайта без внесения каких-либо изменений на стороне Discourse.

Однако рекомендуется дважды проверить, совпадают ли ID пользователей. Мне кажется, я помню, что для сайтов WP Engine на staging и production нет гарантии совпадения ID пользователей — они используют полностью отдельные базы данных. Убедитесь, что в вашем случае это не так для продакшн- и тестового сайтов.

Если вы не уверены, что ID пользователей совпадут между продакшн- и тестовым сайтами, и параметр require_activation в полезной нагрузке SSO не установлен в true, вы можете безопасно удалить все существующие записи SingleSignOnRecord из базы данных Discourse перед переключением на продакшн-сайт. При первом входе существующих пользователей в Discourse через WordPress система найдет их по адресу электронной почты и создаст новую запись SingleSignOnRecord.

Существующие записи SingleSignOnRecord можно удалить из консоли Rails с помощью команды:

SingleSignOnRecord.destroy_all

Если параметр require_activation в полезной нагрузке SSO установлен в true, вы все равно можете удалить записи SSO на стороне Discourse. Прежде чем существующие пользователи смогут войти в Discourse с вашего продакшн-сайта, вам нужно будет пометить их адреса электронной почты как подтвержденные в WordPress. Подробная информация о том, как это сделать со страниц профиля WordPress, доступна здесь: Validate Email Addresses with the WP Discourse plugin.

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

Это типичная ситуация: кто-то создаёт сайт на одном из хостингов WordPress (например, WP Engine), тестирует его на стандартном стейджинг-сайте, а затем переключается на продакшн. Когда я работал в поддержке Discourse, я много раз отвечал на этот вопрос. Постоянный отдельный стейджинг-сайт для Discourse обычно не был возможен (или действительно не требовался).

Да, вы правы, это относительно распространённая ситуация.

Тем не менее, если ваш WordPress находится в продакшене, как, судя по всему, и в данном случае (Firsh, пожалуйста, поправьте меня, если я ошибаюсь), то, на мой взгляд, потенциальные риски и затраты от смешивания staging и production-окружений перевешивают любую экономию времени и средств, которую можно было бы получить, запустив отдельный экземпляр Discourse. Это при условии, что ваше staging-окружение является копией production (что часто бывает).

Если только в организации нет ограничений на запуск новых экземпляров (в таком случае у вас, вероятно, и так должно быть отдельное staging-окружение), то запуск отдельного Discourse на DigitalOcean, Vultr и т. д. обходится относительно дёшево и просто, что позволяет избежать любых проблем, которые могут возникнуть из-за взаимного проникновения данных между Staging и Production. Скорее всего, вы сэкономите время (и деньги, которые являются временем). После завершения работы вы сможете просто отключить его.