Согласен, можно ли модифицировать launcher, чтобы он предупреждал об этом или блокировал такое в следующий раз @falco?
У меня возникла та же проблема. Не могли бы вы уточнить, как именно нужно переименовать файл .yml?
Нужно ли включать TLD и поддомен в имя файла .yml? Для этого сайта это было бы meta.discourse.org.yml?
Переименуйте его в meta_discourse_org.yml.
В имени вашего файла должна быть только одна точка, и она должна предшествовать расширению.
Спасибо за уточнение. Я изменил имя файла и выполнил пересборку, но всё ещё не вижу лайтбокс или всплывающую подпись при наведении на изображения.
О каком именно файле журнала идёт речь? Я пытаюсь подтвердить, что это та же самая проблема.
Также у меня включена опция «Принудительно использовать только HTTPS» для сайта, а порт 80 заблокирован в брандмауэре.
cd /var/discourse
./launcher enter app
tail -f /shared/log/rails/production.log
Также см. эту статью о журналах Discourse.
Если проблема возникает только с существующими сообщениями, но новые загруженные изображения отображаются корректно, то мне помогло выполнение следующих команд:
rake uploads:recover_from_tombstone
rake posts:rebake
Также посмотрите это обсуждение.
Всё очень полезно, спасибо.
Похоже, у меня та же проблема с ошибкой can't reach '/uploads/default...
Следующая строка в моём файле журнала:
Started GET "/posts/950" for 127.0.0.1 at 2020-07-07 08:24:05 +0000
Есть какие-то идеи, почему мой запрос идёт через локальный IP-адрес, а не через недавно переименованный контейнер или локальный IP-адрес контейнера?
Похоже, это касается только нестандартных установок, которые одновременно:
-
Не использовали
./discourse-setupи вручную создали файл yml -
Используют обратный прокси
-
Этот обратный прокси магическим образом настроен с использованием имени контейнера Docker
Я бы не рекомендовал изменять текущее детерминированное имя контейнера для всех, чтобы решить этот пограничный случай, если это также не происходит просто при добавлении лишней точки в имя файла yml.
На самом деле я его использовал, но позже переименовал файл, так как у меня запущены два экземпляра Discourse, и в противном случае оба назывались бы app в одном и том же контейнере Docker.
Считаю разумным переименовывать файл в соответствии с используемым доменом.
Вероятно, это довольно распространённая практика для небольших сообществ, запускающих несколько сайтов на одном сервере.
Проблема с именем возникла не из-за обратного прокси, а из-за самого Docker, который автоматически добавляет имя контейнера в свой внутренний DNS. Проблема заключалась в том, что имя контейнера Discourse в Docker совпадало с его внешним DNS-именем (например, app.yml → meta.discourse.org.yml).
Я предлагаю выводить хотя бы серьёзное предупреждение, если имя файла совпадает с указанным доменным именем в файле .yml.
У меня всё ещё та же проблема: не удаётся получить доступ к изображению, чтобы узнать его размеры.
Не удаётся получить доступ к ‘/uploads/default/original/1X/9385b0977b09b0f2239c287de980b6fc238d0da0.png’ для определения его размеров.
Это происходит при полностью стандартной установке с помощью ./discourse-setup
Есть ли ещё какие-то идеи, как это исправить?
Что произойдет, если вы попытаетесь загрузить изображение внутри вашего приложения Discourse?
./launcher enter app
wget https://yourdomain.com/uploads/default/original/1X/9385b0977b09b0f2239c287de980b6fc238d0da0.png
Указывает ли разрешение имен на правильный IP-адрес?
apt-get update
apt-get install inetutils-ping
ping yourdiscoursedomain.com
или
apt-get update
apt-get install dnsutils
nslookup yourdiscoursedomain.com
Ещё раз спасибо за помощь, Майкл, это очень ценно.
Я успешно пингую домен, но похоже, что wget пытается работать через веб-прокси.
Я следовал этому руководству и добавил переменную no-proxy во все соответствующие места.
Не упустил ли я что-то? Как настроить контейнер так, чтобы он не использовал веб-прокси сервера? Нужно ли добавлять no-proxy в app.yml?
Я добавил свой домен в параметр no-proxy файла app.yml, пересобрал приложение, и теперь прокси игнорируется, как и требовалось.
Однако при выполнении wget изнутри приложения всё ещё возникают ошибки:
WARNING: The certificate of ‘MYDOMAIN.com’ is not trusted.
WARNING: The certificate of ‘MYDOMAIN.com’ doesn’t have a known issuer.
Это связано с тем, что мой SSL-сертификат выдан внутренним центром сертификации (CA). Когда я запускаю ту же команду wget с флагом --no-check-certificate, всё работает корректно.
Как мне можно либо добавить сертификат в список доверенных, либо добавить флаг для отключения проверки сертификата?
@Michael_Uray, подскажите, куда нужно добавить корневой сертификат CA, чтобы контейнер Discourse начал доверять SSL-сертификату.
Я следовал этому руководству, но, похоже, оно касается самого сервера, а не контейнера, в котором работает Discourse.
Вам обязательно нужно зайти внутрь контейнера и добавить его туда, если вы не используете обратный прокси, но, думаю, таким образом изменения не будут сохранены. Я предполагаю, что вам нужно каким-то образом добавить это в app.yml или обеспечить постоянство соответствующего пути к сертификату CA внутри контейнера через app.yml.