Я использовал стандартную установку много месяцев назад. Я использую обратный прокси-сервер nginx; отмечу, что он работает без сбоев с августа.
Я не запускал discourse-setup (хотя однажды на 5 секунд запустился скрипт установки, но я его прервал и восстановил систему из снимка). Я запускал ./launcher rebuild app.
Да: «запускается ли это сразу автоматически при входе?» Как только я вхожу в систему и выполняю sudo su для перехода к root, оно запускается автоматически.
Я не использую Digital Ocean.
Я только что посмотрел файл .bashrc для root; последняя строка:
/opt/hostinger/scripts/discourse_conf.sh
Давайте посмотрим, что он делает. Если он появился не всегда, отмечу, что я его не добавлял.
#!/bin/bash
clear
cd /var/discourse
if ./discourse-setup; then
clear
echo "Discourse теперь установлен. Войдите в свою учетную запись администратора в браузере, чтобы продолжить"
echo "настройку Discourse."
cp -f /etc/skel/.bashrc /root/.bashrc
else
echo ""
echo "-----------------------------------------------------------------------------"
echo "Скрипт установки не удался с предоставленными данными Discourse."
echo "Он будет запущен повторно. Пожалуйста, устраните указанные выше проблемы."
echo "-----------------------------------------------------------------------------"
echo "Когда будете готовы, нажмите Enter"
echo "Чтобы отменить установку, нажмите Ctrl+C, и этот скрипт будет запущен повторно при следующем входе"
read wait
fi
Виртуальную машину размещает Hostinger. Давайте удалим эту строку и попробуем снова войти в систему и выполнить su. Не знаю, как эта строка попала в файл .bashrc, я точно не добавлял её вручную.
Да, это исправляет проблему. Мне и в голову не приходило, что файл rc может быть изменён таким образом, поэтому я даже не подумал его проверить. Спасибо всем за помощь, это очень ценно!
После закомментирования этой строки в bashrc:
cd /var/discourse
if ./discourse-setup; then echo 'found it'; else echo 'not found'; fi
возвращает: not found.
Для меня странно, что оно вообще когда-либо находилось.
Однако, если я сейчас (спустя около 15 минут) выполню ls -al ./discourse-setup, получу: -rwxr-xr-x 1 root root 28715 Dec 23 23:24 ./discourse-setup.
Если я сейчас выполню if ./discourse-setup; then echo 'found it'; else echo 'not found'; fi, запустится та же проблема, с которой я столкнулся: ...Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.
Я убрал комментарий, снова вошёл в систему, выполнил sudo su, и система захотела запустить процесс установки, но скрипт discourse-setup не был создан. Так как же создаётся скрипт discourse-setup?
Как создаётся скрипт discourse-setup, и могу ли я удалить его вручную? Если я переименую его, то при входе в систему он не создаётся заново, независимо от наличия строки /opt/hostinger/scripts/discourse_conf.sh в .bashrc root.
Отмечу, что я никогда не видел:
echo "Скрипт установки не удался с предоставленными данными Discourse."
echo "Он будет запущен повторно. Пожалуйста, устраните указанные выше проблемы."
Экран очищался, и единственные сообщения, которые я видел, были:
Файл конфигурации containers/app.yml уже существует!
Сохранение старого файла как app.yml.2024-12-25-193919.bak
Остановка существующего контейнера через 5 секунд или нажмите Control-C для отмены.
diff ./.bashrc /etc/skel/.bashrc
118d117
< # /opt/hostinger/scripts/discourse_conf.sh
Не знаю, как эта строка попала в .bashrc, и текст, который я вижу в проблеме, не соответствует описанию в файле /opt/hostinger/scripts/discourse_conf.sh, но проблема, похоже, исчезла.
Также отмечу, что теперь, когда я выполняю ./launcher rebuild app или перезагружаю виртуальную машину, если попытаться получить доступ к веб-сайту слишком быстро, возникает ошибка 502. Сайт становится доступным примерно через минуту. Раньше я этого не помню, но возможно, я никогда не пытался получить доступ к сайту сразу после перезагрузки. Есть какие-то мысли по этому поводу?