零成本个人公网网站搭建全流程(服务器搭建+内网穿透+绑定域名)
导言:
一个基础的网站由三部分构成:
1、公网域名
2、网页内容(html前端)
3、网站服务器(处理访问请求,返回数据的后端的运行环境)
例如百度网站
可以直观看到的是域名www.baidu.com,和
网页内容(heml)
看不到的是后端运行的
百度网站服务器
我们要实现自己的网站,能让他人任意访问,就需要具备相同的构成。
当然,不用公网域名也可以,那样就是局域网内的网站,实际作用就很受限了
域名获取
付费方案:在阿里云万网购买喜欢的域名
免费方案:注册NATPP网站,获取免费域名(域名三天到期,可免费再次申领三天,可无限续杯)
根据需求选择web协议
保存
authtoken
和域名至此,我们获得了可以分享给他人访问的域名
内网穿透
修改内网穿透配置文件
使用本地配置文件config.ini - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
运行内网穿透软件natapp.exe
上图是成功运行界面
搭建网站服务器
1. Python Web 服务器示例(Flask)
假设 Natapp 映射的是
5000 端口
,你可以写server.py
: from flask import Flask, render_template app = Flask(__name__) @app.route("/") def home(): # Flask 会去 templates/index.html 找文件并返回 return render_template("index.html") if __name__ == "__main__": # 用 0.0.0.0 监听所有地址,端口 80(Natapp 转发用) app.run(host="0.0.0.0", port=80)
安装 Flask:
pip3 install flask
运行:
python3 server.py
此时本地的 80端口上已经有网站了。显示的是本地index.html网页文件
网页内容html前端:
在此我就只是展示几段文字,一个图片,一个跳转按钮。由于图片是本地图片,使用预览并不能显示
图片
运行效果
web服务器 | 内网穿透软件 |
电脑访问效果 | 手机访问效果 |
---|---|
![]() | ![]() |
4. 注意事项
- Natapp 免费版域名会变,如果你想固定一个域名,需要升级到付费版。
- 你的 Flask 程序必须一直运行,Natapp 客户端也要一直运行,否则外部无法访问。
杂谈
目前使用Windows PC个人电脑运行网站部署,但是个人电脑耗电较高,可以使用性能较高,稳定的做法,租个云服务器来跑网站。
但我有卡片电脑——泰山派(类似树莓派),运行linux系统,搭建方法基本一致,搭建运行python web服务器,运行Natapp内网穿透(linux版本)
也可以手机下载Termux,配置Ubuntu环境,运行python服务器和Natapp内网穿透(linux版本)
非常的自由哈哈
预想中linux卡片电脑弄个网页挂载个数据库,绘制ui界面,配合MQTT或者WebSocket,加个esp32s3+lvgl+检测传感器数据上传到网站显示,做个物联网云平台,来当毕设,感觉会挺有意思
如果各位大佬觉得该文章对您有帮助,有意思,恳请点点左下角的推荐该文
,不胜感激!
基础代码
服务器
python server
# from flask import Flask # app = Flask(__name__) # @app.route("/") # def home(): # return "<h1>Hello! 这是pyc的 服务器</h1>" # if __name__ == "__main__": # # 修改端口为 80,与 Natapp 配置匹配 # app.run(host="0.0.0.0", port=80) from flask import Flask, render_template app = Flask(__name__) @app.route("/") def home(): # Flask 会去 templates/index.html 找文件并返回 return render_template("index.html") if __name__ == "__main__": # 用 0.0.0.0 监听所有地址,端口 80(Natapp 转发用) app.run(host="0.0.0.0", port=80)
网页html
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>我的 Flask 网页</title> </head> <body> <h1>Hello! 这是 xxx的服务器 Web 页面</h1> </body> </html>
Natapp 配置文件config.ini
#将本文件放置于natapp同级目录 程序将读取 [default] 段 #在命令行参数模式如 natapp -authtoken=xxx 等相同参数将会覆盖掉此配置 #命令行参数 -config= 可以指定任意config.ini文件 [default] authtoken= #对应一条隧道的authtoken clienttoken= #对应客户端的clienttoken,将会忽略authtoken,若无请留空, log=none #log 日志文件,可指定本地文件, none=不做记录,stdout=直接屏幕输出 ,默认为none loglevel=ERROR #日志等级 DEBUG, INFO, WARNING, ERROR 默认为 DEBUG http_proxy= #代理设置 如 http://10.123.10.10:3128 非代理上网用户请务必留空
这一切,似未曾拥有