解决博客的稳定性困恼

Scroll Down

本文关键字:

  • frp内网穿透(群晖、华硕路由及公网主机)
  • Docker安装mysql
  • Docker安装centos

困扰

之前自己博客运行方式为:mysql数据+Halo博客程序+nginx反向代理服务器安装在同一台"公网主机",通过配置及域名解析将 "www.liurain.com" 的访问请求发送到"公网主机"的80端口,nginx再将80端口的请求内容转发给博客程序进行处理响应。这是目前相当普遍、成熟且稳定的方案。

但是用惯自己笔记本和PC动辄8G、16G的内存,毫无顾忌的想开啥开啥,平时项目启动、调试也未曾考虑过内存吃紧的问题,偏偏这回购买的"公网主机"给我不大不小的困恼:512MB的内存支撑起上面的3个程序的稳定运行难度不小,基本上每天网站都会因为内存溢出导致程序挂掉无法访问,然后看着"公网主机"控制台上通红的内存占用情况显示条,硬着头皮的重启机子、重开程序。

期间还进行过"修改博客程序的启动参数来改善内存占用"、"通过设置定时任务每天两次进行博客程序的重启",无奈都没啥鸟用。趁着这次"被逼无奈下的黑群晖升级"的调整,也一并把改善博客稳定性这事解决了!

处理

最初思路

之前有浏览到"docker安装mysql"的内容,家中NAS的群晖系统也刚刚升级过,因此计划把"公网主机"上的mysql数据库移至NAS上用Docker方式运行,这样数据库与博客程序分离,安装在不同机子上,减轻"公网主机"的内存占用问题。

唯一觉得将会成为阻碍的就是外网访问内网的问题:

先前使用华硕RT-AC88U路由刷了集成"koolshare - 软件中心"的梅林固件,然后在软件中心安装"aliddns"插件并申请10年期限的top域名,进行插件配置以及路由端口转发设置后即可通过自己分配好的二级域名访问路由、NAS(相关教程-"零基础小白Aliddns插件设置教程")。

这种方式在去年底不知什么原因无法继续使用,也因为没有很强烈的内网穿透需求而去尝试解决这个情况。如今博客程序要运行就必须连接内网NAS上的mysql数据库,内网穿透势在必行。

百密一疏

按思路开始尝试自己设想的方案:

  1. 安装mysql数据库("群晖docker安装mysql教程"),配置密码、容器端口与本地端口映射等内容后,在连接内网的情况下打开"Navicat"连接NAS上的mysql,完美连接并将远端的数据迁移至本地。

  1. 内网可以访问mysql,就差外网连接mysql咯,索性华硕路由本身可操作性强加之第三方插件都能实现内网穿透功能。先尝试在路由上执行“全功能阿里云域名解析脚本”,也在路由上设置好端口转发,查看路由器的执行日志发现域名解析已经生效,可输入"域名:端口"仍旧无法访问,感觉和"aliddns"插件遇到的是相同的问题!遂换了另一种流行方案----frp内网穿透,根据"服务器安装配置frp内网穿透教程"将frp的服务端安装在"公网主机"上,华硕路由中则安装frpc客户端,不断的尝试配置之后终于实现内网穿透功能。

  1. 在博客程序中配置好实现内网穿透的mysql连接地址,之后重启程序。然后输入博客地址:www.liurain.com,访问正常!至此以为一切稳定妥当,无后顾之忧!
  2. 登录博客的后台页面,在仪表盘面板会时不时的弹出"服务异常"的警告,点击"文章"-->"所有文章",发现文章列表怎么都刷不出来。查看博客日志发现经常有连接超时的错误,使用"Navicat"将连接配置中原来mysql的内网ip改为完成穿透的外网ip,登录成功后对几张表的“打开”操作都正常执行但能感受到些许卡顿,直到打开存放文章内容的数据表时,发现本应很快展示的内容竟然等待了5s以上的时间才加载出来。难道frp内网穿透对流量有限制?又或者因为公网主机在国外导致的访问延时?

另辟蹊径

一阵尝试依旧没找到通过配置优化网络传输的办法,既然博客程序与mysql数据库之间因为在不同内外网主机的缘故导致网络传输的桎梏,那我为啥不能把博客程序也迁移至Nas上,将公网主机作为一个域名解析指向的跳板?这样所有关键程序都在本地,性能、存储空间、数据安全性都掌握在自己手里更是没有后顾之忧,最重要是能根本解决网络传输的问题!

按照"群晖NAS中通过Docker安装CentOS并搭建宝塔控制面板"中的步骤安装好CentOS 7,再根据"使用 CentOS 部署 Halo"部署好博客程序,开放对应端口之后在内网进行访问,操作流畅性极度舒适,原来的卡顿与服务异常迎刃而解。


最后就是"公网主机"80端口的调整:关停原来的nginx服务,将frp的Http端口改为80,Nas中的frpc配置添加有关博客程序的内容及域名指向,重启确认配置生效。地址栏输入: "www.liurain.com" ,一通胡乱操作后,舒坦如期而至!!!