При настройке Discourse у меня возникает следующая ошибка:
WARNING: Port 443 of computer does not appear to be accessible using hostname
на собственном сервере под управлением Debian.
Я использую отдельный домен для Discourse, разместил простую HTML-страницу с индексом — она работает.
Однако на этот же сервер указывают и другие домены, но там размещены только базовые HTML-страницы.
Я читал в похожих обсуждениях, что Discourse не может работать на том же сервере, что и WordPress. Но существуют ли другие ограничения?
Discourse может и будет отлично работать с WordPress. Но сможет ли он это сделать на вашем собственном компьютере — это совершенно другая история. Я поднимаю этот вопрос лишь потому, что кто-то может найти эту тему через поиск и может сложить впечатление, что использование WordPress (или почти любого другого CMS/приложения) на том же сервере с Discourse, где сервер == VPS, — это миссия невыполнима. Но это не так. На самом деле это довольно просто.
Я исхожу из того, что у вас есть сервер, который используется несколькими доменами или поддоменами, все указывающие на один и тот же сервер.
В основном вам нужно запустить основной прокси-сервер, который будет прослушивать порты 80 и 443, если вы используете TLS/SSL.
Затем основной прокси-сервер будет маршрутизировать трафик в зависимости от хоста/домена, то есть discourse.example.com => на Discourse, blog.example.com => на WordPress.
Я думаю, что у вас есть несколько вариантов развертывания, поскольку обычно WordPress поставляется со своим собственным прокси-сервером, как и Discourse. Ваши варианты могут быть следующими:
Использовать прокси-сервер Nginx от Discourse в качестве основного, и он будет проксировать запросы к WordPress.
Использовать WordPress в качестве основного прокси-сервера, и он будет проксировать запросы к Discourse.
Использовать свой собственный основной прокси-сервер, который будет проксировать запросы к обоим.
В любом случае, что бы вы ни выбрали, я думаю, что TLS/SSL обычно будет обрабатываться основным прокси-сервером.
Я использовал Discourse в первых двух сценариях выше. Когда я использовал другой прокси-сервер для обработки входящего трафика (первый вариант), мне пришлось изменить порты и отключить TLS, вместо этого позволив другому прокси-серверу обрабатывать его. А во втором сценарии я изменил файл конфигурации Nginx внутри контейнера Discourse, добавил декларацию для другого сервера и затем сгенерировал для него сертификат с помощью Certbot.
Эм… нет. Обычно прокси-серверов нет. Просто обычный веб-сервер, например Apache2 или Nginx: когда он обслуживает виртуальные хосты и завершает SSL, это не прокси-сервер. Конечно, он может действовать как таковой, но это не типичное решение, и это не имеет никакого отношения к WordPress.
WordPress не поставляется ни с каким сервером.
Установленный WordPress может продаваться вместе с веб-сервером, PHP, SQL и т. д., но это совершенно другое дело, чем «поставляется с».
А вот Discourse поставляется.
И да, использование прокси или чего-либо ещё перед Discourse и обслуживание WordPress на том же сервере — это вполне тривиальная задача.
Я в основном имел в виду случай, когда стек WordPress включает либо Nginx, либо Apache. Хотя сам по себе он их не содержит, в эпоху контейнеризации, если вы посмотрите на официальный Docker-образ WordPress (который имеет более 1 миллиарда загрузок), то увидите, что он поставляется с Apache.
Извините, возможно, я не совсем точно использовал термин «прокси», но суть в следующем: в большинстве случаев, когда вы хотите запустить WordPress вместе с Discourse, у вас в итоге окажется два веб-сервера (или прокси-сервера).
Извините за поздний ответ, я какое-то время был вне сети и не заходил на форумы. Чувствую себя отлично, но перед отключением я пытался решить проблемы с электронной почтой, однако при доступе к форуму всё ещё получаю ошибку 502.
Извините, я неправильно объяснил: мне не нужен WordPress на том же сервере, я просто привёл его в качестве примера того, что нельзя делать.
На самом деле у меня есть всего 4 домена, указывающих на простые веб-сайты на этом сервере.
Утилита Discourse Doctor, похоже, не показывает ошибок,
но при доступе к домену форума я всё ещё получаю ошибку 502.
Мне нужно установить HAProxy, как они советуют здесь? Спасибо.
Идея та же: независимо от того, используете ли вы WordPress или любую другую платформу.
Когда несколько веб-сайтов указывают на один сервер, весь веб-трафик (HTTP/HTTPS) использует порты 80/443. Обычно один сервер слушает эти порты и перенаправляет трафик в зависимости от имени хоста или сайта.
Что это означает в контексте Discourse?
Вы можете либо позволить серверу Nginx в составе Discourse обрабатывать перенаправление трафика (в этом случае Discourse будет слушать порты 80/443, см. эту тему: Run other websites on the same machine as Discourse), либо настроить Discourse на прослушивание другого порта, например 8080, а затем попросить ваш сервер перенаправлять запросы, поступающие с сайта форума, на этот порт. Примечание: в этом случае лучше отключить TLS/SSL в настройках Discourse и доверить обработку шифрования вашему основному серверу.