个人站架构思路 置顶

目的

从业网站后端开发有个7-8年了,加上去年和今年一直在学习运维和前端方面的技能,想记录下一个网站从无到有的过程和一些进阶玩法。 一方面想着从成本出发核算下一个网站的成本,一方面从技术出发探讨交流下个人站长的心得。帮助初学者了解建站大体流程,也和诸位大佬交流,欢迎留言批评。

为什么建站

做网站总要有点动机吧,我主观认为主要是

  1. 兴趣爱好
  2. 门户展示
  3. 赚钱

我的动机是赚钱,现在是移动互联网的时代新站长盈利的很少了加上百度的恶心算法其实靠网站赚钱很难。能赚钱的网站有共同的特性 1.解决了某个问题 2.时间权重很高。我想的也很简单走第一的一条路脑子比较笨试试第二条积累时间权重吧。

一个网站需要什么

我有几个个人站点比如TOL在线工具个人博客VPS主机测评。它们都是偏向页面展示型的应用,不像视频站点需要很大的存储和带宽或者AI站点需要一定的算力,我的成本大致如下。

名称 价格 是否必要
域名 com首购75
服务器 2C2G 99/年
CDN 白嫖
WAF 白嫖
前端&&后端代码 自己写或者下载

如果你是第一次建站的朋友其实建站成本也就是买域名的75块钱+服务器的费用一年100左右就能搞定,综合成本200块。这是最低的成本,当然也有进阶玩法我实际的费用如下。

名称 价格 备注
域名 5个 * 续费65 325年,65续费算上了无忧-20的卷
无忧-上海 1000+280+40+5+10 2032-08-25 共100月 13.35 单月
无忧-广东 850+10+5+10=875 2029-8-27 共64月 13.7单月
198/3年-上海 198 到期抛掉

我是按长期持有计算的,成本没法按年罗列出来给大家做参考。

其中需要说明几点,

  1. 域名一定一定一定要用com,我吃过亏。它的百度收录周期会相对较短,给到的权重比其他结尾的高很多。
  2. 服务器选大厂的,数据会更有保证,线路也更好。恰个饭(有AFF)
    腾讯云轻量服务器

轻量云活动

  1. 拿到服务器别直接解析域名到主机,学会隐藏服务器真实地址。

个人站的架构

看个人兴趣或者是需求,个人站可玩空间相当大。2018年我那时候运维方面的知识比较匮乏,加上当时服务器比较贵我选择的是服务源码编译安装一个LNMP环境。2020年开始出了轻量云加上各个服务器厂商新用户都有比价低的价格,我学习了Docker把环境做成了镜像然后年抛用docker-composer进行容器编排。2023年开始因为行业不景气想养几个站作为以后的出路,手上有了4个站以后可能会更多频繁迁移感觉太麻烦了所以想着池化服务器资源上了k3s。

我个人站点的架构演化同步了时代发展,单体架构 -> 集群架构 -> 容器化 -> 容器化编排。因为体量小所以跳过了集群化但是又想感受容器化编排的便利。使用下来最直观的感受如下表。

架构方式
单体架构 学习成本低源码安装一把梭 迁移麻烦,没容错
docker-composer编排 打个tar连同环境一起迁移 迁移还是太麻烦,依旧没容错
k3s编排 1. 安装方便池化资源,申明YAML写好选Node就好 2.能自动迁移有容错 3.服务探针保活一绝 有学习成本

Ingerss

Ingerss选用k3s默认的traefik,它的web页面比较友好有提供很多plugins,甚至自己都可以去基于它提供的GO框架去开发plugins好评。

tol在线工具traefik

监控加上博客杂七杂八的我的集群上有28个Router,Middlewares用的比较简单主要就下面这些。

traefik中间件

ban AU的plugin-blockuseragent,fail2ban拿来主要做流控,然后就是偷懒不想写用户系统用basicauth挡了下后台的管理功能

节点

node
节点有2个RN的国外小鸡,用来看下世界的多彩。上海的125无忧是主节点,国内站一般全丢在了广东无忧125上,集群国内全系列都选用了腾讯的轻量云目前性价比感觉比较合适。同时也上了哪吒的看板方便交流(装逼)

node

有一台VPS是之前198买的,现在拿来做waf出口用后面会专门讲下我怎么抖机灵做安全的。

网络

k3s需要异地组网,这里选择了国外的方案tailscale它安装方便提供了可视化的管理UI。我在每个机器上都安装了tailscale让他们同时内网通信。这样做还有个更为主要的目的,安全!后面也会细说。

部署脚本

为了方便修改和二次使用尽量避免了用k8s命令式的管理方式,全部用了声明式并且提交到了GitHub私有仓库,这样我既可以查看每次修改可以回溯配置又可轻松的更换节点不用重复去敲打命令

配置文件

低配高可用

其实我这样搞一套也算不上高可用,顶多是个双活。正规的商业化是需要做主节点多活的,受制预算简单搞了下。

  1. 使用存活探针启动后60秒,每过90秒去看下对应接口是否可用,不可用就自动重新拉起POD
    1
    2
    3
    4
    5
    6
    7
    8
    9
    livenessProbe:
    httpGet:
    path: /v1/get-all-tool
    port: 8011
    httpHeaders:
    - name: ping
    value: tol-api
    initialDelaySeconds: 60
    periodSeconds: 90
    2.调整亲和度,在广州节点优先部署POD如果发生故障自动迁移到国内其它机器上
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    affinity:
    nodeAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 90
    preference:
    matchExpressions:
    - key: kubernetes.io/hostname
    operator: In
    values:
    - guangzhou-125
    - weight: 10
    preference:
    matchExpressions:
    - key: haiwai
    operator: In
    values:
    - "false"

安全

在我看来网站安全主要防止以下几种攻击手段:

  1. DDOS
  2. CC
  3. 渗透
  4. 端口扫描后的指定服务入侵

CDN

我的防范手段也比较粗暴,主要思路是隐藏常用服务器IP,全部套用CDN。国内大厂CDN既可以提升访问速度又可以隐藏服务器真实IP各个节点也稳定,但是遇见剑皇脚本往往会有点肉痛。小厂服务器价格便宜甚至免费可以防止CC和DDOS但是节点不稳定三天两头挂掉,我的用法是这样的。

名称 场景 备注
百度云 日常使用 严格设置报警和服务中断阈值
小厂云 备用 当百度云触发阈值时切换
CF 备用 当小厂把我当成麻烦时切换

长亭WAF和防火墙

我会拿一台月抛或者年抛机单独安装WAF,这台WAF服务器是我集群的统一出口在我除了这台waf外各个机器上防火墙是关闭了全部对外端口的下图是我腾讯轻量云防火墙的截图。
腾讯云防火墙
没错一个对外端口都没有,集群间的相互通信全走的tailscale打洞过后的内网,自己维护ssh连接也是一样走了内网。

CDN可以杜绝大部分DDOS和CC WAF则是杜绝了HTTP/HTTPS层面的渗透,在反制很多开源软件漏洞后门较多的场景很适用。这里我用的是长亭雷池,长亭是国内比较早的几批做安全的社区版本是免费开源的。技术发烧友可以自己去魔改功能GitHub上有源码传送门,目前我最想改的是它的403页面,别问我为什么懂的都懂系列。

长亭雷池waf

选waf其实有一定的讲究,一是页面清新功能没有二义性,二是词法解析语法解析的算法性能高效,三是规则完整不需要自己去二次录入。
长亭本身就是做安全出生规则库能满足我的要求,在实际使用下来性能也还不错是同款产品中比较得劲的了。

常见防护

我会在没套CDN服务器裸X期间配置访问限制,在访问设置的基础上嵌套上人机验证。

访问限制

Mysql权限

Mysql账号授权是最小权限原则,给予每个项目单独开通了对应账号只能操作当前项目下的库,并且都没有DDL权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
SELECT
user AS '用户名',
host AS '主机',
db AS '数据库',
Select_priv AS '选择权限',
Insert_priv AS '插入权限',
Update_priv AS '更新权限',
Delete_priv AS '删除权限',
Create_priv AS '创建权限',
Drop_priv AS '删除权限',
Grant_priv AS '授权权限',
References_priv AS '引用权限',
Index_priv AS '索引权限',
Alter_priv AS '修改权限',
Create_tmp_table_priv AS '创建临时表权限',
Lock_tables_priv AS '锁定表权限',
Create_view_priv AS '创建视图权限',
Show_view_priv AS '显示视图权限',
Create_routine_priv AS '创建存储过程权限',
Alter_routine_priv AS '修改存储过程权限',
Execute_priv AS '执行权限',
Event_priv AS '事件权限',
Trigger_priv AS '触发器权限'
FROM
mysql.db;

账号授权只给了内网IP。

这样做的好处是即使我代码有问题不慎丢失了配置文件也不至于被脱裤或者被删数据。

蜜罐

我的waf会裸奔一周左右时间让类似fofa的网络搜索工具收录一段时间,他们拿到的IP其实是我空余不用机器的IP或者是waf的IP。然后装上了微步的HFish微步在安全行业也比较出名,这台服务器暴露了很多弱点,是给有一定黑客技术的朋友练手用的。

同样的这台机器的防火墙我也截图了下来

腾讯轻量云防火墙看板

在蜜罐配置好后我会删掉HFish的固定端口4433,这样可以迷惑另一部分聪明一点的同学。

蜜罐配置

这些开放端口全是蜜罐,虽然22端口的SSH不是但仅能秘钥连接。

如果你想做甚至可以在饵料里面下毒,搞个rm -rf 什么的。
蜜罐看板

定期备份

代码: 在阿里云效Git提交代码部署,代码是实时备份的。
系统: 腾讯轻量云提供了免费的快照,我会定期去备份
腾讯云快照
数据库: nas上面写了个脚本每天去备份下数据库
数据库备份

安全总结

一套下来我的应对思路是下表

名称 应对方案
CC 1.CDN限制频率 2.waf限制频率拉黑IP
DDOS 隐藏真实IP
渗透 1.防火墙过滤端口 2.蜜罐迷惑下
指定服务入侵 防火墙过滤端口,服务不对外

还有最好用的方式是: 少一点戾气别和网上的好哥哥们发生争执,要友爱包容理解。从根本上解决问题!(手动狗头)。

看板

上了2个看板,一个是前面提到的服务器看版主要查看服务器状态,另外一个是哪吒能在服务不可用的时候发通知提醒。同样的也是可以交流(装逼使用)

监控

图穷匕现

  1. 买台服务器?
    腾讯云轻量服务器有AFF

轻量云活动
2. 关注下UP主
https://space.bilibili.com/65556257
3. 在线工具也很不错
https://www.tol.vip/

置顶

为什么会写博客

开始写代码最大的动力就是兴趣初中就喜欢,未曾想到自己的兴趣踩到了时代的红利。

兴趣变成了别人眼中赚钱快的行业,越来越多专业的优秀的985 211大佬涌入了这一行。

诚然专科毕业的我在这一行中并无竞争优势,雨中没伞的孩子只有跑快一点,这个博客的初衷也是

提醒我自己付出的时间和得到的回报应该是成正比的。学习是反人性的,我希望我自己是以学习为

习惯并不是为目的的人,我想记录下我接触过的知识怕遗忘它们,同时也想多年过后对自己说一句

值得。

现状

  • 7年的沪漂游民,经常为待在上海还是重庆做人格分裂的左右互搏。

  • 微小公司技术TL, 5年左右 10 - 20 人 团伙管理经验。靠吃平台成长红利和软性技能赚钱。

  • 很尴尬的瓶颈期,达到了大多目前PHP从业者的绝望期(PHP的上限本来不高,现在大环境更是不好 加上诸如Go java spring 蚕食,泪目)

  • 一个被催着要小孩的中年男人

技能

语言 熟练程度(满分5分) 描述
php 4 能写出工业级产品,设计原理和源码能简单知道点
go 4 能写出工业级产品,设计原理和源码能简单知道点
html 3 给时间就能做,效果和兼容性不是很好
js 3 给时间就能做
python 2 看着文档能干活
c 1 能看懂能改改用,生态不熟悉
java 1 能看懂能改改用,生态不熟悉

未来计划

语言 计划 优先级 补充
html、js 系统性学习 p6 第一梯队,为自己的商业创业项目做准备能写出漂亮的效果
java 系统性学习 p5 第一梯队,一开始学它现在可能收入翻倍了
go 1.阅读更多的开源项目 2.费曼学习录一套GO的基础课程 3.写自己的开源 p4 不会放在第一梯队但是会持续提升
php 放弃提升 p1 市场价位不高,后续乏力

《恶意》

书皮

恶意

感受

东野圭谷代表作品之一,故事情节环环相扣。和白夜行一样,答案就在封面上。读了它过后其实感觉蛮复杂的它描绘了人性中的恶,这种恶是由嫉妒引起,恶的来源莫名其妙单纯是别人比主人公更加优秀,甚至那人是帮助过自己的人。最可怕的是这本书其实也映射在了生活中,恶意的产生其实是没来源没理由的。和我们古代的儒学派中提到的中庸其实类似,“无过无不及”才能合群,也才能免遭妒忌。

《饮食术》

书皮

饮食术

感受

日本科学家对健康方面的研究是比较严谨的,这本书从糖分的来源到糖分摄入过多对人体的危害都做了全面的总结。作者的观点糖是不健康的根本,它引起了胰岛素的分泌紊乱诱发了糖尿病。并且糖也是肥胖和三高的诱因之一它的危害大于油脂。并且作者给出了合理的膳食建议,作者认为要远离人们二次加工的适口垃圾糖原,并且大米和面条也是糖份主要的摄取来源。以前老辈说的先吃菜后吃饭在本书中也得到了一个合理的解释。

《人生的智慧》

感受

人生的智慧

读这本书的时候我的心里活动是起起伏伏的,叔本华其实是个商人和富二代,但是他全篇都是对钱不感兴趣的言语难免让人感觉是在凡尔赛,有一种饱汉不知我饥的味道。然后回头一想如果他没钱可能我又会想他是在自我安慰或者在发扬阿Q精神。

全书分为了3个部分分别是

人是什么,第一部分主要表达的是一个人追求真我的过程作者认为健康是第一位的人和人是平等且独立的财富只是外在多寡也仅仅是每个人扮演社会地位的不同角色罢了。人生两大苦。物质匮乏和精神空虚,如果精神富裕的人即使物质匮乏也能享受幸福的人生

人拥有什么, 作者对财富的认识,作者认为聪明的富人会利用财富建设壁垒持续的保持富有,而愚蠢的富人或变富有的穷人会过掉挥霍反贫。

在他人眼中是什么样的, 作者用较大的篇幅讥讽了当时的骑士精神是野蛮且无理的,作者认为的荣誉不是被辱后的决斗,而是站在全人类文明角度出发对的领悟和对作品的打磨。

读完全书其实已经从最开始的不屑转换成尊敬了,叔本华的思想是超越时代的,在他那个年代悟出来的到现在依旧适用并且一个个发生的事也不断的在佐证。

《责任病毒》

一张图

感受

这本书条理清晰内容实用,主要从 什么是责任病毒,危害,解决方法,实际应用等几个方面展开叙述。它让我认识到责任病毒的本质其实是人的底层思维方式是打或者逃,责任病毒的机理就是承担过多的责任或者逃避责任。这本书把生活中的问题用框架和模型的模式梳理了出来,用词也很专业。它介绍了产生责任病毒的4个主观价值观,和对应的4个解决模型。

幕布整理:https://www.mubu.com/doc/3bDQlkdRM64

《HTML5与CSS3权威指南》

一张图

感受

书壳和出版社让我误认为是本很经典的书,列举了一些HTML5和ES6的语法有的是已经过时的。不是很建议去看它
1.列子很差劲
2.贴了大量的代码感觉像是去凑数,前面一个列子后面再复制几次给你讲里面的意思(注释它不就能搞定吗?)。
3.还分上下2本武功秘籍 :-(

同时推荐下正在读的 JavaScript权威指南(第7版)和 JavaScript高级程序设计 第4版质量会高出很多,投入时间会有更多的回报。

《小狗钱钱2》

一张图

感受

小狗钱钱1是讲的理财,理财小白读了1同时也买了第二本。发现这一本不是讲金融知识了,同是少儿读物,这本主要讲的是7个品格用故事的形式带入(友好亲和,勇于承担,善待他人,给予帮助,感恩之心,勤学不缀,值得信赖)。以后有了小孩1,2两本都会给孩子读读写得蛮不错的。这本书里面那个天天圈的故事让我一个30岁的大人都感觉颇有收获。

《曾国藩传》

一张图

感受

曾国藩是樊登读书里面推荐的,听他说了一本曾的正侧面感觉意犹未尽读了这一本。他一生毁辱参半,这本书写的他一生,出生时的异像,少时的平庸,中年时的十年七迁,晚年时体现出的圣人之境。惊叹他的拙诚,结硬寨,打呆仗,和胸怀,同时也感叹他的生不逢时为那个满目疮痍的清政府续命了几十年。并且野史上说他纵容弟弟曾国荃在太平天国后对南京进行迫害烧杀个人感觉他的出发点并不是为了百姓而是宗族传承。

《曾国藩的正面与侧面3》

一张图

感受

张宏杰的曾国藩系列有3本,第3本是写的他周围的人

胡林翼
当时朝中的润滑剂,调节曾国藩和左宗棠的关系。作者感觉他和曾的性情和办事风格是互补的。用湘军之父和湘军之母来评价二人。

左宗棠
左宗棠在本书的描述比曾国藩有天赋,曾国藩是拙诚和努力,左宗棠是天赋。左的晋升依附了曾,但是可以独当一面时又背叛了湘军。书中作者的介绍是瑜亮情节

李鸿章
曾把李当成接班人来培养的,他是中国洋务运动的一代目。与左不同李更加尊敬曾,把他当做自己的良师。李的淮军是曾解散湘军后的后手,曾解散湘军原因是怕朝廷的猜疑和感到湘军已经有了暮气。

沈葆桢
林则徐的外甥女婿在晚清个人感觉他算最为百姓生死着想的官,江西沦陷他为了明志稳人心以闺中人为质。与曾争响也是为了百姓,在书中角度是不从大局出发,贪图名誉的人。个人感觉书中描述的贪名誉喜清贫有点矛盾。

李元度
书中有张小眼睛的图,李元度是一个书生的形象,曾一生三次自杀中有一次就是他救的。重情谊讲气节但是不会带兵打仗有点莽,看着都气。

请我喝杯咖啡吧~