博客迁移

本文最后更新于:2024年8月11日 晚上

服务器迁移

前期准备

国内的服务器访问速度比Github快得多,因此考虑把博客迁移到服务器上是不错的。

首先你得拥有一个已经进行ICP备案的服务器,因为通过域名访问的时候会默认访问80443端口,如果不进行ICP备案的话这两个端口是阻断访问的,当然你通知你的好朋友使用别的端口访问也可以。

服务器安装Git及其初始化

本次教程没有使用Docker,后期会考虑应用这些内容,这次先把网站直接挂载在服务器本机上

!注意!本教程参考自瑾知,请主要参考该文章,本文章主要作为实现的记录,不具备非常大的参考价值,因为其设置上存在权限混乱问题,如果你不在意或者有能力修正的话,可以通知我修正文章,那么,请往下看吧。

首先在服务器上安装Git

1
yum install git

用户设置

值得注意的是这个用户名字git不是一定的,你可以取任意一个舒服的名字,但是后面的代码中所有git的部分你都需要修改为你自己取的名字

1
2
3
4
adduser git
# 为Git添加一个用于操作的用户
passwd git
# 修改用户yourname的密码,会有不强制的检查,你可以设置得复杂或简单

添加公钥

首先进入用户进行操作,不适用root,这样可以避免一些权限错乱导致的问题

1
su git

输入密码后,首先创建密钥储存的目录

1
mkdir .ssh && chmod 700 .ssh

然后创建保存公钥的文件

1
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

在你的电脑的目录C:\Users\QLozan\.ssh\id_rsa.pub里找到你的公钥文件,之前在前述文章里面已经创建好了,直接使用即可。公钥是这样的

1
2
3
4
5
6
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair

!排障!需要注意,不要把私钥当做公钥了,否则会导致推送出错!

现在进入文件夹内修改authorized_keys来导入公钥

1
2
cd /home/git/.ssh/
nano authorized_keys

直接使用Ctrl+Shift+V粘贴即可,一个公钥只占一行

配置钩子

与之前不同的是,文章会先推送至一个裸仓,然后由钩子钩到正确的静态网页的位置,他类似于一个拷贝脚本,每当有新的推送,它都会自动钩取文件。

通过下面的代码打开钩子配置文件post-receive

1
nano /home/git/blog.git/hooks/post-receive

在里面写入下面的代码,#不是注释,必须全部粘贴进去

1
2
#!/bin/sh
git --work-tree=/www/wwwroot/hexo --git-dir=/home/git/blog.git checkout -f
  1. ■work-tree 静态文件在的地方,也就是你的网站根目录
  2. ■git-dir 裸仓库的位置,也就是推送的目的地

使用Ctrl+O保存并Ctrl+X退出Nano编辑器

创建静态文件目录

首先执行下面的代码,在静态文件目录中创建你的静态网页目的地

1
2
3
mkdir /www/wwwroot/hexo
chown -R git:git /www/wwwroot/hexo
chmod -R 755 /www/wwwroot/hexo

!排障!注意:这里创建的时可能提示没有权限,可以先提权创建文件,但是后期可能会遇到Permission Denined的错误,你可以直接给用户提权也可以尝试修改目录的权限,我是直接设置权限为777后又把用户权限调回755,但是这可能导致一些问题。推荐你尝试用git账号创建文件夹

打开你的宝塔面板,宝塔面板是腾讯云服务器自带的,如何在你的服务器安装宝塔面板请自行搜索

在左侧栏目中,点击网站去建立网站,点开的面板如下

  1. 域名 直接填入你的域名,这个域名我使用了备案时的域名
  2. 是否添加解析由你自己决定,我备案时已经添加了解析
  3. 根目录:之前已经创建过了,是/www/wwwroot/Hexo

添加SSL证书

点击编辑进入如下界面

输入你的SSL证书,你的SSL证书可以在DNSPOD里面下载,腾讯云会自动帮你选择最合适的证书,一般使用Nginx的证书,然后使用文本打开KEY文件和PEM文件

本地Hexo设置

在你的目录内,编辑_config.ymldeplye区块(最后一行)

改成以下形式:

这里给出代码

1
2
3
4
5
deploy:
type: git
repo:
server: git@domain:/home/git/blog.git,master
#github: https://github.com/QLozin/QLozin,master

如果你想同时上传Github和服务器,可以把注释块#删掉

其中:

qlozin:是你创建的账户名,如果你是按着教程直接写,应该是git

github: 这个地方是你之前的地址,直接复制过来即可

master: 默认分支,保持master即可,如果你的github是main的话,修改即可

推送

执行hexo cl然后hexo ghexo d即可正确推送至服务器

排障

你可以先尝试CMD的SSH git@yourServerIP通过密钥链接服务器,看看能否联通,不能联通的话请再次检查你的密钥是否正确,一般是不会出现密钥配置之外的问题的

Permission Denined如果推送的时候出现这个问题,而且Github能成功推送的话,说明密钥配置正确,请检查你的子账户是否拥有目的静态网页文件的权限,尝试提权


博客迁移
https://qlozin.top/2022/06/16/测试界面/
作者
QLozin
发布于
2022年6月17日
更新于
2024年8月11日
许可协议