Невозможно получить доступ к приложению Flask в Vagrant VM из браузера хоста.

Вопрос или проблема

Невозможно получить доступ к приложению Flask в Vagrant VM из браузера хоста.

Я запускаю приложение Flask внутри виртуальной машины Vagrant. Приложение настроено на прослушивание всех адресов (0.0.0.0), и я могу получить к нему доступ из VM, используя curl http://localhost:5000. Однако я не могу достать его из веб-браузера моего хост-ноутбука. Я получаю ошибку “Этот сайт недоступен”.

Ниже приведен код, который я использовал

from flask import Flask

app = Flask(__name__)

@app.route("https://stackoverflow.com/")
def home():
    return "Поздравляю! Flask работает успешно."

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5000)

И когда я запускаю его, я получаю

vagrant@ubuntu-focal:~/smart-home-project$ python3 app.py

  • Запуск приложения Flask ‘app’
  • Режим отладки: отключен
    ПРЕДУПРЕЖДЕНИЕ: Это сервер разработки. Не используйте его в производственной среде. Используйте сервер WSGI для производства.
  • Запуск на всех адресах (0.0.0.0)
  • Запуск на http://localhost:5000
  • Запуск на http://Vm-ip:5000
    Нажмите CTRL+C для выхода

Я получаю ошибку, когда вставляю http://Vm-ip:5000 в браузере

Я подтвердил, что приложение Flask работает правильно и доступно из VM.
Я пытался изменить порт на 8000
Я пытался отключить брандмауэр как на VM, так и на ноутбуке

Я надеялся, что с этим смогу загрузить его в своем браузере, но ошибка по-прежнему сохраняется

Ответ или решение

Чтобы решить проблему с доступом к приложению Flask, работающему внутри виртуальной машины Vagrant, из веб-браузера хостовой машины, вам необходимо убедиться в правильной конфигурации сетевого окружения Vagrant и сетевых настроек вашей Flask-программы. Вот несколько шагов, которые могут помочь вам решить эту проблему:

  1. Проверьте настройки Vagrantfile:
    Убедитесь, что в вашем Vagrantfile правильно настроены порты для перенаправления. Вам нужно добавить перенаправление порта, чтобы запросы, поступающие на хостовой машине, перенаправлялись на порт, на котором работает Flask-приложение во виртуальной машине (например, 5000). Пример настройки Vagrantfile:

    Vagrant.configure("2") do |config|
     config.vm.box = "ubuntu/focal64"
     config.vm.network "forwarded_port", guest: 5000, host: 5000
    end
  2. Перезапустите Vagrant:
    После внесения изменений в Vagrantfile необходимо выполнить команду для перезапуска Vagrant:

    vagrant reload
  3. Проверьте IP-адрес:
    Убедитесь, что вы используете правильный IP-адрес для доступа к приложению. Если вы используете перенаправление портов, вам следует обращаться к http://localhost:5000 на хостовой машине, а не по IP-адресу виртуальной машины.

  4. Код Flask:
    Ваш код Flask выглядит в целом нормально, но вы указали неверный маршрут для функции home(). Вместо @app.route("https://stackoverflow.com/") необходимо использовать @app.route("/") или другой корректный путь. Вот исправленный вариант:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route("/")
    def home():
       return "Поздравляем! Flask работает успешно."
    
    if __name__ == '__main__':
       app.run(host="0.0.0.0", port=5000)
  5. Отключите брандмауэр (если необходимо):
    Хотя вы уже пробовали отключить брандмауэр, убедитесь, что он действительно отключен, или добавьте необходимые правила для разрешения входящих соединений на порту 5000 на виртуальной машине и вашем хосте.

  6. Проверьте доступность порта:
    Убедитесь, что порт 5000 действительно открыт и доступен. Вы можете использовать такие команды, как netstat или ss, для проверки открытых портов.

    sudo netstat -tuln | grep :5000
  7. Используйте инструменты диагностики:
    Если после выполнения всех вышеперечисленных шагов проблема сохраняется, используйте команды вроде curl с хостового компьютера, чтобы протестировать соединение:

    curl http://localhost:5000

Следуя этим шагам, вы должны быть в состоянии получить доступ к вашему Flask-приложению из браузера на хостовой машине. Если проблемы всё ещё продолжаются, пожалуйста, предоставьте дополнительную информацию о конфигурации вашей сети, чтобы мы могли помочь вам более детально.

Оцените материал
Добавить комментарий

Капча загружается...