从零开始搭建个人博客

前言

一直想有一个自己的博客,可以记录学习笔记和生活点滴。经过多次尝试,最终选择了这个极简方案:Markdown写作 + Python构建 + 网页后台管理

技术栈

组件 技术 用途
Web服务器 Nginx 处理HTTP请求、HTTPS、反向代理
页面生成 Python + Markdown 将Markdown转为静态HTML
后台管理 Flask 网页端写作、图片上传
进程管理 systemd 后台服务自启动

目录结构

/root/blog/
├── posts/              # Markdown 文章源文件
├── templates/          # HTML 模板
│   ├── index.html      # 首页模板
│   ├── article.html    # 文章页模板
│   └── about.html      # 关于页面
├── build.py            # 构建脚本
├── admin.py            # 后台管理服务
├── backup.sh           # 备份脚本
└── migrate.sh          # 迁移打包脚本

/var/www/0-fl.cn/
├── index.html          # 首页
├── about.html          # 关于页面
├── posts/              # 文章HTML
└── images/             # 上传的图片

文章格式

每篇文章使用 Markdown 格式,开头是 front matter:

---
title: 文章标题
date: 2026-02-27
category: 技术
tags: Python,Linux
description: 文章简介
---

正文内容...

写作方式

方式一:网页后台

访问 https://域名/admin,登录后即可:

方式二:命令行

# 编辑 Markdown 文件
nano /root/blog/posts/新文章.md

# 构建发布
cd /root/blog && python3 build.py

主题设计

采用电子纸风格的简洁设计:

备份与迁移

自动备份

每天凌晨3点自动备份到 /root/blog-backup/

手动备份

/root/blog/backup.sh

一键迁移

# 生成迁移包
/root/blog/migrate.sh

# 下载迁移包
# https://域名/blog-migrate-*.tar.gz

# 新服务器恢复
tar -xzf blog-migrate-*.tar.gz
cd blog-migrate-*
./restore.sh

运维命令

# 查看后台服务状态
systemctl status blog-admin

# 重启后台服务
systemctl restart blog-admin

# 重新构建网站
cd /root/blog && python3 build.py

# 查看 Nginx 状态
systemctl status nginx

# 重新加载 Nginx 配置
nginx -s reload

总结

这个方案的特点:

写博客最重要的不是工具,而是坚持写下去的动力。


2026-02-27 更新