我的个人网站软件架构

dev 2022-06-17 22:57:53 #软件架构 963

不知道为什么,一个整天和技术打交道的 geeker,他的博客却是有关情绪与生活。

最近有蛮多朋友问我有关这个网站是如何做的,某些技术点是如何实现的,复刻的方法有没有走弯路等等。鉴于当时对于这些问题的回答都较为片面,所以打算写一篇文章来阐述有关这个网站的开发历程,也算是有了第一篇和技术有关的博文。

开发历程

2022 年 3 月底,随着文件夹的新建,我的个人网站正式从 0 开始了建设,皆基于平日闲暇时间开发。后端为了方便选用的 php8,也确实有不少性能上的改进。

首个版本于同年 4 月的第一天,正式上线,当时仅有首页、博客和关于我,并全是静态内容,不含后端。随后,在 4 月的第三天我上线了用户及评论系统,支持用户注册、登录、找回密码,以及评论。采用前后端分离架构,通过 AJAX 通信。

随后,由于当时大火的 MBTI 测试,我开始打算在自己博客上开发一个九型人格的测试及分析项目。我相信在人类历史发展长河中,我们已渐渐开始从物质文明转为精神文明建设,这也是 know-yourself 板块创建的一大缘由。这个项目于 4 月 11 日开始内测,并于 19 日正式上线,也尝试投了 Google Ads,期待让更多的人 know-themself,而后了解作者,妄图以此寻找共鸣及认可。

u_1_62b6b2392ff4c_2510x1286.png

但事实证明这是理想化的,借助统计分析发现,快餐时代的人连文字较多的专业报告都难以善终,更别说了解整个网站了。所以在完善后,决定将项目转为免费+付费制,其盈利用于广告投放而复利。至此,于同年 5 月 9 日正式接入支付宝与微信支付,开发并完善了统一支付系统。在这个过程中,也完成了网站后台的开发。

由于不太想写静态博客,故开发了一言板块,并于同年 5 月 22 日正式上线。随后同年 6 月的第一天,将博客系统更新为了动态,依靠 Nginx 重写功能(伪静态)实现虚拟路径访问。

现在,开摆了。

架构及组件

出于爱屋及乌,网站的前后端框架均为自己开发的 gQuery,这个框架生态已经同我走过数年历程,期间经历了大大小小 50 余次更新迭代,一些我曾负责开发的政企网站或软件里也有 gQuery 的身影。但一直自己开发轮子也终究是不太现实的,对于某些特定需求,使用了以下开源组件。前端有:

需求组件
触摸滑动Swiper 7
图表ECharts 5
3DBabylon 5
富文本编辑器WangEditor 5
图片压缩localResizeIMG
图片裁剪Cropper 1.5
图标库Tabler Icons

后端有:

需求组件
匿名邮箱过滤mailchecker
发送邮件phpmailer
支付聚合easypay

运行在 Debian 系统下,使用的技术栈为 Nginx 1.2、PHP 8.1、MySQL 8.0、Redis 6.2。

CDN 使用阿里云的"DCDN 全站加速",邮件服务器使用阿里云的"邮件推送"。

踩过的坑

在开发上因为都选的较为熟悉的技术栈,并没遇到什么问题,另外 90% 的问题依靠搜索引擎也能很快解决。比较麻烦的还是支付对接,国内两巨头没得选,国外各方面对比后得出两家:Paypal 和 Stripe,后者虽然崛起较快,但对内陆用户不友好,故还是选择老朋友 Paypal。

注册后过了一周仍未通过,致电联系后才得知是那边疫情管控人手不足,说会标注加急以解决。次日便审核通过了,开发对接起来很容易,但管理比前些年严格了,会对新注册的账号做资金冻结,尽快获得资金需要:

  • 处理 10 笔商品和服务付款。
  • 处理 $200 USD 销售额。
  • 保持 60 天无争议。
  • 添加银行账户或借记或信用卡。

另外一个坑就是微信支付和银行公户了,众所周知建设银行的洗钱反黑一直查得很严,例如在 21 年玩加密货币的时候,我就被风控掉了一张建行的借记卡。所以当我用微信支付对接了一些零碎的项目后,微信支付的 T+1 自动结算便每天都会给账户主体绑定的银行公户打款。So,这种金额不大但很琐碎的流水引起了建行领导的注意。不过还好,后续解释一番这事也就过了,但微信支付的结算周期竟然不能自己更改,气抖冷。

# 暂时先写到这里,之后有空再更新一下。