开发golang程序和进行内网穿透,作为微信公众号服务器

一直想部署一个私有服务,平常在外的时候可以为自己提供服务。
私有服务的好处是,可以根据自己的需求,开发程序,提供个人定制化的服务

服务器的选择

  1. 阿里云、腾讯云等
    • 优点:使用方便,只要有网络就可以连上
    • 缺点:有持续产生的费用,对于个人服务来说,平常几乎都是闲置,性价比很低
  2. 自建服务器
    • 优点:总体成本低,购买服务器后,后续只有有电有网就行,无需其他额外成本
    • 缺点:需要外网能访问(需要绑定外网ip或者代理接入转发)
  • 本着能省就省的原则,最终还是采用了方案2 :上淘宝买一个一百多块的小型服务器!

如何使外网环境能访问到服务器

  • 服务器有了之后,通过网线连接到家庭网络即可正常上网了,那么外网环境怎么访问呢?
    通过一番研究之后,最终决定通过在服务器上部署ngrok代理来实现,不知道啥是ngrok的自行搜索即可

编程语言选择

  • 本人平常工作都是使用Java,但经过一番考虑之后,我最终选择了Go作为开发语言
  1. 想学习,通过实践熟悉
  2. 足够轻量,打包成一个二进制文件即可,特别适合这种低配版服务器

前端终端选择

  • 平常在外都是使用android的手机,但是作为后端开发,本人只会android的hello world。
    有考虑使用网页,但是现在前端很卷了,用传统的html+js开发,以我的水平开发出来,至少前期体验也一般。

  • 经过一番考虑,就在决定直接通过个人的微信公众号来作为前端,在公众号后台配置自己的服务器地址即可

微信通知的实现

  • 平常自己有一些个性定时任务,需要通知消息到自己,使用微信来通知是最好的,毕竟大家目前都是微信的重度用户了。

  • 但现在微信对公众号的通知限制越来越多了,最后我选择通过发送邮件的方式来实现。在微信配置QQ邮箱接收邮件通知即可。

服务架构

外网环境下如何进行服务部署更新

  • 平常在家庭网络下,开发Go程序,本地编译打包成二进制文件,上传到服务器更新程序即可
    在外网环境下,使用花生壳等端口映射软件即可。我使用花生壳映射端口后,就可以通过ssh登录到家里的服务器,接下来就可以为所欲为了。

部署流程

结论总结

  • 家庭网络 + 小型服务器 + Go程序 + ngrok + 微信公众号 + 邮箱通知 + 花生壳

Reference