Привет! Я успешно установил Discourse на виртуальную машину с Ubuntu 18.04 (используя VMware Workstation 15 Player), следуя руководству. Доступ к http://localhost:3000/ изнутри виртуальной машины работает отлично, но я не могу получить к нему доступ с моей основной системы Windows 10. Сеть виртуальной машины настроена в режиме моста, и для запуска сервера Rails я использую команду:
bundle exec rails server --binding=0.0.0.0
Однако при попытке открыть http://192.168.0.172:3000/ с основной машины я получаю ошибку «отказано в подключении». Я попробовал запустить простой HTTP-сервер на Python внутри виртуальной машины:
python3 -m http.server 3000
И к нему можно успешно подключиться с основной машины, поэтому, похоже, проблема специфична для Discourse. Не упустил ли я что-то?
Привет, @neounix, спасибо за ответ. Я уже настроил сеть ВМ в режиме моста, и могу получить к ней доступ извне, используя простой HTTP-сервер на Python, который слушает тот же порт (3000) и адрес (0.0.0.0), но по какой-то причине это не работает с сервером Discourse…
Проблема в том, что опция --binding полностью игнорируется. Я попробовал вашу команду локально и заметил эту строку в выводе (вывод очень подробный, поэтому эту строку легко пропустить):
I, [2020-06-08T17:26:55.938086 #21001] INFO -- : listening on addr=127.0.0.1:3000 fd=15
При чтении нашего файла config/unicorn.conf.rb видно, чтобы сервер слушал адрес 0.0.0.0, необходимо установить переменную окружения UNICORN_BIND_ALL=1. Таким образом, должно сработать следующее: UNICORN_BIND_ALL=1 bundle exec rails server.
Альтернативно можно использовать скрипт bin/unicorn, который поддерживает опцию --host, позволяющую привязаться к адресу 0.0.0.0.
Спасибо, это избавило меня от головной боли.
Интересно, можно ли обновить официальные руководства пользователя и включить туда это решение вместо неработающего варианта с bundle exec rails server -b 0.0.0.0.
Я видел это повсюду в интернете и не мог представить, что это не сработает.