基于Flask与Ngrok实现Pycharm本地项目公网访问:从零部署

目录

概要

1. 环境与前置条件

2. 安装与配置 Flask

2.1 创建虚拟环境

2.2 安装 Flask

3. 安装与配置 Ngrok

3.1 下载 Ngrok

3.2 注册并获取 Authtoken

4. 在 PyCharm 中创建 Flask 项目

5. 运行本地 Flask 服务

6. 启动 Ngrok 隧道并获取公网地址

7. 完整示例代码汇总

8. 常见问题与排查

9. 结语


概要

本文提供一种通过Flask框架与Ngrok工具实现本地开发项目(基于PyCharm)公网访问的轻量化方案。通过整合Python后端服务配置、Ngrok隧道映射及安全认证流程,开发者可快速生成临时外网域名,实现远程调试与接口测试。本方案适用于原型开发、跨设备协作及API接口验证场景。


1. 环境与前置条件

  • 操作系统:Windows/macOS/Linux 均可。

  • Python 版本:≥3.6。3.11已测试有效。

  • PyCharm:已安装并能正常运行。

  • 网络:能访问 ngrok.com 及 Python 包索引。


2. 安装与配置 Flask

2.1 创建虚拟环境

python -m venv venv
source venv/bin/activate    # Linux/macOS
venv\Scripts\activate       # Windows

此步骤可隔离依赖,避免全局污染。

2.2 安装 Flask

pip install Flask

根据 Flask 官方文档,Flask 是轻量级微框架,可快速上手并支持生产部署ngrok


3. 安装与配置 Ngrok

3.1 下载 Ngrok

从官方页面下载对应平台的可执行文件并解压至任意目录(如 /usr/local/bin)Download ngrok

3.2 注册并获取 Authtoken

  1. 访问 https://ngrok.com 并注册免费账号。

  2. 登录控制面板,复制 Authtoken。

  3. 在终端中执行:

ngrok config add-authtoken <YOUR_AUTHTOKEN>

此命令会将 Authtoken 写入 ~/.ngrok2/ngrok.yml,用于后续隧道授权


4. 在 PyCharm 中创建 Flask 项目

  1. 新建项目:File → New Project → Pure Python,选择上述虚拟环境。

  2. 添加依赖:在 PyCharm 的 Terminal 中执行 pip install Flask

  3. 项目结构

my_flask_app/
│
├── app.py
├── requirements.txt
└── venv/
  1. requirements.txt 内容:

Flask

5. 运行本地 Flask 服务

app.py 中编写最简示例:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Hello, Flask + Ngrok!'if __name__ == '__main__':app.run(port=5000)
  • port=5000 为 Flask 默认端口,可自定义。
     

    在Ngork界面运行以下命令,将本地5000端口映射至公网:

    bash

    ngrok http 5000

    Ngrok将生成Forwarding字段(如https://abcd.ngrok.io),即外网访问地址。

  • 通过 PyCharm Run 配置或在终端执行 python app.py 启动服务


6. 启动 Ngrok 隧道并获取公网地址

在新终端(仍在虚拟环境或可执行 ngrok)中运行:

ngrok http 5000
  • 此命令将在控制台输出两个公网地址(HTTP 和 HTTPS),形如 https://xxxxxx.ngrok.io

  • Ngrok 会将外部请求安全转发至本地 5000 端口


7. 完整示例代码汇总

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return 'Hello, Flask + Ngrok!'if __name__ == '__main__':# 开发模式下可打开 debugapp.run(host='0.0.0.0', port=5000)
Flask>=2.0

8. 常见问题与排查

问题排查思路
Ngrok 报错 ERR_NGROK_6022重置 Authtoken:ngrok config add-authtoken ...;检查网络连通性
访问超时或 502确保 Flask 正在运行且端口一致;防火墙未阻挡;使用 app.run(host='0.0.0.0')
地址随机变更免费版地址非固定,可升级付费或在脚本中调用 Ngrok API 申请稳定子域

9. 结语

通过上述步骤,可在本地 PyCharm 环境中快速搭建 Flask 服务,并借助 Ngrok 实现临时公网访问,适用于演示、测试及远程调试场景。后续可集成 CI/CD、Docker 或自定义子域,进一步完善部署流程。
本思路实战项目记录:

搭建 Stable Diffusion 图像生成系统并通过 Ngrok 暴露到公网(实现本地系统网络访问)——项目记录 -CSDN博客

 扩散部署:
深度学习项目记录·Stable Diffusion从零搭建、复现笔记-CSDN博客
Stable Diffusion+Pyqt5: 实现图像生成与管理界面(带保存 + 历史记录 + 删除功能)——我的实验记录(结尾附系统效果图)-CSDN博客

SD + Contronet,扩散模型V1.5+约束条件后续优化:保存Canny边缘图,便于视觉理解——stable diffusion项目学习笔记-CSDN博客

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

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

相关文章

Ragflow、Dify、FastGPT、COZE核心差异对比与Ragflow的深度文档理解能力​​和​​全流程优化设计

一、Ragflow、Dify、FastGPT、COZE核心差异对比 以下从核心功能、目标用户、技术特性等维度对比四款工具的核心差异&#xff1a; 核心功能定位 • Ragflow&#xff1a;专注于深度文档理解的RAG引擎&#xff0c;擅长处理复杂格式&#xff08;PDF、扫描件、表格等&#xff09;的…

LeetCode[232]用栈实现队列

思路&#xff1a; 一道很简单的题&#xff0c;就是栈是先进后出&#xff0c;队列是先进先出&#xff0c;用两个栈底相互对着&#xff0c;这样一个队列就产生了&#xff0c;右栈为空的情况&#xff0c;左栈栈底就是队首元素&#xff0c;所以我们需要将左栈全部压入右栈&#xff…

postman 删除注销账号

一、删除账号 1.右上角找到 头像&#xff0c;view profile https://123456-6586950.postman.co/settings/me/account 二、找回账号 1.查看日志所在位置 三、postman更新后只剩下history 在 Postman 中&#xff0c;如果你发现更新后只剩下 History&#xff08;历史记录&…

微服务相比传统服务的优势

这是一道面试题&#xff0c;咱们先来分析这道题考察的是什么。 如果分析面试官主要考察以下几个方面&#xff1a; 技术理解深度 你是否清楚微服务架构&#xff08;Microservices&#xff09;和传统单体架构&#xff08;Monolithic&#xff09;的本质区别。能否从设计理念、技术…

【KWDB 创作者计划】_深度学习篇---向量指令集

文章目录 前言一、加速原理数据级并行(DLP)计算密度提升减少指令开销内存带宽优化隐藏内存延迟二、关键实现技术1. 手动向量化(Intrinsics)优势挑战2. 编译器自动向量化限制3. BLAS/LAPACK库优化4. 框架级优化三、典型应用场景矩阵运算卷积优化归一化/激活函数嵌入层(Embe…

跳跃游戏(每日一题-中等)

题解&#xff1a;定义一个变量&#xff0c;用来存储可以到达的最远位置。初始化为0。 然后对数组进行遍历&#xff0c;遍历开始的时候&#xff0c;先判断当前这个位置和最远位置谁大&#xff0c;如果最远位置比较大&#xff0c;那么就说明当前这个位置也能达到&#xff0c;就看…

第七篇:linux之基本权限、进程管理、系统服务

第七篇&#xff1a;linux之基本权限、进程管理、系统服务 文章目录 第七篇&#xff1a;linux之基本权限、进程管理、系统服务一、基本权限1、什么是权限&#xff1f;2、为什么要有权限&#xff1f;3、权限与用户之间的关系&#xff1f;4、权限对应的数字含义5、使用chmod设定权…

音视频小白系统入门课-2

本系列笔记为博主学习李超老师课程的课堂笔记&#xff0c;仅供参阅 往期课程笔记传送门&#xff1a; 音视频小白系统入门笔记-0音视频小白系统入门笔记-1 课程实践代码仓库&#xff1a;传送门 音视频编解码 可以通过ffmpeg -f avfoundation -list_devices true -i "&…

外卖“三国杀”开新局,饿了么已手握AI牌

【潮汐商业评论/原创】 01 新战役&#xff0c;新变量 外卖行业&#xff0c;又迎来了新一轮战役。 前有京东宣布斥资百亿进军外卖市场&#xff0c;后有美团宣布发布即时零售品牌“美团闪购”。双方在隔空秀肌肉、彰显自身实力的同时&#xff0c;行业巨头围绕本地生活服务的攻…

HAProxy 和 Keepalived 区别

HAProxy 和 Keepalived 是在构建高可用和可扩展Web服务时常用的两个开源软件&#xff0c;但它们的核心功能和目的有显著区别。 简单来说&#xff1a; HAProxy: 主要是一个 负载均衡器 (Load Balancer) 和 反向代理 (Reverse Proxy)。它负责将客户端的请求智能地分发到后端的多…

YOLO算法的革命性升级:深度解析Repulsion损失函数在目标检测中的创新应用

## 一、目标检测的痛点与YOLO的局限性 在自动驾驶、智能监控等复杂场景中,目标检测算法常面临致命挑战——遮挡问题。当多个物体相互遮挡时,传统检测器容易出现漏检、误检现象,YOLO系列算法尽管在速度与精度上表现优异,但在处理密集遮挡目标时仍存在明显短板。 ### 1.1 遮…

第一篇:Django简介

第一篇&#xff1a;Django简介 文章目录 第一篇&#xff1a;Django简介一、纯手写一个简易版的web框架1、软件开发架构2、HTTP协议3、简易的socket服务端4、wsgiref模块5、动静态网页6、后端获取当前时间展示到html页面上7、字典数据传给html文件8、数据从数据库中获取的展示到…

【笔记】CentOS7部署K8S集群

一、初始化&#xff08;所有节点机器都要执行&#xff09; 1. 关闭firewall防火墙 systemctl disable firewalld.service systemctl stop firewalld.service2. 关闭SELinux 临时关闭 setenforce 0永久关闭 vim /etc/selinux/config SELINUXenforcing 改成 SELINUXdisable…

Ethan独立开发产品日报 | 2025-04-22

1. Agent Simulate 用数千个数字人来测试你的人工智能应用。 Agent Simulate 让你在发布之前&#xff0c;能够在一个安全的环境中模拟和测试大型语言模型&#xff08;LLM&#xff09;代理。它帮助你调试行为、加快迭代速度&#xff0c;并降低生产风险&#xff0c;专为代理开发…

Photoshop安装与配置--简单攻略版

下载地址:Photoshop软件工具下载 安装完成后&#xff0c;即可运行Photoshop.exe&#xff1b;打开工具页面后&#xff0c;按照下面简单配置即可 1.编辑-》首选项-》常规 或者直接快捷键CtrlK 暂存盘&#xff1a;一定要设置为非C盘 2.性能 3.文件处理 以上配置比较基础&#xf…

新手村:正则化

机器学习-正则化方法 新手村&#xff1a;正则化 什么是正则化&#xff1f; 正则化&#xff08;Regularization&#xff09; 是一种用于防止机器学习模型 过拟合&#xff08;Overfitting&#xff09;的技术。它通过在模型的 损失函数 中添加一个 惩罚项&#xff08;Penalty Ter…

C语言 ——— 分支循环语句

目录 分支循环语句 单分支 多分支 switch 分支语句 牛刀小试 判断一个数是否是奇数 输出 1-100之间 的奇数 计算 n 的阶乘 计算 1! 2! 3! ... n! 在一个有序数组中查找具体的某一个数字 打印 100-200 之间的素数 求两个整数的最大公约数 getchar函数 和 putc…

Element UI、Element Plus 里的表单验证的required必填的属性不能动态响应?

一 问题背景 想要实现&#xff1a; 新增/修改对话框中(同一个)&#xff0c;修改时“备注”字段非必填&#xff0c;新增时"备注"字段必填 结果发现直接写不生效-初始化一次性 edit: [{ required: true, message: "请输入备注", trigger: "blur" }…

秀丸编辑器 使用技巧

参考资料 第II部〜知っていると便利な秀丸の機能 検索テキストファイルの16進表示について秀丸エディタヘルプ目次秀丸エディタ&#xff31;&#xff06;&#xff21;集(第9.6版)&#xff08;HTML 形式&#xff09;テンプレート&#xff08;Ver9.43対応版&#xff09; 目录 零…

【期末复习-考试】软件质量测试与保考试题库(选择题+填空题)

软件质量测试与保证考试题库&#xff08;选择题 填空题&#xff09; 一、软件测试基础理论&#xff08;200 题&#xff09; &#xff08;一&#xff09;选择题&#xff08;100 题&#xff09; 软件测试的根本目的是&#xff08; 发现软件中的缺陷&#xff09;A. 证明软件无…