Привет! Я хотел бы узнать, можно ли разместить более одного экземпляра Discourse на одном VPS. Так как я новичок, не могли бы вы дать чёткие пошаговые инструкции? Спасибо.
Да, вы можете!
Однако это продвинутая тема, и вам необходимо знать следующие базовые концепции:
- Что такое обратный прокси?
- Какой обратный прокси мне использовать?
- Как настроить виртуальный хост на обратном прокси?
- Как настроить виртуальный хост в качестве обратного прокси для моего веб-приложения?
- Как настроить веб-приложение для работы с обратным прокси?
- Как настроить SSL при использовании обратного прокси?
@Aiden12114, знакомы ли вы с этими концепциями?
Если да, то вы точно готовы к работе!
К сожалению, я понятия не имею, что это всё означает ![]()
У вас есть два варианта:
- Мультисайт — более сложный: Multisite configuration with Docker
- Несколько контейнеров — чуть сложнее (требует обратного прокси и т. д., как упоминалось выше), дороже.
Следуйте инструкциям по настройке Discourse без использования скрипта./discourse-setup(cp samples/standalone.yml containers/app2.yml) и переименуйтеvolumesв что-то отличное отstandalone.
Я считаю важным поделиться несколькими техническими фактами с теми, кто заинтересован в этой теме или принимает решение по ней:
- Один контейнер Discourse с несколькими «сайтами» в одном контейнере или
- Отдельные контейнеры для каждого «сайта» Discourse.
Если вы используете подход «один контейнер, несколько сайтов» и у вас запущено 5 сайтов Discourse (или даже 10), то при пересборке вашего контейнера или возникновении любой проблемы с контейнером все 5 (или 10) сайтов Discourse одновременно перестанут работать (станут недоступны). Это происходит потому, что один контейнер поддерживает все «сайты».
Если вы используете подход «несколько контейнеров» и у вас запущено 5 сайтов Discourse (или 10), то при пересборке контейнера для одного из ваших сайтов или возникновении любой проблемы с контейнером сайта перестанет работать только 1 сайт Discourse (станет недоступен). Это происходит потому, что один контейнер поддерживает один «сайт» (или два, если вы запускаете отдельные контейнеры для данных и приложения для каждого сайта, как это делаем мы).
Кроме того, благодаря тому, как Docker использует наложения и разделяет все неизменяемые слои для каждого контейнера (при использовании рекомендуемого драйвера хранения Docker — overlay2) между контейнерами, уникальным для каждого контейнера остаётся лишь тонкий слой для записи (для файлов журналов, кэша и т. д.), поэтому использование нескольких контейнеров не требует значительного дополнительного дискового пространства благодаря принципу работы OverlayFS.
Подробнее об этом интересном вопросе о том, как работает драйвер наложений Docker (и как он разделяет библиотеки между контейнерами), можно узнать здесь:
Очевидно, что выбор подхода остаётся за каждым системным администратором. На основе нашего анализа мы всегда выбираем подход с несколькими контейнерами по причинам, изложенным выше (а также по некоторым другим, которые ещё не обсуждались).
Надеюсь, это поможет.
