方案一:纯静态博客搭建(Hugo + Stack + Vercel)
这是最推荐的方式,完美复刻原博客。
第一步:安装 Hugo
- 下载 Hugo:
- 前往 Hugo GitHub Releases 页面:https://github.com/gohugoio/hugo/releases
- 根据你的操作系统下载扩展版(
extended
版本,支持Sass/SCSS)。例如 Windows 就下载hugo_extended_0.XXX.0_windows-amd64.zip
。
- 安装:
- Windows:解压下载的ZIP文件,将里面的
hugo.exe
放到一个你喜欢的目录(如C:\Hugo\bin
),然后将该目录添加到系统的PATH
环境变量中。 - Mac:推荐使用 Homebrew:
brew install hugo
- Linux:下载解压后,将二进制文件移动到
/usr/local/bin/
即可。
- Windows:解压下载的ZIP文件,将里面的
- 验证:打开终端/命令提示符,输入
hugo version
,如果显示版本号(且包含extended
字样),说明安装成功。
第二步:创建本地博客项目
-
创建新站点:
1 2
hugo new site my-java-blog cd my-java-blog
-
初始化 Git(为后续部署做准备):
1
git init
第三步:安装和配置 Stack 主题
-
将主题添加为子模块(这是Hugo官方推荐的方式):
1
git submodule add https://github.com/CaiJimmy/hugo-theme-stack/ themes/stack
这会将主题代码克隆到你的
themes/stack
目录下。 -
基本配置:
- 在项目根目录下,创建配置文件
config.yaml
(或config.toml
)。YAML格式更易读,推荐使用。 - 将以下基础配置复制到
config.yaml
中:
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 27 28 29 30 31 32 33 34 35 36 37 38 39
baseURL: "https://your-blog-domain.vercel.app/" # 稍后替换为你自己的域名 languageCode: "zh-cn" title: "我的Java技术博客" theme: "stack" # 设置默认内容语言 defaultContentLanguage: 'zh' # 主题相关配置 params: # 网站副标题 subtitle: "探索编程与架构之美" # 首页模式:'grid' 网格 | 'list' 列表 home_mode: 'grid' # 主题颜色: 'auto' | 'light' | 'dark' defaultTheme: 'auto' # 菜单配置 menu: main: - identifier: "home" name: "首页" url: "/" weight: 1 - identifier: "about" name: "关于" url: "/about" weight: 2 # 评论系统(可选,后期可配置) # services: # disqus: # shortname: "your-disqus-shortname" # 谷歌分析(可选) # googleAnalytics: "G-XXXXXXXXXX" # 允许渲染 Emoji enableEmoji: true
- 在项目根目录下,创建配置文件
第四步:创建你的第一篇文章
-
新建文章:
1
hugo new posts/my-first-post.md
这会在
content/posts/
目录下生成一个Markdown文件。 -
编辑文章: 用任何文本编辑器打开
content/posts/my-first-post.md
,内容如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
--- title: "我的第一篇文章" date: 2023-10-27 draft: false # 发布时改为 false tags: ["Java", "Hugo"] categories: ["技术"] --- ## 欢迎使用 Hugo 这是一篇用 Markdown 写的文章。**加粗**,*斜体*,[链接](https://java.com)。 ```java public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Hugo and Java!"); } }
第五步:本地预览和调试
-
启动本地服务器:
1
hugo server -D
-D
参数表示包含草稿(draft: true)的文章。
-
查看博客: 在浏览器中打开
http://localhost:1313
。你现在应该能看到和原博客风格几乎一样的网站了!你对代码和配置的任何修改都会实时热重载。
第六步:部署到 Vercel(免费且高速)
-
将代码推送到 GitHub:
- 在 GitHub 上创建一个新的代码仓库(如
my-java-blog
)。 - 按照指引将你本地的代码推送上去。
- 在 GitHub 上创建一个新的代码仓库(如
-
注册并连接 Vercel:
- 访问 Vercel 官网,使用 GitHub 账号注册。
- 点击 “Import Project” -> “Import Git Repository”,选择你刚创建的仓库。
-
一键部署:
- Vercel 会自动检测到这是 Hugo 项目并配置好构建命令(
hugo
)和输出目录(public
)。 - 你几乎不需要修改任何设置,直接点击 “Deploy”。
- Vercel 会自动检测到这是 Hugo 项目并配置好构建命令(
-
访问线上博客: 部署完成后,Vercel 会为你分配一个
*.vercel.app
的域名。你现在就有了一个和原博客一样的、全球高速访问的个人博客了!
方案二:为静态博客添加 Java 后端(可选)
纯静态博客无法实现评论、点赞等动态功能。如果你需要这些,可以按以下架构添加一个独立的Java后端。
架构图
|
|
实现步骤(以评论功能为例):
-
创建 Spring Boot 项目:
- 使用 Spring Initializr 创建一个新项目,选择
Web
,JPA
,PostgreSQL
等依赖。
- 使用 Spring Initializr 创建一个新项目,选择
-
设计评论实体和API:
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 27 28 29 30 31 32
// Comment.java Entity @Entity @Data public class Comment { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String postUrl; // 通过文章URL关联静态博客的文章 private String author; private String content; private LocalDateTime createdAt; } // CommentController.java @RestController @RequestMapping("/api/comments") @CrossOrigin(origins = "https://your-blog-domain.vercel.app") // 允许你的博客域名调用 public class CommentController { @Autowired private CommentRepository commentRepository; @GetMapping public List<Comment> getComments(@RequestParam String postUrl) { return commentRepository.findByPostUrlOrderByCreatedAtDesc(postUrl); } @PostMapping public Comment addComment(@RequestBody Comment comment) { comment.setCreatedAt(LocalDateTime.now()); return commentRepository.save(comment); } }
-
部署 Java 后端:
- 你可以将打包好的Jar包部署到任何支持Java的云平台,如:
- 阿里云/腾讯云轻量应用服务器:性价比高,完全控制。
- Railway / Render:新兴的部署平台,对开源项目有免费额度。
- Heroku:老牌云应用平台。
- 你可以将打包好的Jar包部署到任何支持Java的云平台,如:
-
在 Hugo 博客中调用 API:
- 在你的Hugo主题模板(
layouts/partials/comments.html
)或使用自定义JS文件,添加Ajax代码来调用你的Java后端。
1 2 3 4 5 6 7 8 9 10 11 12
// 获取当前文章的URL const postUrl = window.location.pathname; // 从你的Java后端获取评论列表 fetch(`https://your-java-api.railway.app/api/comments?postUrl=${postUrl}`) .then(response => response.json()) .then(comments => { // 将评论渲染到页面上 }); // 处理用户提交评论的表单 // ... 提交到 POST /api/comments
- 在你的Hugo主题模板(
最终建议
- 先从方案一开始:完美复刻你想要的博客,成本极低,流程顺畅。这是核心。
- 运行起来后,再根据实际需求,考虑是否要启动方案二,用Java去实现一些动态功能。绝大多数情况下,纯静态博客已经完全够用,评论等功能可以使用第三方的Utterances(基于GitHub Issues)或Giscus(基于GitHub Discussions)来替代自建Java后端,这样更简单。