静态博客部署初始
首先,我们需要在服务器上安装 Nginx 负责分发网页,并创建存放博客的文件夹。 N…
…
本地环境写博客 + 服务器 Nginx 托管 + Git Hooks 自动部署。
这种方案不需要在服务器安装 Node.js 或 Hexo 核心程序,能把 100% 的内存和性能留给你的 OpenClaw。
第一步:服务器环境准备 (Nginx)(前台服务员)
首先,我们需要在服务器上安装 Nginx 负责分发网页,并创建存放博客的文件夹。
1. 安装 Nginx:
Nginx 就是你的超市前台。
作用: 当有人在浏览器输入你的 IP 或域名时,请求首先到达 Nginx。它负责看管
/var/www/hexo这个“货架”。为什么选它: 它非常“瘦”(占用内存极低),而且手脚麻利。对于你 2G 内存的服务器,它几乎不占地方
1 | sudo apt update |
2. 创建存放目录:
1 | sudo mkdir -p /var/www/hexo |
作用1:强制创建完整路径/var/www/hexo,无视中间目录是否存在或目标是否已存在。
-p作用:递归创建路径中所有缺失的父目录(如/var/www不存在则自动建),目标目录已存在时不报错
所有内容的所有权递归改为当前用户和当前用户组,使普通用户可读写该目录
作用2:所有内容的所有权递归改为当前用户和当前用户组,使普通用户可读写该目录
3. 配置 Nginx
创建一个简单的配置文件:sudo nano /etc/nginx/sites-available/hexo
输入以下内容(记得开启 Gzip 应对 1M 带宽):
1 | server { |
激活配置:
sudo ln -s /etc/nginx/sites-available/hexo /etc/nginx/sites-enabled/
并重启
sudo systemctl restart nginx。
Gzip:你的“真空打包机”
专业术语: HTTP 压缩 (HTTP Compression)
浅显理解: 因为你的服务器出口门缝很窄(1M 带宽),如果直接搬运大箱子(原始 HTML/CSS 文件),路就会堵死。
作用: Gzip 会在文件发出去之前,瞬间把它们“真空压缩”得很小。
效果: 用户的浏览器收到后会自动解压。这样 128KB/s 的物理限制,在感官上能跑出 500KB/s 的效果。
停止 Nginx 服务(只需这一行命令):
1 | sudo systemctl stop nginx |
3. 验证一下: 打开浏览器,输入你的 IP 。
如果显示 “无法访问此网站” 或 “拒绝连接” —— 恭喜!满分状态。
如果不显示任何网页内容,说明 80 端口关了,审核员怎么查都没问题。
4. 等待备案号下发: 等到你会收到工信部的短信说“备案通过”的那一刻,再回来输入:
1 | sudo systemctl start nginx |
第二步:建立自动化部署 (Git Hook)
这一步能让你像以前一样,在本地执行 hexo d 就直接更新服务器。
1. 在服务器上安装 Git:
Bash
1
sudo apt install git -y
2. 创建 Git 裸仓库:
Bash
1
2
3
mkdir -p ~/blog.git
cd ~/blog.git
git init --bare
Git Bare Repository:你的“收货仓库”
专业术语: 裸仓库 (Bare Repository)
浅显理解: 这和你平时看到的存放代码的文件夹不同。它是一个“只收货、不展示”的纯数据仓库(不含工作目录)。
- 作用: 它专门用来接收你从本地电脑
hexo d推送过来的压缩包。它不负责展示网页,只负责“存储”。
- 作用: 它专门用来接收你从本地电脑
3. 编写 Hook 脚本: 创建并编辑钩子文件:
1 | nano ~/blog.git/hooks/post-receive |
复制以下内容(它的作用是当你推送代码时,自动把文件同步到 Nginx 目录):
1
2
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/root/blog.git checkout -f
注意:如果你的路径不同,请自行修改。
Git Hooks (post-receive):你的“自动理货员”
专业术语: 钩子脚本 (Server-side Hook)
浅显理解: 这是一个“一旦…就…”的自动化触发器。
作用: 当
post-receive脚本检测到你推送到服务器的新代码时,它会立刻跳出来说:“新货到了!我马上把它们解压到 Nginx 的网页货架(/var/www/hexo)上。”原理: 这样你就不需要每次手动登录服务器去解压、挪动文件了。
4. 赋予执行权限:
1 | chmod +x ~/blog.git/hooks/post-receive |
总结你的架构
你现在的架构其实形成了一个闭环:
本地电脑:生产加工(Hexo 生成 HTML)。
Git 推送:运输货物(传输数据)。
Hooks 脚本:自动上架(部署到目录)。
Nginx:售卖展示(给访问者看)
第三步:本地电脑配置 (Hexo)
安装“生产工具” (Node.js & Git)
Hexo 是基于 Node.js 运行的,所以必须先安装它。
下载 Node.js:
- 去 Node.js 官网 下载 LTS 版本(长期支持版),一路“下一步”安装即可。
下载 Git:
去 Git 官网 下载安装。
安装完后,在桌面右键点击,如果看到
Git Bash Here,说明安装成功。
初始化 Hexo (搭建车间)
随便在你的电脑盘里找个地方(比如 D 盘 Blog 文件夹),右键选择 Git Bash Here,输入以下命令:
安装 Hexo 脚手架:
Bash
1
npm install -g hexo-cli
初始化博客文件夹:
Bash
1
2
3hexo init myblog
cd myblog
npm install安装 Git 部署插件(关键): 这是连接你本地和服务器的桥梁,必须装。
Bash
1
npm install hexo-deployer-git --save
配置“运输路线” (修改 _config.yml)
现在要告诉 Hexo,生成的网页该往哪台服务器发。
打开
myblog文件夹下的_config.yml文件(可以用记事本或 VS Code 打开)。拉到最底部,找到
deploy:部分。修改成下面这样(注意缩进):
YAML
1 | deploy: |
第四步:打通“免密通道” (SSH Key)
为了让你以后写完文章 hexo d 直接发布,不用每次都输服务器密码,我们需要配置 SSH 公钥。
在本地电脑生成钥匙: 在 Git Bash 里输入:
Bash
1
ssh-keygen -t rsa -C "你的邮箱@example.com"
(一直按回车,直到结束)。
把钥匙送给服务器: 继续在 Git Bash 里输入:
Bash
1
2# 把 1.2.3.4 换成你的服务器 IP
ssh-copy-id -i ~/.ssh/id_rsa.pub root@1.2.3.4系统会提示你输入一次服务器的密码。成功后,以后就不需要输密码了。
第五步:第一次发货!
一切准备就绪,让我们测试一下。
清理并生成:
Bash
1
2hexo clean
hexo g推送到服务器:
Bash
1
hexo d
如果看到 INFO Deploy done: git,恭喜你!
错误解决
错误1Author identity unknown,Please tell me who you are.
Hexo 的部署插件在幕后其实是帮你建立了一个临时的 Git 仓库(在 .deploy_git 文件夹里),然后帮你提交代码并推送到服务器。但是,Git 规定每一次提交(Commit)都必须有一个“作者”,而你的电脑上还没有告诉 Git 你是谁。
✅ 解决方法
你需要直接在你的终端(也就是你当前的 Git Bash 窗口)里执行下面这两行命令。
你可以直接复制粘贴(邮箱和名字可以随便填,或者填真实的):
1. 设置你的邮箱:
Bash
1 | git config --global user.email "blog@example.com" |
2. 设置你的名字:
Bash
1 | git config --global user.name "HexoDeployer" |
执行完上面两行命令后,再次运行部署命令:
Bash
1 | hexo d |
验证:
网页能不能打开?
如果不设置免密,每次都要输密码太累了。
请立刻打开浏览器,输入你服务器的 IP 地址(或者域名): http://你的服务器IP
如果看到了 Hexo 的默认页面(Hello World): 太棒了!你的 Nginx 配置正确,Git 钩子(Hook)也成功把文件解压到了 Nginx 的目录。
如果看到 403 Forbidden 或 404 Not Found: 别慌,这通常是权限问题。
解决办法: 登录服务器,执行这一句命令给 Nginx 赋予读取权限:
Bash
1
2chown -R www-data:www-data /var/www/hexo
chmod -R 755 /var/www/hexo(注:CentOS 系统通常用户是
nginx而不是www-data)
配置免密登录 (强烈推荐)
以后你写博客,改一个错别字都要 hexo d,如果每次都输密码会非常崩溃。我们可以配置 SSH 公钥,让服务器“认识”你的电脑。
在你的 Git Bash (本地电脑) 里依次执行:
1. 生成钥匙对 (如果之前没生成过):
Bash
1 | ssh-keygen -t rsa -b 4096 |
(一直按回车,全部默认即可)
2. 把公钥发送给服务器: (请把 1.2.3.4 换成你的服务器 IP)
Bash
1 | ssh-copy-id root@1.2.3.4 |
注意: 如果 Windows 的 Git Bash 提示
command not found,请用下面这行万能命令代替:Bash
1
cat ~/.ssh/id_rsa.pub | ssh root@1.2.3.4 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 测试: 输入 ssh root@1.2.3.4,如果没让你输密码就直接进去了,说明配置成功!
下一步做什么?
现在的博客虽然上线了,但它是默认的最丑的样子,而且文章也是测试文。