Как включить порт 5000 на AWS ubuntu

У меня есть приложение с флягой, работающее на сервере AWS Ubuntu на порту 5000 (флажок выполняется по умолчанию на порту 5000). Но когда я пытаюсь получить доступ к серверу на этом порту, он никогда не подключается.

Я добавил группу безопасности на AWS-консоли как Custom TCP на порт 5000 для любого IP-адреса 0.0.0.0/0, но все же я не могу получить к ней доступ.

Нужно ли перезагружать сервер? Или я что-то пропустил?

Сообщите мне любую дополнительную информацию.

Ответ 1

В дополнение к разрешению доступа к порту 5000 через группу безопасности вам также необходимо убедиться, что ваше приложение прослушивает IP-адрес, который может принимать TCP-соединения извне. Для прослушивания всех IP-адресов в приложении используйте:

if __name__ == '__main__':
    app.run(host='0.0.0.0', debug = False)

Вместо:

if __name__ == '__main__':
    app.run(host='127.0.0.1', debug = False)

Чтобы узнать, какой адрес прослушивает ваше приложение, вы можете запустить эту команду:

netstat -an | grep :5000

После внесения этих изменений вам нужно перезапустить приложение Flask.

Я предполагаю, что вы просто используете это для разработки и тестирования, так как вы держите его на порту 5000, но когда вы будете готовы развернуть свое приложение в производство, вам нужно его поместить реального веб-сервера. Я бы рекомендовал использовать nginx с uWSGI. Вот руководство к настройке Flask + nginx + uWSGI, а вот официальную документацию из Flask по этому вопросу.

Ответ 2

В дополнение к @Will answer, возможно, что в зависимости от того, какой Ubuntu AMI вы используете, по умолчанию были установлены ограничительные правила iptables. Использование:

sudo iptables -L

чтобы указать существующие существующие правила. Использование:

sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT

чтобы открыть порт, если необходимо.