嘿,各位博主!还在为怎么把本地写好的 Hexo 博客帅气地展示给全世界而烦恼吗?别担心,今天我们就来手把手教你,如何通过 Git 和 Nginx,轻松几步就把你的静态博客部署到自己的服务器上,实现优雅的自动化发布。这篇教程会像聊天一样,带你走完整个流程,保证逻辑清晰,让你一看就懂,一学就会!
咱们的目标
简单来说,我们要实现的效果就是:在本地电脑上用 hexo d 命令一推,远端服务器上的博客网站就自动更新了。酷不酷?这背后的小功臣就是 Git Hooks(钩子),它就像一个“自动化助理”,能帮我们完成部署的“最后一公里”。
兵分两路:服务器和本地都要动起来
整个部署过程主要分为两大部分:一部分是在你的云服务器(我们称之为“远端”)上进行设置,另一部分是在你写博客的电脑(也就是“本地”)上进行配置。我们一步一步来。
第一站:远端服务器大本营(Nginx 服务器)
首先,我们得让服务器做好接收你博客文件的准备。
1.1 环境准备:给博客安个家
第一步:安装 Git
你的服务器得先认识 Git 才行。打开终端,根据你的服务器系统,敲下对应的命令:
# 如果是 CentOS/RedHat 系统
yum install git
# 如果是 Debian/Ubuntu 系统
apt install git
# 装完验证一下,看看版本号
git --version
第二步:创建专门的用户
为了安全和管理方便,我们给博客专门创建一个叫 hexo 的用户。
# 创建一个名为 hexo 的用户
adduser hexo
# 切换到 hexo 用户的家目录
cd /home/hexo
第三步:搭建 Git 仓库和博客网站目录
现在,我们在 hexo 用户的家目录下,建两个重要的文件夹:一个用来接收你从本地推送过来的文件(Git 仓库),另一个用来存放最终展示在网站上的静态文件(博客根目录)。
# 创建一个裸仓库(bare repository),专门用于接收数据
git init --bare hexo.git
# 创建一个存放网站文件的目录
mkdir blog
小贴士:如果你刚才这些操作都是用
root用户完成的,记得把这些文件的所有权还给hexo用户,不然它可没权限操作哦。chown -R hexo:hexo /home/hexo
1.2 设置自动部署:请 Git Hook 出马!
这是实现自动化的关键一步。我们要利用 Git 的 post-update 钩子。这个钩子的作用是,每当 Git 仓库接收到新的推送(push)时,就会自动执行一个我们写好的脚本。
第一步:创建钩子文件
进入我们刚刚创建的 Git 仓库里的 hooks 目录,这里面有一些钩子脚本的模板。
cd /home/hexo/hexo.git/hooks
我们复制一个模板文件,创建自己的钩子:
cp post-update.sample post-update
第二步:编辑钩子文件
用你喜欢的编辑器(比如 vi 或 nano)打开 post-update 文件,在最后一行 exec git update-server-info 的前面,加上下面这行魔法代码:
git --work-tree=/home/hexo/blog --git-dir=/home/hexo/hexo.git checkout -f
这行代码的意思是:当仓库接收到更新后,立刻把最新的文件内容,强制检出(checkout -f)到我们的博客网站目录 /home/hexo/blog 下。
1.3 配置 Nginx:让世界看到你的博客
最后,我们需要告诉 Nginx,当有人访问你的域名或 IP 地址时,应该去哪里找网站文件。
第一步:修改 Nginx 配置文件
Nginx 的主配置文件通常在 /etc/nginx/nginx.conf。找到 server 配置块,修改或添加以下内容。 核心就是告诉 Nginx,网站的根目录(root)在 /home/hexo/blog。
server {
listen 80;
server_name your_domain.com; # 换成你的域名或服务器IP
root /home/hexo/blog;
location / {
index index.html;
}
}
第二步:重启 Nginx 服务
让配置生效,就差这临门一脚了!
# 两种重启方式,选一种你系统支持的
service nginx restart
# 或者
systemctl restart nginx
至此,服务器端的准备工作就全部搞定了!
第二站:本地工作站(Hexo 发布端)
现在,回到你写博客的电脑上,进行一些简单的配置,让 Hexo 知道该把文件推送到哪里去。
2.1 配置部署信息
打开你本地 Hexo 博客项目的根目录,找到 _config.yml 文件。修改 deploy 部分,告诉 Hexo 部署的类型是 git,以及远端仓库的地址。
你可以根据自己的习惯选择 git 协议或者 ssh 协议的地址格式:
deploy:
type: git
# 方法一:使用 Git 协议格式
repo_git: hexo@<你的服务器IP>:/home/hexo/hexo.git
# 方法二:使用 SSH 协议格式
# repo_ssh: ssh://hexo@<你的服务器IP>:<端口号>/home/hexo/hexo.git,master
branch: master
注意:
<你的服务器IP>要替换成你服务器的公网 IP 地址。如果你的 SSH 端口不是默认的 22,请在repo_ssh中指定端口号。
2.2 设置自动登录:跟烦人的密码说拜拜
每次 hexo d 都要输入密码也太麻烦了。我们可以用 SSH 密钥来实现免密登录。
第一步:在本地生成 SSH 密钥
如果你的电脑还没有 SSH 密钥,打开终端,运行以下命令(记得替换成你的邮箱):
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
一路回车,就会在你的用户目录下的 .ssh 文件夹里生成 id_rsa(私钥)和 id_rsa.pub(公钥)两个文件。
第二步:把公钥上传到服务器
复制你本地 id_rsa.pub 文件的全部内容。然后登录到你的服务器,编辑 /home/hexo/.ssh/authorized_keys 文件。如果这个文件或目录不存在,就创建一个。
# 在服务器上操作
vi /home/hexo/.ssh/authorized_keys
把刚才复制的公钥内容粘贴进去,保存退出。这样,服务器就认识你这台电脑了。
大功告成:部署测试
万事俱备,只欠东风!现在,在你的本地 Hexo 项目目录下,执行经典三连:
hexo clean && hexo g -d
这个命令会先清除旧文件,然后生成最新的静态网站文件,最后通过 git 推送到你的服务器。
推送完成后,去服务器的 /home/hexo/blog 目录下检查一下,看看博客文件是不是已经躺在那里了。如果没有,仔细回头检查一下 Git Hook 的设置是否正确。一切顺利的话,现在打开浏览器,输入你的域名或服务器 IP,就应该能看到你崭新的博客啦!
从此以后,每次写完新文章,只需一个 hexo d,全世界都能看到你的更新,是不是超级方便?快去试试吧!