Обсуждение проблемы с портом в Google Cloud?

Всем привет! Я уже несколько раз пытался запустить Discourse на Google Cloud. Сейчас у меня третья попытка: создаю экземпляр виртуальной машины (Ubuntu 18.04 minimal) и вручную устанавливаю Discourse через терминал. Следуя инструкции, всё выглядит нормально, но после выполнения ./discourse-setup я не могу получить доступ к сайту.

Также я пробовал установить Discourse с помощью решений «в один клик» из Google Marketplace (официальное решение от Google и решение от Bitnami). В этом случае я мог получить доступ к стартовой странице Discourse.

Подозреваю, что проблема связана с портами в Google (и что готовые решения её обходят), но я слишком мало знаю обо всём этом, чтобы разобраться самостоятельно. Есть какие-то идеи?

Может ли это быть связано с брандмауэром?

По моему пониманию, для предоставления публичного доступа к виртуальной машине в G Cloud нам необходимо отметить два флажка. При необходимости эту настройку можно изменить позже.

Привет, Бхану, спасибо за предложение!

Эти пункты уже отмечены!

По-прежнему не работает. Пробую сделать ping сайта, всё выглядит нормально:

Зашёл на сайт через SSH и выполнил netstat для проверки портов, вот что получилось:
ports
Но я не очень хорошо разбираюсь в netstat.

Теперь я думаю, что, возможно, у меня не запущен веб-сервер? Нужно ли мне установить Nginx до или после установки Discourse, или что-то в этом роде? Я следую логике из этой темы, которая идентична моей проблеме.

Хорошо, я начинаю думать, что это и есть проблема. Казалось, что Nginx установлен, но не запущен. Я завершил процессы с PID 14311 и 14295 (docker-proxy), а затем запустил Nginx. Теперь Nginx привязан к порту 80, и при доступе к моему сайту я вижу приветствие от Nginx!
Теперь нужно снова запустить Docker/Discourse.

Также я нашел это руководство по установке Discourse/Nginx на более старой версии Ubuntu. Похоже, они изменили порт для Docker, с порта 80 по какой-то причине. Возможно, здесь есть какой-то конфликт.

Как-то удалось запустить Nginx на порту 80, а Docker-proxy слушает порты 8060 для HTTP и 9443 для HTTPS (как предлагается в другом руководстве). Но, добившись этого, я снова растерян. Discourse кажется таким замечательным форумом, но, apparently, невозможно установить на Google Cloud для таких новичков, как я.

Вам не нужно запускать выделенный веб-сервер, если вы не планируете использовать сервер для чего-то большего, чем хостинг Discourse, так как в Discourse уже встроен сервер Nginx. Можете ли вы подтвердить, что вашему серверу назначен публичный IP-адрес и что он настроен на разрешение внешних подключений к портам 22, 80 и 443?

См.: VPC firewall rules  |  Cloud Next Generation Firewall  |  Google Cloud Documentation

Да. Мой экземпляр виртуальной машины в Google имеет публичный IP-адрес и пропускает трафик на порты 22, 80 и 443.

Я полагаю, это также было продемонстрировано, когда я завершил процессы docker-proxy (на портах 80 и 443), запустил Nginx (на порту 80) и смог получить доступ к стартовой странице Nginx на моём сайте.

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

Я уже установил его три раза, и каждый раз порты оказываются незанятыми. Я выполнил три успешные установки, но так и не смог получить доступ к форуму. Поэтому я рассматриваю возможность использования версии от Google (которая работает, но не позволяет настроить SMTP), а затем найти способ настроить SMTP из этой версии.

Можно ли как-то настроить SMTP после завершения установки?

Следуя «Шагу 11» по этой ссылке, я смог [создать (так как его не существовало) и] отредактировать файл discourse.conf. После этого, как я понял, я мог перезапустить «службу discourse» и проверить настройки электронной почты?

Это означает, что мне не нужно переустанавливать Discourse, верно?

Однако, посмотрев на запущенные службы, я не вижу ничего под названием «discourse», хотя мой форум Discourse, очевидно, работает.


Разве Discourse не должен быть виден здесь? Есть ли здесь какая-то другая служба, которую я мог бы перезапустить, что, в свою очередь, перезапустит службу Discourse?

Извините, я не имею представления о том, как настроен образ Google Cloud. Я выполнил более десятка установок (включая одну на прошлой неделе) и уверен, что проблема, скорее всего, связана с конфигурацией вашей виртуальной машины.

Вот мои подготовительные шаги перед следованием официальному руководству по установке:

  1. Настроить Compute Engine для разрешения трафика HTTP и HTTPS.
  2. Настроить DNS и подтвердить его работу.
  3. Обеспечить подключение к вашей виртуальной машине через SSH.

Я могу гарантировать, что процесс работает.

P.S. Обычно я использую минимальную версию Ubuntu на Gcloud для установки Discourse.

Разве вы не устанавливали официальную стандартную установку Discourse?

Хм. Как странно. Но спасибо за подтверждение, что это действительно возможно в Google Cloud. Я тоже считаю, что установка Discourse проходит нормально, а проблема в ВМ и портах. Завтра попробую в четвёртый раз, хотя каждый раз я выполнял эти подготовительные шаги. Спасибо, Бхану.

@pfaffman У меня получилось.

Кроме того, это не совсем «вычислительный движок», к которому вы разрешаете трафик HTTP/HTTPS, верно? Речь идет об «экземпляре VM»?

Compute Engine — это термин Google для обозначения ВМ, если я не ошибаюсь

Discourse-setup проверяет порты при запуске. Эти тесты проходят?

Сейчас займусь этим. Только что удалил старые экземпляры и проект, создал новый проект и экземпляр в Google Cloud. Сейчас попробую установить Discourse и сообщу, какие порты проверил!

Хорошо, так что через пару дней всё заработало!

Я повторил тот же процесс ещё раз, но на этот раз был более внимателен к каждому шагу.
Удалил свой экземпляр и проект в Google Cloud и начал с чистого проекта.

Затем я создал новый проект и новый экземпляр: Ubuntu 18.04 LTS минимальная версия. Включил HTTP/HTTPS. Прежде чем следовать официальному руководству, ссылка на которое приведена выше, я поступил так, как посоветовал Бхану, и проверил подключение. Я следовал «приветственному руководству» Google Cloud, которое также включает запуск скрипта Python-сервера на порту 80 и т.д.

В процессе следования «официальному руководству» я был особенно внимателен при настройке SMTP. По какой-то причине я решил не использовать Mailgun, а в итоге выбрал Sendinblue. Это работает отлично!

Я действительно не знаю, в чём была разница на этот раз, но теперь всё работает. Спасибо за обсуждение со мной в теме!

Не знаю, почему я не могу редактировать свой предыдущий пост, но модератор может объединить их.
Я просто хотел добавить, что, возможно, проблема и решение заключались в том, что я был слишком нетерпелив.

Поскольку я установил некорректный плагин, мне недавно пришлось полностью переустановить экземпляр Discourse. При запуске нового экземпляра у меня появился новый IP-адрес. Поэтому я зашел к своему хостинг-провайдеру, обновил A-запись/DNS, которая указывает на мой поддомен discourse.mydomain.com в сторону IP-адреса моего экземпляра Google Cloud, а затем вернулся к SSH-подключению к Google Cloud, чтобы запустить настройку.

При первом запуске ./discourse-setup программа проверяет возможность привязки к портам 80 и 443. Но по какой-то причине она снова отказалась привязываться к портам 80 и 443. Я проверил DNS через who.is, и поддомен корректно разрешался в IP-адрес и так далее, но всё равно не работало. Попробовал запустить ./discourse-setup три раза — безрезультатно. Проверил с помощью netstat -ltnpu, ничего необычного не обнаружил. Подождал ещё 5 минут, запустил в четвёртый раз, и теперь всё работает.

Не могу отредактировать свой предыдущий пост. Но у меня действительно возникли проблемы с повторной установкой. На этот раз я также добавил следующие правила в фаервол:

Вероятно, SMTP не обязателен, но «Исходящий» трафик для портов 80 и 443, похоже, был необходим.

Я считаю, что настраивать исходящие правила не нужно, так как все порты по умолчанию открыты, за исключением порта 25, который всегда заблокирован.