Недавно я следовал руководству install-cloud для установки Discourse на экземпляре AWS Lightsail. Несмотря на тщательное соблюдение инструкций и несколько попыток начать с нуля, к сожалению, при попытке доступа к моему форуму я получаю ошибку «connection refused».
Шаги, которые я выполнил:
Создал новый экземпляр Lightsail.
Назначил статический IP-адрес.
Открыл порт 443.
Указал мой поддомен (forum.procedural.audio) на IP-адрес.
Выполнял команды установки Discourse из руководства, включая указание адреса электронной почты для LETS_ENCRYPT.
Перешел к моему форуму… ошибка «connection refused».
Запуск ./discourse-doctor показывает, что версия Discourse на forum.procedural.audio — NOT FOUND. Я успешно получаю тестовое письмо от Discourse.
Запуск ping forum.procedural.audio не возвращает данные, но находит правильный статический IP-адрес.
Похоже, что проблема связана с SSL, но я не уверен, как её исправить. В директории shared/standalone/ssl/ находятся четыре файла:
forum.procedural.audio.cer (файл пустой)
forum.procedural.audio.key (файл содержит ключ)
forum.procedural.audio_ecc.cer (файл пустой)
forum.procedural.audio_ecc.key (файл содержит ключ)
Не уверен, является ли пустота файлов .cer частью проблемы. Также я заметил, что в логах указано, что система ищет файл в /shared/ssl/*, а не в /shared/standalone/ssl/*, что также кажется важным.
Проблема в том, что ваш экземпляр Lightsail недоступен извне. Именно об этом вам сообщал утилита discourse-doctor — если вы открыли только порт 443, это, скорее всего, и есть причина.
HTTPS на порту 443 не будет работать пока у вас нет сертификата. У вас нет сертификата (и файлы сертификатов пусты), потому что Let’s Encrypt не смог выполнить регистрацию из-за проблемы с подключением.
Предполагая, что вы назначили статический внешний адрес, откройте также порт 80 и повторите попытку. Порт 80 должен быть открыт в любом случае, чтобы любой клиент, подключившийся через HTTP, мог быть перенаправлен.
forum.procedural.audio не отображается в DNS, или, иными словами, имя хоста не разрешается в IP-адрес. Я только что проверил через CloudFlare и Google DNS, и ни один из них не может найти этот хост. Если я не могу его разрешить, то и discourse-doctor тоже не сможет.
Когда вы создали A-запись для вашего сервера? Проверили ли вы время репликации?
Убедитесь, что это исправлено до того, как вы снова попробуете собрать сервер. Let’s Encrypt предоставляет ограниченное количество попыток для регистрации/обновления, и когда вы их исчерпаете, вы не сможете получить сертификат в течение семи дней.
Я владею доменом в Namecheap уже два дня, и он указывает на Route 53 (дополнительный уровень косвенного указания нужен, потому что Route 53 не поддерживает домены .audio). Основная запись домена существует большую часть этих двух дней. Запись поддомена там существует примерно час.
Если бы это была проблема, то я думаю, что запуск ping forum.procedural.audio с моего экземпляра не смог бы разрешить IP-адрес. Но IP-адрес разрешается.
Хм. Ну, https://dnschecker.org/#A/forum.procedural.audio показывает, что имя разрешается во многих местах, так что, возможно, это проблема распространения. Когда я использую 1.1.1.1 или 8.8.8.8 для поиска, я не получаю ответа. NS-337.AWSDNS-42.COM возвращает его, так что, возможно, вам просто нужно подождать некоторое время.
Но discourse-setup попытается найти адрес и проверить, может ли он подключиться к самому себе. Если это не удаётся, то обычно это либо проблема с DNS, либо порты не открыты.
Прошло почти неделю, и я по-прежнему не могу развернуть форум. У кого-нибудь есть дополнительные идеи? Порты 80 и 443 открыты. Я не думаю, что это проблема с DNS — утилита discourse-doctor не находит версию Discourse на localhost (а также на forum.procedural.audio). Любая помощь будет оценена.
Хм, https://dnschecker.org/#A/forum.procedural.audio показывает, что запись распространилась на 31 из 32 локаций. Я никогда не слышал, чтобы DNS-записи распространялись более 144 часов. Но теперь, проверяя Nslookup.io, вижу, что Cloudflare и Google не могут её разрешить, хотя авторитетный сервер — может.
Похоже, я был неправ, но не знаю, что с этим делать. Не понимаю, почему discourse-doctor не может найти версию Discourse на localhost.