站长建站指南

Hexo + Fluid 博客搭建与腾讯云部署全纪录

涵盖从本地环境搭建、Hexo 博客初始化、Fluid 主题配置、GitHub 源码托管,到腾讯云 Ubuntu 服务器部署、Nginx 配置、权限修复,以及服务器 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送)、免费 SSL 证书(Let’s Encrypt) 和 HTTP 强制跳转 HTTPS 的完整实践。
本笔记基于实际建站过程整理,所有私人信息已脱敏,请自行替换为实际值(如域名、用户名、仓库名等)。

目录

  1. 本地环境准备
  2. 本地初始化 Hexo 博客
  3. 安装与配置 Fluid 主题
  4. Git 版本控制与 GitHub 仓库
  5. 服务器端 Ubuntu 环境搭建
  6. 服务器从 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送)
  7. Nginx 托管静态网站
  8. 权限与 404 问题排查
  9. 域名访问与备案准备
  10. 免费 SSL 证书(Let’s Encrypt)配置
  11. Nginx 强制 HTTP 跳转 HTTPS
  12. 后续更新维护流程
  13. 常见错误与解决方法汇总
  14. 关键决策点索引

一、本地(Windows)环境准备

1.1 安装 Node.js 与 npm

  • 下载地址:Node.js 官网
  • 选择 LTS 版本(例如 v20.x),安装后验证:
1
2
node -v
npm -v

1.2 安装 Git

1
git --version

1.3 全局安装 Hexo CLI

以管理员身份打开命令提示符:

1
npm install -g hexo-cli
  • 如果提示 'hexo' 不是内部或外部命令,将 C:\Program Files odejs\ 添加到系统 PATH。

二、本地初始化 Hexo 博客

1
2
3
4
5
6
D:
mkdir my-blog
cd my-blog
hexo init
npm install
hexo server

访问 http://localhost:4000 看到默认页面即成功。

三、安装与配置 Fluid 主题

1
npm install --save hexo-theme-fluid

修改站点 _config.yml

1
theme: fluid

创建独立主题配置文件 _config.fluid.yml,内容从 Fluid 官方文档 复制。

基本配置示例(_config.fluid.yml):

1
2
3
4
5
6
7
language: zh-CN
navbar:
menu:
- { key: "首页", link: "/", icon: "icon-home" }
- { key: "归档", link: "/archives/", icon: "icon-archive" }
footer:
content: '<div class="beian">...</div>'

生成并预览:

1
hexo clean && hexo generate && hexo server

四、Git 版本控制与 GitHub 仓库

4.1 创建 .gitignore

1
2
3
node_modules/
public/
.deploy*/

4.2 初始化并提交

1
2
3
git init
git add .
git commit -m "首次提交"

4.3 在 GitHub 创建空仓库(不要初始化 README)

  • 仓库名示例:myblog

4.4 使用 SSH 方式推送(避免 HTTPS 网络问题)

生成 SSH 密钥(在 Git Bash 中执行):

1
ssh-keygen -t rsa -b 4096 -C "你的邮箱"

查看公钥并添加到 GitHub:

1
cat ~/.ssh/id_rsa.pub

修改远程地址:

1
git remote add origin git@github.com:你的用户名/仓库名.git

推送:

1
git push -u origin main

五、服务器端 Ubuntu 环境搭建

服务器信息:腾讯云 Ubuntu,公网 IP 示例 111.111.111.111,用户 ubuntu

5.1 连接服务器并安装 Node.js(系统级)

1
2
3
4
sudo apt update
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt install -y nodejs
node -v

5.2 全局安装 Hexo

1
sudo npm install -g hexo-cli

5.3 配置 SSH 密钥(用于从 GitHub 拉取)

1
2
3
ssh-keygen -t rsa -b 4096 -C "你的邮箱"
cat ~/.ssh/id_rsa.pub # 添加到 GitHub SSH Keys
ssh -T git@github.com # 测试

5.4 克隆博客源码

1
2
3
4
git clone git@github.com:你的用户名/仓库名.git
cd 仓库名
npm install
hexo generate # 生成 public 目录

六、服务器从 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送)

问题:腾讯云服务器直接 git pull 从 GitHub 拉取代码速度极慢(< 30 KiB/s),甚至超时。

解决方案:使用国内 Gitee 作为镜像仓库,让服务器从 Gitee 拉取,同时保持本地推送到 GitHub(或双推)。

6.1 在 Gitee 上创建镜像仓库

  1. 登录 Gitee
  2. 点击右上角 “+” → “从 GitHub 导入仓库”
  3. 授权后选择你的 GitHub 仓库(如 myblog
  4. 等待导入完成(Gitee 会自动同步)

6.2 服务器上添加 Gitee 远程仓库并设为默认拉取源

1
2
3
4
5
6
7
8
# 将原来的 origin 重命名为 github
git remote rename origin github

# 添加 Gitee 仓库作为新的 origin
git remote add origin https://gitee.com/你的Gitee用户名/仓库名.git

# 推送本地代码到 Gitee(首次需要输入用户名和私人令牌)
git push -u origin main

Gitee 私人令牌获取:Gitee → 设置 → 私人令牌 → 生成新令牌,勾选 projects 权限,复制保存。

6.3 设置同时推送到 GitHub 和 Gitee(可选)

如果希望本地 git push 同时推送到两个仓库,可以为 origin 添加多个推送 URL:

1
git remote set-url --add --push origin https://github.com/你的用户名/仓库名.git

之后 git push origin main 会同时推送到 Gitee 和 GitHub。

6.4 服务器配置完成后,拉取测试

1
git pull origin main   # 从 Gitee 拉取,速度将显著提升

七、Nginx 托管静态网站

7.1 安装 Nginx

1
2
sudo apt install nginx -y
sudo systemctl enable nginx

7.2 创建站点配置

1
sudo nano /etc/nginx/sites-available/你的域名

配置内容:

1
2
3
4
5
6
7
8
9
10
server {
listen 80;
listen [::]:80;
server_name 你的域名;
root /home/ubuntu/仓库名/public;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}

7.3 启用站点

1
2
3
sudo ln -s /etc/nginx/sites-available/你的域名 /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

八、权限与 404 问题排查

8.1 错误现象

访问域名显示 404 或 Nginx 默认页。

8.2 查看错误日志

1
sudo tail -20 /var/log/nginx/error.log

若发现 Permission denied,执行以下修复:

1
2
3
4
5
sudo chmod 755 /home/ubuntu
sudo chmod 755 /home/ubuntu/仓库名
sudo chmod 755 /home/ubuntu/仓库名/public
sudo find /home/ubuntu/仓库名/public -type f -exec chmod 644 {} \;
sudo find /home/ubuntu/仓库名/public -type d -exec chmod 755 {} \;

8.3 验证

1
curl -I http://127.0.0.1   # 应返回 200 OK

九、域名访问与备案准备

9.1 域名解析

在域名注册商控制台添加 A 记录:主机记录 @,记录值为服务器公网 IP。

9.2 公安联网备案要点

  • 网站域名:只填主域名,不带 http://
  • 服务类型:博客/个人空间
  • 可在腾讯云备案控制台获取”公安联网备案数据码”简化填写

9.3 页面底部放置备案号

_config.fluid.ymlfooter.content 中添加备案号链接。

十、免费 SSL 证书(Let’s Encrypt)配置

问题:腾讯云免费 SSL 证书有数量限制,且续期麻烦。

解决方案:使用 Let’s Encrypt 免费证书 + Certbot 自动化管理。

10.1 安装 Certbot 及 Nginx 插件

1
2
sudo apt update
sudo apt install certbot python3-certbot-nginx

10.2 申请证书并自动配置 Nginx

1
sudo certbot --nginx -d 你的域名 -d www.你的域名
  • 输入邮箱(用于续期提醒)
  • 同意服务条款(Y)
  • 是否共享邮箱给 EFF:可选 N
  • 选择是否重定向 HTTP 到 HTTPS:建议选择 2(自动重定向)

成功后输出:

1
2
3
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/你的域名/fullchain.pem
Key is saved at: /etc/letsencrypt/live/你的域名/privkey.pem

10.3 自动续期

Certbot 会自动添加定时任务,无需手动操作。

十一、Nginx 强制 HTTP 跳转 HTTPS

如果 Certbot 没有自动配置重定向,或你需要手动调整,确保 Nginx 配置中包含以下内容:

11.1 正确的配置结构(两个 server 块)

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
# HTTP 重定向到 HTTPS
server {
listen 80;
listen [::]:80;
server_name 你的域名 www.你的域名;
return 301 https://$server_name$request_uri;
}

# HTTPS 实际站点
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name 你的域名 www.你的域名;
root /home/ubuntu/仓库名/public;
index index.html;

ssl_certificate /etc/letsencrypt/live/你的域名/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/你的域名/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

location / {
try_files $uri $uri/ =404;
}
}

11.2 测试并重载

1
2
sudo nginx -t
sudo systemctl reload nginx

访问 http://你的域名 应自动跳转到 https://你的域名

十二、后续更新维护流程

本地

1
2
3
4
5
6
hexo new "文章标题"
# 编辑 source/_posts/ 下的 md 文件
hexo clean && hexo generate
git add .
git commit -m "更新"
git push # 推送到 GitHub(会自动同步到 Gitee 如果配置了双推)

服务器

1
2
3
cd ~/仓库名
git pull # 从 Gitee 拉取(速度快)
hexo clean && hexo generate

十三、常见错误与解决方法汇总

错误现象 原因 解决方法
服务器 git pull 极其缓慢 GitHub 访问慢 配置 Gitee 镜像,从 Gitee 拉取
git push 提示 404 仓库不存在 Gitee 用户名错误(用了中文昵称) 使用英文空间地址
Gitee 推送需要输入密码 未使用私人令牌 生成私人令牌代替密码
访问域名显示 Nginx 欢迎页 默认站点未禁用 sudo rm /etc/nginx/sites-enabled/default
访问域名显示 404 但 curl 返回 200 实际访问的还是默认站点 检查软链接,重载 Nginx
HTTPS 无法访问,浏览器超时 服务器 443 端口未开放 腾讯云安全组添加入站规则 TCP:443
Certbot 申请证书失败 80 端口无法访问 确保域名解析正确,Nginx 监听 80
HTTP 没有自动跳转 HTTPS Nginx 配置中缺少重定向 server 块 添加 return 301 配置
页面只有文字无样式 静态资源目录权限错误 find 命令将目录改为 755
hexo generate 报 YAMLException 配置文件使用了非法字符 用空格缩进,检查 YAML 语法

十四、关键决策点索引

本笔记记录了以下关键问题的解决路径:

  1. 服务器 GitHub 拉取慢 → 采用 Gitee 镜像 + 双仓库推送(服务器从 Gitee 拉,本地可双推)。
  2. Gitee 认证问题 → 使用私人令牌,用户名用英文空间地址。
  3. 腾讯云免费 SSL 证书数量限制 → 改用 Let’s Encrypt + Certbot 自动化管理。
  4. Certbot 申请证书后无法 HTTPS 访问 → 排查安全组 443 端口、Nginx 配置。
  5. HTTP 仍可访问 → 分析 Nginx 配置混乱(多个 server 块、default_server 干扰),提供清晰的重定向配置。
  6. 最终稳定配置 → 两个 server 块(80 重定向 + 443 SSL),配合 Gitee 镜像,实现服务器快速拉取 + HTTPS 强制跳转。

结语

祝建站顺利!如有问题欢迎留言交流。


站长建站指南
http://upmist.site:4000/2026/06/02/站长建站指南/
作者
Upmist / 缘雾山趋
发布于
2026年6月2日
许可协议