从零搭建个人技术博客
今天做了什么:从零搭建个人技术博客
起因
一直想有一个自己的技术博客,用来记录学习心得、整理踩过的坑、沉淀技术方案。之前用 Halo 搭过,但觉得太重——Java 应用一跑就是几百兆内存,对于一台 2G 的小服务器来说太奢侈了。
今天下定决心,把整个站点从零重构一遍,目标是轻量、可控、完全属于自己的。
技术选型
最终方案如下:
| 组件 | 选型 | 说明 |
|---|---|---|
| 服务器 | 阿里云 ECS | |
| 面板 | 1Panel | 容器化管理,省心 |
| 数据库 | MariaDB | 与小程序共用一个实例 |
| 后端 | Node.js + Express | 轻量,和小程序后端同语言 |
| 前端 | 纯静态 HTML/CSS/JS | 零框架依赖,加载快 |
| 图床 | 阿里云 OSS + CDN | 图片走 CDN,不占服务器带宽 |
核心思路:后端只做 API,前端是纯静态页,图片全部上 OSS。这样服务器内存占用极小,扩容也方便。
搭建过程
1. 后端 API
写了一套文章管理系统,支持:
- 文章的增删改查,支持草稿和发布两种状态
- 分类管理(可排序、可删除)
- 自定义链接(侧栏"我的站点",可以挂上其他服务器的地址)
- 站点设置(站点名、标题、图标、导航菜单、Banner、页脚,全部可后台配置)
- 多用户权限(管理员 / 编辑两种角色,密码用 scrypt 加盐哈希存储)
2. 管理后台
后台支持在线编辑文章(Markdown 语法),图片上传自动存到 OSS,写完直接保存发布。分类、链接、站点设置都能在后台维护,不用改代码。
3. 前台展示
首页是左侧栏 + 右侧文章列表的经典博客布局,支持分类筛选、标签云、站内搜索。文章详情页支持 Markdown 渲染、代码高亮、图片自适应。
4. 图床 + CDN
图片全部上传到阿里云 OSS,再通过 CDN 加速。配置了:
- OSS Bucket(杭州,公共读)
- CDN 加速域名,源站指向 OSS
- HTTPS 证书 + HTTP 强制跳转
- 带宽封顶 5Gbps,防止被刷产生天价账单
上传一张图,几秒就到 CDN,全国访问都很快。
5. 域名邮箱
给域名配了企业邮箱,收件地址是 liugong@52hq.com。在阿里云 DNS 加了 MX 和 SPF 记录,验证通过后就能正常收发邮件了。
踩过的坑
搭建过程中遇到不少问题,记录一下:
1. Docker 网络配置
容器之间通信要用同一个网络。一开始容器连不上数据库,查了半天发现网络名写错了,应该用 1panel-network 而不是自己新建的网络。
2. 数据库用户权限
直接用 root 连数据库,容器 IP 被 MariaDB 拒绝访问(Access denied)。后来创建了专用用户 personal_app,只给它 personal 库的权限,问题解决。
3. 中文 URL 编码
按分类筛选时,分类名是中文,curl 直接传中文会出错。前端用 encodeURIComponent 编码就没问题了,后端解码后正常匹配。
4. Nginx 反代配置
后台页面和 API 要分开反代。/api/ 走后端,/admin 走后台页面,静态文件走 www 站点。一开始把 /admin 也当成静态文件了,返回 404,改成反代后正常。
5. Token 迁移
用户表从单用户改成多用户时,旧的 token 没有 username 字段,迁移后验证失败,后台保存设置一直报 UNAUTHORIZED。后来加了 token 自检接口,打开后台先验证 token 有效性,失效就强制重新登录,问题解决。
成果
今天下来,一个完整的个人技术博客就搭建好了:
- 前台:首页 + 文章详情,支持分类、标签、搜索、暗色模式
- 后台:文章编辑、分类管理、链接管理、站点设置、用户管理
- 图床:OSS + CDN,图片秒传
- 邮箱:域名邮箱已配置
- 内存占用:后端只占几十兆,服务器还有充足余量
最满意的是暗色模式——顶栏一键切换,选择会自动记住,晚上看文章眼睛舒服多了。
后续计划
接下来打算:
- 写更多技术文章,把积累的经验沉淀下来
- 考虑加一个评论系统(可能需要后端配合)
- 研究一下文章的 SEO 优化
- 看看要不要加个简单的访问统计
折腾技术博客本身就是个好习惯——既能记录,又能督促自己多学习、多输出。
本文由新搭建的个人博客首发,欢迎交流 🎉