二、将Hexo部署到自己的服务器教程

书写背景:之前基于GitHub和HEX出现访问很慢和图片无法显示,主要是国内很多时候访问GitHub速度会很慢,阅读博客的体验很不好,为了解决这个问题,我们可以将Hexo搭建到自己的服务器上,这样访问博客的速度就有了很大的提升!

一、环境

1.1 相关信息

电脑信息:M1芯片,MacOS Monterey 12.2.1

服务器信息:腾讯云轻量级服务器

系统信息:CentOS Linux release 7.9.2009 (Core)

二、服务端操作

2.1 安装git和nginx

1
yum install git nginx -y

image-20220325165731976

2.2 创建git用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#创建git用户
useradd git
#设置git用户密码
passwd git

#给git用户配置sudo权限
chmod 740 /etc/sudoers
#修改/etc/sudoers文件
vim /etc/sudoers
# 找到root ALL=(ALL) ALL,在它下方加入一行
git ALL=(ALL) ALL

#修改sudoers文件权限
chmod 400 /etc/sudoers

image-20220325170420278

2.3 给git用户添加ssh密钥

1
2
3
4
5
6
7
8
9
10
11
12
#切换到git用户
su git
#创建目录
mkdir -p ~/.ssh
#创建文件
touch ~/.ssh/authorized_keys
#修改权限为读写
chmod 600 ~/.ssh/authorized_keys
#修改权限为读写执
chmod 700 ~/.ssh
#修改authorized_keys文件,将ssh密钥粘贴进去 在你电脑上找到git密钥
vim ~/.ssh/authorized_keys

2.4 创建git仓库并使用git-hooks实现自动部署(git用户操作)

1
2
3
4
5
6
7
8
9
10
#创建git仓库目录
sudo mkdir -p /var/repo
#创建hexo目录
sudo mkdir -p /var/www/hexo
#切换到/var/repo目录
cd /var/repo/
#初始化一个名叫blog的仓库
sudo git init --bare blog.git
#增加一个post-update文件
sudo vim /var/repo/blog.git/hooks/post-update

post-update内容如下:

1
2
#!/bin/bash
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

给post-update文件授权

1
2
3
4
5
6
#将/var/repo目录授权给git用户
sudo chown -R git:git /var/repo
#将/var/www/hexo目录授权给git用户
sudo chown -R git:git /var/www/hexo
#给post-update文件授予执行权限
sudo chmod +x /var/repo/blog.git/hooks/post-update

2.5 配置Nginx

1
2
3
4
5
6
#退出git用户
exit
#切换到/etc/nginx/conf.d/目录
cd /etc/nginx/conf.d/
#vim blog.conf 文件
vim blog.conf

blog.conf文件详细内容如下:

1
2
3
4
5
6
server {
listen 80 default_server;
listen [::] default_server;
server_name blog.geekdive.com;
root /var/www/hexo;
}

检查Nginx语法并启动Nginx

1
2
3
4
5
6
#检查Nginx语法
nginx -t
#启动nginx
systemctl start nginx
#查看nginx状态
systemctl status nginx

image-20220325182650654

2.6 修改git用户的默认shell环境

修改/etc/passwd文件最后一行,将/bin/bash修改为/usr/bin/git-shell

1
vim /etc/passwd

image-20220328101402615

三、本地配置(Mac)

3.1 安装git

1
2
3
4
#通过xcode安装git
xcode-select --install
#查看git版本
git --version
image-20220328103111426

3.2 安装Node.js和 Npm

下载对应安装包安装或者通过homebrew安装皆可。

image-20220328103403953

3.3 安装hexo及相关插件

1
sudo npm install hexo-cli hexo-server hexo-deployer-git -g

3.4 本地初始化博客站点

1
2
hexo init ~/blog
npm install hexo-deployer-git --save

3.5 本地hexo配置

1
2
3
4
5
6
7
8
9
10
11
# 修改Hexo的deploy配置
cd blog
vim _config.yml

# 找到deploy配置部分
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: git
repo: root@xxx.xx.xxx.xxx:/var/repo/blog.git # IP填写自己服务器的IP即可
branch: master

3.6 将本地Hexo代码部署到服务器

1
2
3
4
5
6
7
8
#清除缓存
hexo clean

#生成静态页面
hexo generate

#将本地静态页面目录部署到云服务器
hexo deploy

3.7 测试

输入域名或者服务器IP地址即可打开博客。

image-20220329153459372