Трудности установки на виртуальную машину с CPanel и Apache

Всем привет!

Это мой первый пост.

Я новый пользователь Discourse, перешедший с phpBB.
Две недели назад я установил Discourse в контейнере Docker с использованием Nginx, так как Apache по умолчанию использует порты 80 и 443. Я внимательно следовал инструкциям из руководств по установке и конфигурации Nginx для работы с несколькими сайтами.

**Мне удалось запустить и использовать форум в течение недели, периодически заходя в систему, чтобы ознакомиться с платформой. Когда я попросил одного из пользователей зарегистрироваться и протестировать форум, на следующий день он упал. В браузере появилось сообщение: «Программное обеспечение, обеспечивающее работу этого форума, столкнулось с неожиданной проблемой». Я не смог это исправить, поэтому полностью переустановил форум с нуля, а затем восстановил темы из последней доступной резервной копии. Это было в прошлый четверг. После всех этих действий форум снова заработал. Сейчас он снова недоступен из-за ошибки 502 Bad Gateway от Nginx. Я сразу же попытался запустить rebuild, но он снова упал с ошибкой:

Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 580 exit 1>.

Это же происходило снова и снова на прошлой неделе, что привело меня к полной переустановке всего с нуля. Форум практически неактивен, так как я ещё не сделал его публичным. Мне страшно думать, что если он продолжает падать без активности, что произойдёт при работе с большей группой пользователей? Выполните следующие команды: ./launcher enter app

**cd /var/www/discourse**
**su discourse -c 'bundle exec rake db:migrate'**

**И в ответе я вижу следующее, что привлекло моё внимание:

connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: the database system is starting up**

Я попытался вручную перезапустить PostgreSQL и снова запустить rebuild, но процесс снова был прерван с сообщением об ошибке:

**FAILED**
**--------------------**
**Pups::ExecError: if [ -f /root/install_postgres ]; then**
**/root/install_postgres && rm -f /root/install_postgres**
**elif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then**
**socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container ; exit 1**
**fi**
** failed with return #<Process::Status: pid 18 exit 1>**
**Location of failure: /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'**
**exec failed with the params {"tag"=>"db", "cmd"=>"if [ -f /root/install_postgres ]; then\n /root/install_postgres && rm -f /root/install_postgres\nelif [ -e /shared/postgres_run/.s.PGSQL.5432 ]; then\n socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres already running stop container exit ; 1\nfi\n"}**
**bootstrap failed with exit code 1**

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

Discourse работает на сервере с 4 ядрами, 6 ГБ ОЗУ и 180 ГБ дискового пространства. В данный момент я запускаю только эту установку Discourse, поэтому, насколько я понимаю, я не ограничен аппаратными ресурсами.

Добро пожаловать, @Gustavo_Rip! Приносим извинения за возникшие у вас трудности.

Вы выполняли стандартную установку? При стандартной установке вам не нужны ни Nginx, ни Apache (оба по умолчанию используют порты 80 и 443). Если у вас установлен какой-либо из них, его следует удалить перед началом работы.

Вам нужна поддержка нескольких сайтов? Даже если да, мы рекомендуем сначала выполнить стандартную установку, а затем следовать этой инструкции: Настройка конфигурации для нескольких сайтов с Let’s Encrypt и без обратного прокси. Вчера я помогал кому-то с этим, и, похоже, если использовать правильные имена хостов и не включать оранжевое облако Cloudflare, всё работает отлично.

Спасибо, pfaffmann!!

К счастью, я не из тех, кто легко сдается, хотя эти последующие проблемы меня беспокоят, особенно потому, что я не на 100% знаком с этой платформой.

По умолчанию на моем CloudServer установлен Apache, и его удаление вызывает проблемы с CPanel и другими функциями. Я пробовал удалять его во время первой установки, так как читал, что nginx значительно лучше и быстрее, но столкнулся с упомянутыми проблемами. Поэтому я переустановил ОС на сервере и начал заново, следуя этой рекомендации:

Дело не в том, что у меня несколько сайтов, по крайней мере пока нет, так как мой CloudServer позволяет создавать до 5 аккаунтов.

Что касается стандартной установки, я выполнил все шаги для установки Docker, Discourse, Certbot и загрузки сертификатов Let’s Encrypt, но при запуске discourse-setup мне пришлось выполнить ручную конфигурацию, следуя ссылке выше, и вручную настроить файл app.yml для выполнения пересборки.

Вам действительно не нужен CPanel. Он ничего не добавляет, но значительно усложняет установку Discourse. А если он у вас есть, вы не сможете следовать инструкциям для NGinx, так как Apache уже мешает.

Если вы можете удалить Apache и CPanel, сделайте это. Если нет, я рекомендую выбрать другой хостинг-провайдер.

На самом деле, то, что у вас есть, может вообще не работать. Можете ли вы выполнить

 docker run hello-world

Какой хостинг-провайдер вы рекомендуете? Или какой наиболее часто используется для установки Discourse?

Да! Вот это сообщение:

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

Любой, который не устанавливает CPanel. Есть несколько тем с рекомендациями. Digital Ocean — простой вариант.

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

Другой вариант — оставить CPanel и попытаться настроить ваш существующий Apache как обратный прокси. Но в этом случае вам придётся разбираться самостоятельно, так как слишком много специфичных для установки проблем, в которые можно угодить, и люди не смогут здесь сильно помочь.

Здесь много предложений:

Спасибо @pfaffman за ваше время и ответы!!

Я не думаю, что с высокой вероятностью откажусь от Apache и CPanel. Возможно, мой провайдер облачного сервера сможет изменить порты Apache, чтобы они не совпадали с портами Discourse, что позволит убрать nginx, или настроить CPanel для Ferozo или другого сервиса. Не знаю точно, но я спрошу.

С наилучшими пожеланиями!