如何将Hexo部署至服务器
前言
2022年腾讯云搞活动买了五年的服务器,才300多。hexo一直部署在服务器上,比在github或vercel上要快不少。最近想用服务器部署一个项目,用到了node18,发现服务器系统还是centos7,在2024年中旬就不再维护了。服务器上除了博客和大学做的一些垃圾也没什么重要的东西,所以今天直接重装了系统,导致博客打不开,晚上又重新部署了下博客。
上一次部署的时候就没有留痕,这次部署也遇到些问题,所以打算写一篇博客记录一下。
一、 环境准备:安装核心依赖
首先,我们需要安装 Node.js、Git、Nginx 以及用于自动化配置 HTTPS 的 Certbot。以 Ubuntu/Debian 系系统为例:
1 | # 添加 Node.js 18 运行源 |
为什么用 Certbot?
以往配置 HTTPS 需要手动生成 CSR、上传验证文件、修改 Nginx 配置,流程极其繁琐。现在只需一行命令,Certbot 就能自动完成证书申请和 Nginx 配置,简直是运维神器。
二、 配置 Nginx:让站点可访问
我们需要为博客创建一个 Nginx 配置文件。
- 创建配置文件:
sudo vim /etc/nginx/sites-available/yourdomain - 写入基础配置:
1 | server { |
- 激活配置:
1 | # 创建软链接以激活站点 |
小技巧: 使用
sites-available和sites-enabled的模式是为了方便管理。如果你想临时下线某个站点,只需删除sites-enabled里的快捷方式(软链接)即可,源文件依然保留。
三、 开启 HTTPS:安全加固
在域名解析生效后,执行以下操作,Certbot 会自动修改 Nginx 配置并加入 SSL 支持:
1 | sudo certbot --nginx -d example.com -d www.example.com |
四、 自动化部署:Git Hooks 方案
为了实现本地执行 hexo d 就能自动更新服务器文件,我们需要在服务器上配置一个 Git 仓库作为“中转站”。
1. 安全起见:创建专用 git 用户
为了避免直接使用 root 账户带来的安全隐患,我们创建一个名为 git 的用户。
1 | sudo useradd -m git |
2. 配置 SSH 免密登录(可选但推荐)
在本地终端(如 Git Bash)生成秘钥对并将其公钥上传至服务器,后续部署无需反复输入密码。
- 本地操作:在本地计算机上打开Git Bush执行命令:
ssh-keygen -t rsa,生成密钥对。运行完后可在C:\Users\用户名.ssh文件下找到id_rsa和id_rsa.pub文件,前者为私钥文件,后者为公钥文件 - 服务器操作:
在服务器终端先执行makdir -p /home/git/.ssh,后执行cd /home/git/.ssh以及nano authorized_keys,输入本地id_rsa.pub文件内容。粘入公钥内容后按:Ctrl+O (写出 write-out),回车确认文件名(默认显示 authorized_keys),然后按 Ctrl+X 退出 nano。
1 | su - git |
3. 创建 Git 裸库与钩子
裸库(Bare Repository) 不包含工作区,仅用于存储版本历史,是实现自动部署的核心。
1 | cd /home/git |
接着,编辑钩子文件(post-receive),当有新代码 push 进来时,自动将其检出到 Web 目录:
- 新建文件:
nano /home/git/blog.git/hooks/post-receive - 写入以下脚本:
1 | #!/bin/bash |
- 赋予执行权限并调整目录所有权:
1 | chmod +x /home/git/blog.git/hooks/post-receive |
五、 本地配置:一键发布
最后一步,修改本地 Hexo 根目录下的 _config.yml 文件:
1 | deploy: |
发布流程:
1 | hexo clean |
至此可以在浏览器中输入域名来访问博客站点了。
