之前是将博客部署在 GitHub Page 和 Gitee Page 上 , 部署的两套 Hexo 版本和主题均不相同 , 维护力度略大 . 现将 GitHub Page 的这套迁移到自己的服务器上.

服务器环境准备

安装 git 和 nginx

1
yum install -y nginx git

添加 git 用户

1
2
3
4
5
6
7
8
9
10
useradd git
passwd git

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

chmod 400 /etc/sudoers

给 git 用户添加 ssh 密钥

1
2
3
4
5
6
su - git
mkdir -p ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorzied_keys
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys #将ssh密钥粘贴进去

创建 git 仓库并使用 git-hooks 实现自动部署

1
2
3
4
5
sudo mkdir -p /var/repo    #新建目录,这是git仓库的位置
sudo mkdir -p /var/www/hexo
cd /var/repo #转到git仓库的文件夹
sudo git init --bare blog.git #创建一个名叫blog的仓库
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
cd /var/repo/blog.git/hooks/
sudo chown -R git:git /var/repo/
sudo chown -R git:git /var/www/hexo
sudo chmod +x post-update #赋予其可执行权限

配置 nginx

1
2
cd /etc/nginx/conf.d/
vim blog.conf

blog.conf

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

配置开机启动等

1
2
3
4
5
6
7
8
# 设置开机启动
sudo systemctl enable nginx
# 启动服务
sudo systemctl start nginx
# 重启服务
sudo systemctl restart nginx
# 重新加载,因为一般重新配置之后,不希望重启服务,这时可以使用重新加载
sudo systemctl reload nginx

修改 git 用户的默认 shell 环境

1
2
3
vim /etc/passwd
#修改最后一行
#将/bin/bash修改为/usr/bin/git-shell

解析域名

本地环境准备

Git & Node & Npm

根据自身系统查找教程 , 略

安装 Hexo 及插件

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

本地初始化博客站点

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

本地 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

部署 Hexo

1
2
3
hexo clean
hexo g
hexo d

配置 SSL

这里可以参考下一篇文章 .

参考资料

参考链接