由于之前阿里云的服务器到期, 并且续费新的服务器很不友好 , 这里重新准备(白嫖)了一个新的服务器 , 因此需要迁移一下blog

准备工作

  • 可以正确运行的blog(这里指的基本的配置没有问题 , 之前都可以正确运行)
  • 云服务器(本文以centos 7.9为例)

core

准备服务器

这里准备一个全新的服务器, 意味着很多的东西都需要重新绑定, 配置, 因此搞起来还是有一点点麻烦的。

买服务器的话不需要多说, 只要是可以公网访问的Linux服务器都可以。

宝塔

虽然最开始学习Linux的时候很多人说不建议使用 xx面板 , 不过这里为了快速配置,还是用一下比较好233

如果你在选择服务器的时候已经选择了 宝塔面板 , 那么启动服务器输入bt 选择 14查看面板信息 , 公网登录即可

配置公钥

我们首先通过本地的shell工具远程连接服务器 (这里以Xshell为例)

登录的账户选择root , 密码可以在 服务器的控制台初始化用户密码

登录成功可以看到类似的 输出

1
2
3
4
5
6
Last login: Fri Nov  3 21:57:47 2023 from 122.206.190.75

Welcome to Alibaba Cloud Elastic Compute Service !

[root@iZbp1dul7chbryhj7h36btZ ~]#

添加用户

首先需要确定服务器安装 ssh 服务

这里我们添加用户 git 专门用来执行博客的上传操作

1
useradd git

接着为git生成.ssh目录

1
2
su git
ssh-keygen

配置仓库

首先需要确定服务器安装了 Git 服务

1
2
3
4
5
6
7
8
9
10
[root@iZbp1dul7chbryhj7h36btZ ~]# git --version
git version 1.8.3.1
[root@iZbp1dul7chbryhj7h36btZ ~]# ps -ef | grep ssh
root 1211 1 0 21:10 ? 00:00:00 /usr/sbin/sshd -D
root 14384 1211 0 21:39 ? 00:00:00 sshd: root@pts/0
root 14881 1211 0 21:57 ? 00:00:00 sshd: root@pts/1
root 15328 1211 0 22:21 ? 00:00:00 sshd: git [priv]
git 15330 15328 0 22:21 ? 00:00:00 sshd: git@notty
root 15345 1211 0 22:22 ? 00:00:00 sshd: root@pts/2
root 15378 15347 0 22:23 pts/2 00:00:00 grep --color=auto ssh

接着我们 初始化仓库

cd /var/repo/dhx-blog.git

git init

1
2
3
4
5
[root@iZbp1dul7chbryhj7h36btZ dhx-blog.git]# ls -al
total 12
drwxrwxrwx 3 git root 4096 Nov 3 21:40 .
drwxr-xr-x 3 root root 4096 Nov 3 21:40 ..
drwxr-xr-x 7 git root 4096 Nov 3 22:21 .git

最后记得修改 目录的所有者为git用户

1
chown -R git dhx-blog.git

hooks

这里我们简单了解一下 hexo d的流程

这里我们配置的hooks如下

1
2
3
4
[root@iZbp1dul7chbryhj7h36btZ hooks]# cat post-receive 
git --work-tree=/var/hexo --git-dir=/var/repo/dhx-blog.git/.git checkout -f
[root@iZbp1dul7chbryhj7h36btZ hooks]# pwd
/var/repo/dhx-blog.git/.git/hooks

增加一个新的 worktree ,并指定了其关联的目录是 path ,关联的分支是 <branch> 。后者是一个可选项,默认值是 HEAD 分支。如果 <branch> 已经被关联到了一个 worktree ,则这次 add 会被拒绝执行,可以通过增加 -f | --force 选项来强制执行。

配置ssh

通过上面的流程图我们可以知道在上传代码的时候实际上还是需要ssh远程登录服务器的 , 因此这里最好配置一个公钥访问(否则每次hexo d 都需要手动输入密码 , 非常的烦人)

windows生成公钥

你使用的电脑 , 打开~/.ssh , 上传id_rsa.pub 到服务器的

上传公钥到server

这里通过 Xshell上传 公钥文件到服务器

如果没有安装RZ命令请提前安装

  • yum -y install lrzsz

接着把 公钥添加到授权文件中

1
cp id_rsa.pub authorized_keys
1
2
3
4
[root@iZbp1dul7chbryhj7h36btZ .ssh]# pwd
/home/git/.ssh
[root@iZbp1dul7chbryhj7h36btZ .ssh]# ls
authorized_keys id_rsa id_rsa.pub

Nginx

如果没有安装Nginx请在宝塔面板 软件商店中 搜索并选择 快速安装

我们使用hexo生成的博客网站是纯静态的html页面 , 这里使用Nginx作为容器进行网站搭建。

  1. 添加站点
  2. 配置目录映射

修改本地blog配置文件

找到 blog根目录下的 _config.yml文件 , 修改对应的选项即可

1
2
3
4
5
6
7
8
deploy:
- type: git
repo: git@github.com:adorabled4/adorabled4.github.io.git
branch: master
- type: git
repo: git@47.98.100.253:/var/repo/dhx-blog.git # 这里var/repo/dhx-blog.git.git对应server中目录的路径
# repo: git@blog.dhx.icu:/var/repo/hexo.git @blog.dhx.icu通过DNS绑定服务器的IP
branch: master

这里的git@xxxx , 既可以填写域名 也可以直接填写 服务器的IP , 其中 的git@指的是 ssh登录的账户(如果大胆一点 , 写成root@xxxxxxx也是完全可行的, 不过不是很建议)

hexo d 在部署的时候 也是采用ssh进行远程登录的

更改域名解析

在域名解析中 配置 IP 的记录即可(注意与Nginx中的配置对应)。

problems & solve

! [remote rejected]

! [remote rejected] HEAD -> master (branch is currently checked out)
error: failed to push some refs to ‘47.98.100.253:/var/repo/dhx-blog.git’

阿里云安全组

阿里云自带的防火墙 , 一定要开始80端口的访问。。。

reference