当前位置: 首页 > news >正文

如何使用vscode启动Flask并实现无公网IP远程访问内网服务

文章目录

    • 1. 安装部署Flask
    • 2. 安装Cpolar内网穿透
    • 3. 配置Flask的web界面公网访问地址
    • 4. 公网远程访问Flask的web界面

本篇文章主要讲解如何在本地安装Flask,以及如何将其web界面发布到公网进行远程访问。

Flask是目前十分流行的web框架,采用Python编程语言来实现相关功能。较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。

另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

轻量级web开发框架:Flask本地部署及公网远程访问

1. 安装部署Flask

本篇文章代码使用 Python3 运行

安装环境:需要在电脑上安装 Python3 和 pip3。建议安装最新版本

检查是否有安装了pip的可用Python,查看Python和pip版本:

C:> py --version
Python 3.N.N
C:> py -m pip --version
pip X.Y.Z from ... (python 3.N.N)

使用pip安装和更新:

$ pip install -U Flask

创建环境:

conda create -n FLASK python=3.10

激活环境:

conda activate FLASK

创建项目目录:

mkdir FLASK

进入到创建的目录:

cd FLASK

在当前目录启动VS Code:

code .

在VS Code里 FLASK下新建一个文件,名字为 app.py

粘贴下面命令,并保存

# save this as app.py
from flask import Flaskapp = Flask(__name__)@app.route("/")
def hello():return "Hello, World!"

image-20231120164830537

在下方TERMINAL里输入ls查看目录位置

image-20231120165319864

打开一个新的命令

输入cd空格加上刚才vs code的目录,例如

cd C:\Users\wang\dev\python\flask

输入ls查看目录

image-20231120165938767

启动Flask

flask run

打开一个新的浏览器,输入http://127.0.0.1:5000/,进入到 HelloWorld的web界面。

image-20231120170348720

2. 安装Cpolar内网穿透

上面在本地成功部署了Flask,并局域网访问成功,下面我们安装Cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装步骤:

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问9200端口 即:【http://局域网ip:9200】,使用cpolar账号登录(如没有账号,可以点击下面免费注册),登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

image-20230831171159175

3. 配置Flask的web界面公网访问地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个Flask的cpolar公网地址隧道:

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:5000 (局域网访问的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择China Top
  • 点击创建

image-20231120171035750

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https

image-20231120171152780

4. 公网远程访问Flask的web界面

使用上面的cpolar https公网地址在任意设备的浏览器访问,即可成功看到Flask的web界面,这样一个公网地址且可以远程访问就创建好了,无需自己购买云服务器,即可发布到公网访问。

image-20231120171325137

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。

我一般会使用固定二级子域名,因为我希望将网址发送给开发人员分工合作,小型团队在短时间内就可以使用固定的公网地址完成功能丰富的中小型网站或Web服务的实现。它是一个固定、易记的公网地址(例如:Flask.cpolar.cn)因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20231120171616938

保留成功后复制保留成功的二级子域名的名称

image-20231120171639329

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20231120171707486

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20231120171747421

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名

image-20231120174238360

最后,我们使用固定的公网地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了。

image-20231120174301657

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 解锁金融数据中心场景,实现国产化AD替代,宁盾身份域管为信创电脑、应用提供统一管理
  • Maven POM元素解析
  • Rust 实战练习 - 9. 文本编码,URL编码,加密解密
  • 汽车EDI:如何与奔驰建立EDI连接?
  • pta L-007 念数字
  • LeetCode热题Hot100 - 有效的括号
  • Golang | Leetcode Golang题解之第17题电话号码的字母组合
  • SQL SERVER 备份
  • jenv实现mac下多版本jdk管理以及切换
  • 【AcWing】蓝桥杯集训每日一题Day14|Flood Fill|洪水灌溉算法|DFS|并查集|687.扫雷(C++)
  • Python读取Excel根据每行信息生成一个PDF——并自定义添加文本,可用于制作准考证
  • 一篇文章了解php7和php8新特性
  • 鸿蒙南向开发:制作【智能儿童手表】
  • java实现API服务及请求客户端
  • Utilize webcam to capture photo with camera
  • 【comparator, comparable】小总结
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Javascript弹出层-初探
  • JS函数式编程 数组部分风格 ES6版
  • Js基础知识(一) - 变量
  • js算法-归并排序(merge_sort)
  • js写一个简单的选项卡
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • magento 货币换算
  • MobX
  • Mocha测试初探
  • Promise面试题,控制异步流程
  • Python socket服务器端、客户端传送信息
  • Python_网络编程
  • python3 使用 asyncio 代替线程
  • Python实现BT种子转化为磁力链接【实战】
  • React Transition Group -- Transition 组件
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Terraform入门 - 1. 安装Terraform
  • use Google search engine
  • 代理模式
  • 记录一下第一次使用npm
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我建了一个叫Hello World的项目
  • 找一份好的前端工作,起点很重要
  • 函数计算新功能-----支持C#函数
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​人工智能书单(数学基础篇)
  • ​什么是bug?bug的源头在哪里?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #{} 和 ${}区别
  • #java学习笔记(面向对象)----(未完结)
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • $(selector).each()和$.each()的区别
  • (09)Hive——CTE 公共表达式
  • (31)对象的克隆