在服务器上部署第二个hexo博客

老弟也开始接触编程了,所以打算给他也搭建一个hexo博客。

本文主要记录在同一个服务器上部署第二个hexo博客的过程,hexo及其配置环境的安装不赘述。

手动部署

教完没有前端基础的老弟hexo博客如何在本地运行之后,教他如何手动部署到服务器上。

1
2
3
4
# 清除缓存
$hexo clean
# 生成站点内容
$hexo generate

生成好的站点内容会放在public目录下,将public目录下的文件上传到服务器,并调整nginx配置新增站点即可。

创建网站目录:

1
2
3
4
5
$su -
$mkdir -p /data/www/meshddy-blog
$chown -R git:git /data/www/meshddy-blog
$chmod -R 755 /data/www/meshddy-blog

新增nginx站点配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
server {
listen 80;

root /data/www/meshddy-blog;

# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;

server_name meshddy.yxchangingself.xyz;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}

我分配了一个子域名给他,在腾讯云控制台添加该子域名的A记录DNS解析,手动部署就完成了。

一键部署

参考:

每次都手动上传文件比较麻烦,所以也弄一下一键部署。

由于之前已经完成了建立git用户等前期准备,现在需要做的,就是为他新建一个git仓库,并配置hook。

远程服务器配置git仓库

关于Git钩子可参见官方文档:Git - Git 钩子

和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。

你将其理解为一个触发器即可,发生某个事件或者说动作的时候就执行自定义脚本。

Hexo部署博客的过程:

  1. 使用源代码(未渲染的markdown以及主题的代码等)生成网站静态文件
  2. 将静态文件通过git从本地库提交到远程库
  3. git的远程库使用bare参数做成没有工作区的裸仓库形式,将网站目录当做其工作区,在远程裸仓库接收到推送时,将收到的内容检出到网站目录中,完成对网站内容的更新。
1
2
3
4
5
6
$cd /home/git
# 新建裸仓库
$git init --bare meshddy-blog.git
# 新建hook
$vim blog.git/hooks/post-receive

编写hooks/post-receive脚本:

1
2
#!/bin/bash
git --work-tree=/data/www/meshddy-blog --git-dir=/home/git/meshddy-blog.git checkout -f

这个命令是用于从指定的 Git 仓库(参数git-dir)检出文件到一个非标准的工作目录(参数work-tree),强制覆盖原有文件。

由于新建的是裸仓库,没有工作空间,所以在触发post-receive(接收提交)的时候,需要利用以上钩子将提交内容检出到指定的工作空间中,也就是网站目录下,这样就实现了,git提交到这个远程库就可以更新网站。

最后调一调权限,服务器端就大功告成了:

1
2
3
$chown -R git:git /home/git/meshddy-blog.git
$chmod +x /home/git/meshddy-blog.git/hooks/post-receive

本地配置一键部署

  1. 安装hexo-deployer-git插件
1
$npm install hexo-deployer-git --save
  1. 编辑 _config.yml
1
2
3
4
deploy:
type: git
repo:
tencent: 'git@服务器IP:/home/git/meshddy-blog.git'
  1. 配置SSH公钥到服务器以便免密登录。在需要部署博客的电脑上用如下命令生成SSH公钥:
1
$ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

在用户文件夹的.ssh目录下,会生成id_rsa和id_rsa.pub文件,分别是私钥和公钥。

视角回到服务器

1
2
3
$su - git #切换到git用户
$mkdir ~/.ssh
$vim ~/.ssh/authorized_keys

将id_rsa.pub文件中的内容添加到该文件末尾就可以了,每个公钥各占一行。

在本地主机的终端检查是否可以登录:

1
$ssh -v git@服务器IP #参数v代表verbose,详细显示调试信息,可以去掉
  1. 在本地主机执行部署命令,即可部署完成:
1
$hexo deploy

在服务器上部署第二个hexo博客

https://yxchangingself.xyz/posts/second-hexo-blog-deploy/

作者

憧憬少

发布于

2025-01-27

更新于

2025-01-27

许可协议