零成本个人公网网站搭建全流程(服务器搭建+内网穿透+绑定域名)

零成本个人公网网站搭建全流程(服务器搭建+内网穿透+绑定域名)

导言:

一个基础的网站由三部分构成:

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

python 复制代码
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:

bash 复制代码
pip3 install flask

运行:

bash 复制代码
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

python 复制代码
# 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

html 复制代码
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>我的 Flask 网页</title>
  </head>
  <body>
    <h1>Hello! 这是 xxx的服务器 Web 页面</h1>
  </body>
</html>

Natapp 配置文件config.ini

txt 复制代码
#将本文件放置于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 非代理上网用户请务必留空