Hexo 博客部署到 Nginx 服务器


嘿,各位博主!还在为怎么把本地写好的 Hexo 博客帅气地展示给全世界而烦恼吗?别担心,今天我们就来手把手教你,如何通过 GitNginx,轻松几步就把你的静态博客部署到自己的服务器上,实现优雅的自动化发布。这篇教程会像聊天一样,带你走完整个流程,保证逻辑清晰,让你一看就懂,一学就会!

咱们的目标

简单来说,我们要实现的效果就是:在本地电脑上用 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

第二步:编辑钩子文件

用你喜欢的编辑器(比如 vinano)打开 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,全世界都能看到你的更新,是不是超级方便?快去试试吧!


  目录