将Hexo博客部署到VPS上

将Hexo博客部署到VPS上
ELIX之前Hexo静态博客一直托管部署在GithubPages+Vercel,倒是很稳定。但是访问速度略慢一些,于是想要转移到服务器上看看效果。
本文介绍Hexo远程部署方法、RSA免密登录方法,以及遇到的一些坑。
Hexo远程部署核心思路:本地生成静态文件 → 推送到服务器 Git 仓库 → 自动同步到 Web 目录
因此远程服务器需要两个目录:
- repo仓库,负责拉取更新内容并同步到web目录;
- web目录,并交由Nginx进行代理。
开始
第一步:安装必要软件
通过 SSH 连接到服务器,安装 Git 和 Nginx 。
1 | # Ubuntu/Debian 系统 |
第二步:创建专用用户
为安全起见,建议创建一个专门用于部署的用户(如 git),而不是直接使用 root。
1 | # 创建用户 |
第三步:配置 SSH 免密登录
为了让本地电脑能顺利推送到服务器,需要配置 SSH 密钥认证。如果能接受每次deploy都手动输入密码,此步骤可以跳过。
- 在本地电脑生成 SSH 密钥对(如果还没有的话):
1 | ssh-keygen -t rsa -C "your_email@example.com" # 一路回车即可 |
这会在 ~/.ssh/ 目录下生成 id_rsa(私钥)和 id_rsa.pub(公钥)。
将本地公钥上传到服务器的 git 用户:
1 | # 在服务器上切换为 git 用户 |
然后,将你本地 ~/.ssh/id_rsa.pub 文件的内容,复制到服务器上 git 用户 ~/.ssh/authorized_keys 文件中。
测试免密登录:
在本地终端执行:
1 | ssh git@你的服务器IP |
如果不需要密码就能登录到服务器,说明配置成功。输入 exit 退出。
注意,如果还需要输入密码,首先考虑.ssh、authorized_keys的权限是否配置正确。依然不行,则检查
1
2 sudo cat /etc/ssh/sshd_config | grep -i pubkey
sudo cat /etc/ssh/sshd_config | grep -i authorizedkeys如果返回值不正确,则检查/etc/ssh/sshd_config文件
一般是**
PubkeyAuthentication**被设为了false,即不接受公钥登录,改为yes即可。
第四步:在服务器上建立 Git 仓库和 Hook
这个仓库用来接收你本地 Hexo 的推送。
- 创建裸仓库:
1 | # 可以使用 root 或 git 用户操作 |
配置 Nginx 托管目录:
这个目录是真正存放博客文件并通过Nginx代理的地方。
1 | sudo mkdir -p /usr/blog/hexo |
配置 Git Hook:
这是实现自动部署的关键。它会在接收到 push 时自动执行脚本。
1 | # 创建或编辑钩子脚本 |
在文件中写入以下内容:
1 |
|
保存后,赋予执行权限:
1 | sudo chmod +x /usr/repo/hexo-blog.git/hooks/post-update |
第五步:配置 Nginx
告诉 Nginx 从哪个目录提供博客文件。
编辑 Nginx 配置文件/etc/nginx/sites-enabled/default:
添加 server 块:
1 | server { |
检查配置是否正确并重启 Nginx:
1 | sudo nginx -t # 测试配置 |
此时访问ip+Nginx开放端口,应该就可以看到Nginx的界面啦。
部署和测试
在本地执行部署命令:
在你的Hexo项目根目录执行:
1
2
3hexo clean
hexo g
hexo deploy如果一切正常,命令执行后会将静态文件推送到你的服务器。
访问测试:
打开浏览器,输入你的服务器 IP 地址或域名,检查博客是否正常显示。
完事收工!









