Hexo + Fluid 博客搭建与腾讯云部署全纪录
涵盖从本地环境搭建、Hexo 博客初始化、Fluid 主题配置、GitHub 源码托管,到腾讯云 Ubuntu 服务器部署、Nginx 配置、权限修复,以及服务器 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送)、免费 SSL 证书(Let’s Encrypt) 和 HTTP 强制跳转 HTTPS 的完整实践。 本笔记基于实际建站过程整理,所有私人信息已脱敏,请自行替换为实际值(如域名、用户名、仓库名等)。
目录
本地环境准备
本地初始化 Hexo 博客
安装与配置 Fluid 主题
Git 版本控制与 GitHub 仓库
服务器端 Ubuntu 环境搭建
服务器从 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送)
Nginx 托管静态网站
权限与 404 问题排查
域名访问与备案准备
免费 SSL 证书(Let’s Encrypt)配置
Nginx 强制 HTTP 跳转 HTTPS
后续更新维护流程
常见错误与解决方法汇总
关键决策点索引
一、本地(Windows)环境准备 1.1 安装 Node.js 与 npm
1.2 安装 Git
1.3 全局安装 Hexo CLI 以管理员身份打开命令提示符:
如果提示 'hexo' 不是内部或外部命令,将 C:\Program Files odejs\ 添加到系统 PATH。
二、本地初始化 Hexo 博客 1 2 3 4 5 6 D:mkdir my-blogcd my-blog hexo init npm install hexo server
访问 http://localhost:4000 看到默认页面即成功。
三、安装与配置 Fluid 主题 1 npm install --save hexo-theme-fluid
修改站点 _config.yml:
创建独立主题配置文件 _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)
4.4 使用 SSH 方式推送(避免 HTTPS 网络问题) 生成 SSH 密钥(在 Git Bash 中执行):
1 ssh-keygen -t rsa -b 4096 -C "你的邮箱"
查看公钥并添加到 GitHub:
修改远程地址:
1 git remote add origin git@github.com:你的用户名/仓库名.git
推送:
五、服务器端 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 ssh -T git@github.com
5.4 克隆博客源码 1 2 3 4 git clone git@github.com:你的用户名/仓库名.gitcd 仓库名 npm install hexo generate
六、服务器从 GitHub 拉取慢的解决方案(Gitee 镜像 + 双仓库推送) 问题 :腾讯云服务器直接 git pull 从 GitHub 拉取代码速度极慢(< 30 KiB/s),甚至超时。
解决方案 :使用国内 Gitee 作为镜像仓库,让服务器从 Gitee 拉取,同时保持本地推送到 GitHub(或双推)。
6.1 在 Gitee 上创建镜像仓库
登录 Gitee
点击右上角 “+” → “从 GitHub 导入仓库”
授权后选择你的 GitHub 仓库(如 myblog)
等待导入完成(Gitee 会自动同步)
6.2 服务器上添加 Gitee 远程仓库并设为默认拉取源 1 2 3 4 5 6 7 8 git remote rename origin github git remote add origin https://gitee.com/你的Gitee用户名/仓库名.git 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 服务器配置完成后,拉取测试
七、Nginx 托管静态网站 7.1 安装 Nginx 1 2 sudo apt install nginx -ysudo 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/defaultsudo 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/ubuntusudo chmod 755 /home/ubuntu/仓库名sudo chmod 755 /home/ubuntu/仓库名/publicsudo 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
九、域名访问与备案准备 9.1 域名解析 在域名注册商控制台添加 A 记录:主机记录 @,记录值为服务器公网 IP。
9.2 公安联网备案要点
网站域名:只填主域名,不带 http://
服务类型:博客/个人空间
可在腾讯云备案控制台获取”公安联网备案数据码”简化填写
9.3 页面底部放置备案号 在 _config.fluid.yml 的 footer.content 中添加备案号链接。
十、免费 SSL 证书(Let’s Encrypt)配置 问题 :腾讯云免费 SSL 证书有数量限制,且续期麻烦。
解决方案 :使用 Let’s Encrypt 免费证书 + Certbot 自动化管理。
10.1 安装 Certbot 及 Nginx 插件 1 2 sudo apt updatesudo 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 server { listen 80 ; listen [::]:80 ; server_name 你的域名 www.你的域名; return 301 https://$server_name $request_uri ; }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 -tsudo systemctl reload nginx
访问 http://你的域名 应自动跳转到 https://你的域名。
十二、后续更新维护流程 本地
1 2 3 4 5 6 hexo new "文章标题" hexo clean && hexo generate git add . git commit -m "更新" git push
服务器
1 2 3 cd ~/仓库名 git pull 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 语法
十四、关键决策点索引 本笔记记录了以下关键问题的解决路径:
服务器 GitHub 拉取慢 → 采用 Gitee 镜像 + 双仓库推送(服务器从 Gitee 拉,本地可双推)。
Gitee 认证问题 → 使用私人令牌,用户名用英文空间地址。
腾讯云免费 SSL 证书数量限制 → 改用 Let’s Encrypt + Certbot 自动化管理。
Certbot 申请证书后无法 HTTPS 访问 → 排查安全组 443 端口、Nginx 配置。
HTTP 仍可访问 → 分析 Nginx 配置混乱(多个 server 块、default_server 干扰),提供清晰的重定向配置。
最终稳定配置 → 两个 server 块(80 重定向 + 443 SSL),配合 Gitee 镜像,实现服务器快速拉取 + HTTPS 强制跳转。
结语 祝建站顺利!如有问题欢迎留言交流。