Какой гайд?
Порт 2045 напоминает мне о чём-то, но я не могу точно вспомнить что именно ![]()
После нескольких неудачных установок несколько месяцев назад я изменил значение на 2045, но это не имеет значения, так как оно закомментировано символом #. Проблема не в этом порте.
Я следовал этой инструкции: discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub
Ну… Он был изменён, бывает, что пальцы скользят ![]()
@Benjamin_D в моём файле nginx нет порта 2045, вы можете проверить это, прокрутив текст выше. Строка в app.yml закомментирована символом #, поэтому я не понимаю, почему вы указываете на неё. Проблема точно не в этом, иначе сообщение об ошибке указало бы на неё.
Я могу удалить эту строку из файла app.yml, если хотите, но результат будет таким же, как и раньше.
Кажется, когда я устанавливал это в первый раз, контейнер сообщал, что порты 80 или 443 уже заняты, поэтому я где-то прочитал, что можно просто добавить случайный порт. Но опять же, эта строка закомментирована символом #, и она не должна учитываться.
Совсем нет, мы просто пытаемся воспроизвести ваши шаги и сравнить нашу настройку с вашей
Эта ошибка, безусловно, связана со сбоем при обновлении PostgreSQL.
Обратитесь к теме на meta, чтобы решить проблему.
Я проверю тему обновления PostgreSQL. Если я столкнусь с другой ошибкой, я вернусь с сообщением.
Итак, после обновления PostgreSQL с версии 10 до 12 у меня всё ещё возникают проблемы после выполнения команды: ./launcher rebuild app
sudo ./launcher rebuild app
fatal: not a git repository (or any of the parent directories): .git
Остановка старого контейнера
+ /usr/bin/docker stop -t 60 app
app
cd /pups && git pull && /pups/bin/pups --stdin
Уже актуально.
I, [2020-07-13T13:34:21.635079 #1] INFO -- : Загрузка --stdin
I, [2020-07-13T13:34:21.643465 #1] INFO -- : > locale-gen $LANG && update-locale
I, [2020-07-13T13:34:21.713536 #1] INFO -- : Генерация локалей (это может занять некоторое время)...
Генерация завершена.
I, [2020-07-13T13:34:21.713917 #1] INFO -- : > mkdir -p /shared/postgres_run
I, [2020-07-13T13:34:21.720693 #1] INFO -- :
I, [2020-07-13T13:34:21.721042 #1] INFO -- : > chown postgres:postgres /shared/postgres_run
I, [2020-07-13T13:34:21.724919 #1] INFO -- :
I, [2020-07-13T13:34:21.725387 #1] INFO -- : > chmod 775 /shared/postgres_run
I, [2020-07-13T13:34:21.728768 #1] INFO -- :
I, [2020-07-13T13:34:21.729117 #1] INFO -- : > rm -fr /var/run/postgresql
I, [2020-07-13T13:34:21.732712 #1] INFO -- :
I, [2020-07-13T13:34:21.733008 #1] INFO -- : > ln -s /shared/postgres_run /var/run/postgresql
I, [2020-07-13T13:34:21.735981 #1] INFO -- :
I, [2020-07-13T13:34:21.736200 #1] INFO -- : > socat /dev/null UNIX-CONNECT:/shared/postgres_run/.s.PGSQL.5432 || exit 0 && echo postgres уже запущен, остановите контейнер ; exit 1
2020/07/13 13:34:21 socat[27] E connect(6, AF=1 "/shared/postgres_run/.s.PGSQL.5432", 36): Нет такого файла или каталога
I, [2020-07-13T13:34:21.751266 #1] INFO -- :
I, [2020-07-13T13:34:21.752242 #1] INFO -- : > rm -fr /shared/postgres_run/.s*
I, [2020-07-13T13:34:21.757300 #1] INFO -- :
I, [2020-07-13T13:34:21.757817 #1] INFO -- : > rm -fr /shared/postgres_run/*.pid
I, [2020-07-13T13:34:21.761287 #1] INFO -- :
I, [2020-07-13T13:34:21.761706 #1] INFO -- : > mkdir -p /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.765114 #1] INFO -- :
I, [2020-07-13T13:34:21.765725 #1] INFO -- : > chown postgres:postgres /shared/postgres_run/10-main.pg_stat_tmp
I, [2020-07-13T13:34:21.770573 #1] INFO -- :
I, [2020-07-13T13:34:21.781057 #1] INFO -- : Файл > /etc/service/postgres/run chmod: +x chown:
I, [2020-07-13T13:34:21.791681 #1] INFO -- : Файл > /etc/service/postgres/log/run chmod: +x chown:
I, [2020-07-13T13:34:21.800244 #1] INFO -- : Файл > /etc/runit/3.d/99-postgres chmod: +x chown:
I, [2020-07-13T13:34:21.808363 #1] INFO -- : Файл > /root/upgrade_postgres chmod: +x chown:
I, [2020-07-13T13:34:21.809170 #1] INFO -- : > chown -R root /var/lib/postgresql/10/main
chown: невозможно получить доступ к '/var/lib/postgresql/10/main': Нет такого файла или каталога
I, [2020-07-13T13:34:21.817357 #1] INFO -- :
ОШИБКА
--------------------
Pups::ExecError: chown -R root /var/lib/postgresql/10/main завершилась с ошибкой, код возврата #<Process::Status: pid 42 exit 1>
Место ошибки: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec завершился с ошибкой с параметрами {"cmd"=>["chown -R root /var/lib/postgresql/10/main", "[ ! -e /shared/postgres_data ] && install -d -m 0755 -o postgres -g postgres /shared/postgres_data && sudo -E -u postgres /usr/lib/postgresql/10/bin/initdb -D /shared/postgres_data || exit 0", "chown -R postgres:postgres /shared/postgres_data", "chown -R postgres:postgres /var/run/postgresql"]}
3e7af3d49be0616ae52ee03d6ee0867d25e5db96de40d92c7ec7abeded5d3262
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите сообщения об ошибках, их может быть несколько.
./discourse-doctor может помочь диагностировать проблему.
Не понимаю, сдаюсь… ;/
Что означает "fatal: not a git repository (or any of the parent directories): .git "??
Также получаю следующее:
sudo ./discourse-setup
Файл конфигурации containers/app.yml уже существует!
. . . перенастройка . . .
Сохранение старого файла как app.yml.2020-07-13-153931.bak
Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.
+ /usr/bin/docker stop -t 10 app
app
Обнаружено 4 ГБ памяти и 2 физических процессорных ядра
установка db_shared_buffers = 1024MB
установка UNICORN_WORKERS = 4
параметры памяти containers/app.yml обновлены.
Имя хоста для вашего Discourse? [cp2077.eu]:
Проверка доменного имени . . .
ВНИМАНИЕ: Порт 443 компьютера, по-видимому, недоступен по имени хоста: cp2077.eu.
ВНИМАНИЕ: Подключение к http://cp2077.eu (порт 80) также не удаётся.
Это означает, что cp2077.eu разрешается в какой-то IP-адрес, который не ведёт к этой машине, на которой вы устанавливаете Discourse.
Первое, что нужно сделать, — убедиться, что cp2077.eu разрешается в IP-адрес этого сервера.
Обычно это делается в том же месте, где вы покупали домен.
Если вы уверены, что IP-адрес разрешается правильно, проблема может быть в брандмауэре.
Поиск в интернете по запросу "открыть порты ВАШЕ ОБЛАЧНОЕ ОБСЛУЖИВАНИЕ" может помочь.
Этот инструмент предназначен только для самых стандартных установок. Если вы не сможете решить
вышеуказанную проблему, вам придётся самостоятельно отредактировать containers/app.yml, а затем ввести
./launcher rebuild app
Сайт работает и защищён с использованием порта 443 (SSL), не понимаю, почему система сообщает, что не может достичь сайта. Не знаю, что ещё делать. Пожалуйста, помогите.
У вас есть обратный прокси, поэтому вы не можете использовать discourse-setup. Кроме того, вам, скорее всего, нужно удалить шаблон let’s encrypt из вашего конфигурационного файла.
Я не знаю, в чём может быть проблема с postgres.
Вы имеете в виду те строки про прокси в моём файле nginx?
Разве вы не пытаетесь переустановить Discourse «поверх» предыдущей установки (от февраля), поэтому в скриншоте из первого сообщения отображается существующий файл app.yml, и требуется обновление PostgreSQL с версии 10 до 12 (что, судя по сообщению об ошибке, вы, вероятно, не сделали — возможно, вы обновили его на хосте, но не в контейнере с данными, который мог уже не существовать; я не знаю текущего состояния вашей предыдущей установки)?
Есть ли у вас резервная копия? Хотите ли вы чистую установку?
Я думаю, что @pfaffman имеет в виду, что из-за использования обратного прокси-сервера (nginx) скрипт discourse-setup может не работать (я никогда не запускал Discourse с обратным прокси, поэтому не знаю, так ли это). Если вы правильно определите app.yml, всё должно работать и без запуска discourse-setup.
Похоже, что код пытается выполниться в контейнере, в котором нет PostgreSQL 10 (вы, вероятно, используете версию 12). Если это так, и ваш шаблон — templates/postgres.template.yml, как указано в вашем первом сообщении, возможно, репозиторий discourse_docker на вашем компьютере (в /var/discourse) устарел.
Ваш установленный Discourse новый или старый? Возможно, проблема решится при обновлении репозитория:
cd /var/discourse
git pull
а затем выполните шаг пересборки.
Также убедитесь, что контейнер Discourse уничтожен и создан заново (а не просто остановлен и запущен), чтобы не использовать старый контейнер (я думаю, что пересборка Discourse уже делает это, но на всякий случай…).
Если это не сработает и у вас есть резервная копия, рекомендуется попробовать установить систему на новый чистый экземпляр, как сказал @Benjamin_D.
Я пытаюсь установить Discourse для другого домена «поверх» моей предыдущей установки. Точнее, два домена на одном сервере. Прошу прощения за мою неосведомлённость, в какой части файла app.yml можно найти настройки PostgreSQL? Я просмотрел свой app.yml, но ничего связанного с этим не нашёл.
У меня есть резервные копии старых файлов; я как-то скопировал некоторые данные из моей предыдущей установки в новый app.yml для нового сервера.
Здесь также прошу прощения за неосведомлённость: когда вы говорите «прокси» nginx, вы имеете в виду эту строку?
location / {
proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
proxy_set_header Host $http_host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
Ранее я использовал PostgreSQL 10, но вчера обновил его до версии 12.
Я очень хотел бы в этом случае запустить новый экземпляр. Как мне удалить старые, чтобы убедиться, что всё будет установлено заново? Большое спасибо.
Два экземпляра Discourse на одном сервере — это мультисайтовая конфигурация, совсем другая история ![]()
На данный момент я думаю, что лучше всего убедиться, что у вас есть резервная копия первого сайта, что он работает и обновлён до PostgreSQL 12, а затем попробовать приключение с мультисайтом, для которого я совершенно не квалифицирован ![]()
Спасибо, Бенджамин.
Я бы начал заново. У меня есть резервная копия первого сайта, но это была лишь пробная версия, и она больше не нужна. Я хотел бы начать всё с чистого листа.
Как удалить старый контейнер и всё остальное, чтобы начать с чистого листа?
Вы пробовали сначала обновить репозиторий discourse_docker локально (в /var/discourse)? Это не сработало?
Что касается обратного прокси, то это связано с тем, что nginx находится в центре обработки запросов и направляет их к нужным сервисам (вместо того чтобы сервис, в данном случае Discourse, был напрямую открыт в интернет). Таким образом, nginx выступает в роли обратного прокси, а порты (80 и 443), открытые в интернет, принадлежат сервису nginx.
Странно, что настройка Discourse работала в феврале на одном из моих доменов, как вы заметили, Бенджамин, помните? Я также публиковал сообщения на эту тему некоторое время назад. Поэтому меня удивляет, что люди никогда не запускали Discourse с nginx. Честно говоря, всё работало отлично, пока вчера я не попытался установить Discourse на другом домене, используя тот же сервер.
На что именно мне стоит обратить внимание в discourse_docker? Вот содержимое этой папки:
discourse_docker$ ls
bin containers discourse-setup launcher README.md scripts templates
cids discourse-doctor image LICENSE samples shared
Просто выполните git pull, чтобы обновить репозиторий (сама директория /var/discourse является локальным репозиторием), как я уже говорил в одном из сообщений выше:
а затем выполните команду rebuild.
Есть и другие пользователи, которые используют nginx в качестве фронтенда, но таких случаев значительно меньше, чем стандартной установки на выделенный сервер только для Discourse. Я также не знаю, сломает ли это discourse-setup; я лишь делаю предположение на основе ваших результатов, учитывая, что ошибка возникла при проверке DNS и открытых портов (и помня о том, что именно ваш контейнер Discourse не использует порты 80 и 443 на хосте).
