Возможность установки и удаления плагинов напрямую из административного интерфейса

Было бы здорово иметь такую возможность…

Для крупных форумов с высоким трафиком критично, чтобы форум не падал, так как мне приходится выполнять

./launcher rebuild app

Каждый раз при установке или удалении плагина форум ненадолго становится недоступным, и пользователи это не любят.

Было бы отлично иметь возможность устанавливать/удалять плагины и перезапускать/пересобирать Discourse напрямую через административный интерфейс.

Я не считаю это возможным из-за того, как плагины интегрируются в ресурсы приложения — этот процесс выполняется на этапе сборки, особенно учитывая, что некоторые элементы плагинов влияют на бэкенд.

Вот несколько способов смягчить ситуацию:

  1. По возможности используйте компоненты темы для кастомизации. Их можно заменять и обновлять онлайн.

  2. Определите набор плагинов и придерживайтесь его. Зачем так часто менять конфигурацию?

  3. Если вам нужно просто обновить плагин, воспользуйтесь инструментом онлайн-обновления.

  4. Планируйте добавление новых плагинов на момент, когда вы вынуждены выполнять пересборку из-за других фундаментальных изменений в ядре приложения.

11 лайков

Единственная реальная рекомендация, которую мы можем дать здесь, — это планировать заранее. Никакой замены этому нет.

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

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

4 лайка

При настройке с несколькими веб-контейнерами простои во время пересборки можно наверняка избежать, пересобирая и разворачивая веб-контейнеры по одному.

5 лайков

Извините, @Faizan_Zahid, но заголовок можно было бы сформулировать лучше. Возможно, вы имели в виду «плагины», а не «Discourse». Я подумал, что кто-то просит удалить Discourse с сервера :wink:

Вы хотите иметь возможность устанавливать/удалять плагины без необходимости пересборки. К сожалению, похоже, это невозможно :confused:
В таком случае вам нужно минимизировать время простоя при пересборке. Эта тема уже обсуждалась недавно: Помощь с настройкой «без простоя» (хотя обсуждение не пошло туда, куда, вероятно, следовало бы).

Нам, возможно, потребуется хорошее руководство по настройке установки с двумя веб-контейнерами и способу её использования. Это кажется наиболее эффективным решением (и, вероятно, самым сложным). У меня недостаточно знаний, чтобы составить такое руководство, хотя я бы хотел. Есть ли кто-то, кто готов это сделать?

3 лайка

Я планирую взять на себя задачу создания простых руководств для различных продвинутых сценариев использования, включая вышеупомянутые. Это уже в очереди на реализацию :slight_smile:

2 лайка

Если ваш Discourse использует Docker, вы можете воспользоваться установщиком Procourse.

Это тоже выполняет пересборку.

2 лайка

Хотя он всё ещё работает на данный момент, насколько мне известно, Procourse прекратил обслуживание клиентов. Я бы очень не рекомендовал его без чёткого плана поддержки и развития.

4 лайка

Я не знал об этом. Хотя, если структура Discourse не изменится значительно, всё должно продолжать работать. Подчеркиваю: должно. Интересно, разрешит ли автор кому-то другому взять на себя проект, если он уже ушёл.

Со временем все плагины требуют обновления. Даже незначительные изменения иногда вызывают проблемы у активно разрабатываемых плагинов для Discourse. Предсказать это невозможно, и, безусловно, на это нельзя полагаться.

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

Я работал всего с двумя клиентами, которые выразили интерес к его использованию. Как только стало ясно, что Procourse больше не существует, оба были готовы мигрировать на другую платформу.

1 лайк

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

Насколько я знаю, проблемы носят более фундаментальный характер. В текущем виде этот подход вообще не работает с мультисайтами.

Кроме того, вы не можете напрямую удалить плагины, если по ошибке установили что-то несовместимое. Для этого требуется доступ по SSH.

Я ознакомился с проблемой мультисайтовости. Можно просто добавить проверку и разрешать использование только в том случае, если это не мультисайт, развернутый с помощью Docker.

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

Даже если это будет принято в качестве официального плагина для контейнеров с одним сайтом.

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

Просто то, что должно быть в плане разработки. Иногда это не сильно отличается от использования графического интерфейса в Linux для установки по сравнению с командной строкой; однако есть примеры, где это работает хорошо.

При использовании неофициальных установок всегда существует риск сбоев. Например, была бы полезна возможность включать или отключать плагины, такие как темы или компоненты тем.

Недавно у нас возникла проблема, когда, похоже, иконки категорий сломали что-то. Даже при использовании базовой темы без дополнительных CSS-модификаций или компонентов. Потребовалось некоторое время, чтобы найти причину.

Странно то, что это работает на нашем отдельном тестовом экземпляре, который запускает последнюю бета-версию Discourse.