Linux打开防火墙放通端口以及修改flask运行命令使允许远程访问flask应用

        在默认情况下,Flask 开发服务器绑定到 127.0.0.1(即本地主机),这意味着它只能在运行 Flask 应用的机器上访问。为了让其他机器(包括远程机器)能够访问 Flask 应用,你需要将服务器绑定到所有的网络接口(即 0.0.0.0)。

  flask run 是 Flask 开发服务器的一个命令,用于在开发环境中启动 Flask 应用。默认情况下,Flask 开发服务器只监听 localhost127.0.0.1)。使用 --host=0.0.0.0 参数,Flask 会将监听地址修改为 0.0.0.0,这表示服务器会监听所有可用的 IP 地址,从而允许外部网络上的机器访问该应用。

启用远程访问的方法

  1. 修改 Flask 运行命令

    在运行 Flask 应用时,添加 --host=0.0.0.0 参数,这样 Flask 服务器就会监听所有网络接口。
    flask --app app run --host=0.0.0.0
    
  2. 安全考虑

    • 请注意,在生产环境中,直接使用 Flask 自带的开发服务器是不安全的。你应该使用像 Gunicorn、uWSGI 或其他 WSGI 服务器来运行 Flask 应用,并在前面加上一个反向代理服务器(如 Nginx 或 Apache)。
    • 开发环境中,确保防火墙和网络安全设置允许访问 Flask 服务器的端口(默认是 5000 端口)。

测试远程访问

  1. 确保端口开放

    • 确保防火墙允许来自远程机器的流量通过端口 5000(下文附放通端口命令)。
    • 在运行 Flask 应用的机器上,可以使用 netstat 或 lsof 命令检查端口是否正确绑定:
      netstat -tuln | grep 5000
      
  2. 测试远程访问

    • 在远程 Windows 机器上,打开浏览器,输入运行 Flask 应用的机器的 IP 地址和端口号:
      http://<Your-Server-IP>:5000
      
    • 例如,如果你的服务器 IP 是 192.168.1.100,你可以在浏览器中访问:
      http://192.168.1.100:5000
      

示例

假设你的 Flask 应用在 app.py 文件中,并且在服务器上运行:

  1. 启动 Flask 应用(服务器上)

    flask --app app run --host=0.0.0.0
    
  2. 访问 Flask 应用(远程 Windows 机器上)

    打开浏览器,输入 http://<Your-Server-IP>:5000

        通过将 Flask 运行命令中的 --host 参数设置为 0.0.0.0,你可以让 Flask 开发服务器监听所有网络接口,从而允许远程访问。但请务必注意安全性,尤其是在生产环境中。

打开防火墙放通端口的方法

        在 Ubuntu 中,ufw(Uncomplicated Firewall)是一个简单易用的防火墙管理工具。下面是通过 ufw 打开防火墙并允许特定端口(如 Flask 默认使用的 5000 端口)的步骤:

1. 检查 ufw 状态

首先,你可以检查 ufw 的当前状态:

sudo ufw status

如果 ufw 被禁用,会显示 Status: inactive

2. 启用 ufw

如果 ufw 目前是关闭状态,可以通过以下命令来启用它:

sudo ufw enable

3. 允许特定端口

为了允许来自外部的连接,你需要打开 Flask 使用的端口(默认是 5000)。可以使用以下命令来允许端口 5000

sudo ufw allow 5000

4. 重新检查 ufw 状态

在允许了端口之后,可以再次检查 ufw 状态,以确认规则已被添加:

sudo ufw status

你应该能看到类似以下的输出,表明 5000 端口已经被允许:

Status: activeTo                         Action      From
--                         ------      ----
5000                       ALLOW       Anywhere

5. (可选)允许其他端口

假如你在生产环境中使用了其他服务,可能需要允许其他常用端口(如 80443 等),可以使用类似的命令:

sudo ufw allow 80    # 允许 HTTP
sudo ufw allow 443   # 允许 HTTPS

6. 其他 ufw 命令

  • 禁用 ufw

    sudo ufw disable
    
  • 删除规则
    如果需要删除某个规则,例如关闭 5000 端口,可以使用:

    sudo ufw delete allow 5000
    
  • 查看更详细的状态

    sudo ufw status verbose
    

注意事项

  • 请确保在开启防火墙规则时,确保其他应用不会受到影响。
  • 如果你在云服务器上(如 AWS、GCP 等),可能还需要在相应的平台控制台上设置网络安全组或防火墙规则,确保允许访问。

flask run --host=0.0.0.0 只会影响当前运行的 Flask 应用实例,而不会永久修改所有应用的配置。以下是详细的解释:

只对当前运行的实例有效

  • flask run --host=0.0.0.0 这条命令只会影响当前运行的 Flask 应用实例,并在你关闭服务器后失效。
  • 如果你再次运行 flask run 而不带 --host=0.0.0.0,Flask 仍然会默认监听 localhost

如何永久修改所有应用的默认设置

如果你希望所有应用都能默认监听所有可用的 IP 地址,你可以通过以下几种方式来实现:

1. 修改 Flask 配置文件

你可以在 Flask 应用的配置文件中设置 SERVER_NAME 或其他相关配置项,但这并不直接控制 flask run 的行为。flask run 主要用于开发环境,它有自己的默认行为。

2. 使用环境变量

你可以在启动 Flask 应用时设置环境变量来影响其行为。例如,使用 FLASK_RUN_HOST 环境变量:

export FLASK_RUN_HOST=0.0.0.0
flask run

这种方式在当前会话中有效,但如果你希望每次都自动设置,可以将其添加到你的 .bashrc 或 .bash_profile 文件中。

3. 使用 Flask 命令别名

如果你经常需要使用 --host=0.0.0.0 参数,可以为 flask run 创建一个命令别名:

alias flask-run='flask run --host=0.0.0.0'

然后你可以使用 flask-run 来替代 flask run,它会自动带上 --host=0.0.0.0 参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444384.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【redis-07】redis实现主从复制架构和底层原理

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

算法设计课程简介

算法设计课程简介 1. 课程概述 算法设计是一门计算机科学的核心课程&#xff0c;旨在教授学生如何设计、分析和优化各种算法&#xff0c;以解决实际问题。该课程不仅涉及具体算法的实现&#xff0c;更注重算法在时间复杂度和空间复杂度上的优化&#xff0c;帮助学生培养编写高…

echarts 括扑图(graph 与 lines实现)

目的 要实现一个由几条线串起来的设备&#xff0c;线是动态的&#xff0c;如下 相关技术 vue,echarts 难点 因为用到了两种图&#xff0c;要保持坐标系一致性&#xff0c;graph设置coordinateSystem: ‘cartesian2d’,后不能使用x,y要使用value&#xff0c;(这一点官网没…

vue-jsonp的使用和腾讯地图当前经纬度和位置详情的获取

1.下载&#xff1a; npm install –save vue-jsonp2.main.js中引入&#xff1a; //腾讯逆地址解析会用到jsonp import {VueJsonp} from vue-jsonp; Vue.use(VueJsonp);3.腾讯地图中使用 uniapp中获取*经纬度*和通过经纬度获取当前**位置详情** //获取当前经纬度 getLocation…

基于STM32的智能门锁

基于STM32的智能门锁 在现代家居安全领域&#xff0c;智能门锁已经成为提升居住安全和便利性的关键技术之一。本文将介绍一个基于STM32微控制器的智能门锁项目&#xff0c;该项目集成了多种模块&#xff0c;包括步进电机、矩阵键盘、OLED显示屏、蓝牙模块和RFID刷卡模块&#…

ClickHouse 数据保护指南:从备份到迁移的全流程攻略

一、背景 运行3年的clickhouse需要迁移机房&#xff0c;迁移单库单表的140亿条的数据。采用clickhouse-backup 的方式进行备份迁移&#xff0c;打包备份&#xff0c;再加上数据拷贝&#xff0c;数据恢复 一共花费30分钟。数据在一定量级&#xff0c;避免使用SQL 导入导出的方式…

达梦DBLINK访问ORACLE配置方法

目录 1、概述 2、测试环境 3、语法简介 4、配置访问DM的DBLINK 5、配置访问ORACLE的DBLINK 5.1 通过OCI配置 5.2 通过ODBC配置 1、概述 本文介绍了达梦DBLINK的配置方法。有3部分内容&#xff0c;1&#xff09;达梦访问到达梦的配置方法&#xff1b;2&#xff09;通过OC…

天气预报echarts

如上图&#xff0c;可以切换温度&#xff0c;降水量&#xff0c;风力风向和空气质量 <template><el-radio-group v-model"selectedData" change"updateChart"><el-radio-button label"temperature">温度</el-radio-butto…

探索未来:揭秘pymqtt,AI与物联网的新桥梁

文章目录 探索未来&#xff1a;揭秘pymqtt&#xff0c;AI与物联网的新桥梁背景&#xff1a;为什么选择pymqtt&#xff1f;什么是pymqtt&#xff1f;如何安装pymqtt&#xff1f;简单的库函数使用方法1. 配置MQTT连接2. 创建Mqtt对象3. 发布消息4. 订阅主题5. 运行MQTT客户端 场景…

LabVIEW提高开发效率技巧----状态保存与恢复

在LabVIEW开发中&#xff0c;保存和恢复程序运行时的状态是一个关键技巧&#xff0c;特别是在涉及需要暂停或恢复操作的应用中。通过使用 Flatten To String 和 Unflatten From String 函数&#xff0c;开发人员可以将程序当前的状态转换为字符串并保存&#xff0c;再在需要时恢…

C语言-常见文件操作函数详解(fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite)

&#x1f30f;个人博客&#xff1a;尹蓝锐的博客 希望文章能够给到初学的你一些启发&#xff5e; 如果觉得文章对你有帮助的话&#xff0c;点赞 关注 收藏支持一下笔者吧&#xff5e; 顺序读写数据常用函数 函数名调用形式功能返回值fgetcfgetc(fp)从指针变量fp指向的文件中读…

Spring Boot 进阶-详解Spring Boot整合数据库

在之前的例子中&#xff0c;我们介绍了如何在Spring Boot 框架中添加数据源配置。这篇文章我们来详细介绍一下如何整合Mybatis框架。 整合Mybatis框架 还是按照之前的套路&#xff0c;我们要整合Mybatis框架&#xff0c;首先需要加载对应的场景启动器。这里我们引入由Mybatis提…

【AI 工具分享】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

刷题 图论

面试经典 150 题 - 图 200. 岛屿数量 dfs 标记 visited class Solution { public:// dfs 染色const int direction[4][2] {{-1, 0}, {0, -1}, {1, 0}, {0, 1}};void dfs(vector<vector<char>>& grid, vector<vector<bool>>& visited, int x…

.NET NoSQL 嵌入式数据库 LiteDB 使用教程

前言 今天大姚给大家分享一个小巧、快速、轻量级的.NET 开源且免费&#xff08;MIT License&#xff09;的 NoSQL 嵌入式数据库&#xff1a;LiteDB。本篇文章我们主要来讲讲LiteDB在.NET中如何使用。 LiteDB介绍 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库…

什么是快充协议、支持多协议的USB Type-C受电端取电芯片

随着快充技术的不断发展&#xff0c;传统的慢充模式已经满足不了消费者对充电效率的要求。有了快充技术的支持很大程度的缩短了我们的充电时间&#xff0c;给我们的生活带来了很多便利。 什么是快充协议 快充协议是快充技术的核心&#xff0c;现如今市面上已经有很多种快充协议…

打破常规,BD仓储物流的效能提升!

当前&#xff0c;随着国家战略的推进&#xff0c;JS与民用领域的融合不断加深&#xff0c;物流业也步入了军民融合的新时代。在智能仓储物流方面&#xff0c;JS物流的智能化进展受到了BD系统的高度关注和重视。 一、建设JS仓储物流RFID基础设施 JS物流领域引入RFID技术的基础工…

代码随想录算法训练营Day31 | 455.分发饼干、376.摆动序列、53.最大子数组和

目录 455.分发饼干 376.摆动序列 53.最大子数组和 455.分发饼干 题目 455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c…

论文翻译 | Fairness-guided Few-shot Prompting for LargeLanguage Models

摘要 大型语言模型已经显示出令人惊讶的执行上下文学习的能力&#xff0c;也就是说&#xff0c;这些模型可以通过对由几个输入输出示例构建的提示进行条件反射&#xff0c;直接应用于解决大量下游任务。然而&#xff0c;先前的研究表明&#xff0c;由于训练示例、示例顺序和提示…

HTML的介绍

HTML HTML是一种超文本标记语言,超文本是指,除了文本之外,还可能包含图片,音频,或者评注等的 文本形式,比文本强大,通过链接和交互方式来组织和呈现信息.标记语言是指,由标签构成的语言.HTML定义了多种不同的标签,用来表示不同的内容. 标签的介绍: 1.<h3> 三级 </h3&…