侧边栏壁纸
  • 累计撰写 27 篇文章
  • 累计创建 42 个标签
  • 累计收到 33 条评论

目 录CONTENT

文章目录

记录一次Hexo博客迁移

miykah
2023-12-12 / 1 评论 / 0 点赞 / 54 阅读 / 7046 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-12-12,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

我使用了 Hexo 在 gitpages 部署了自己的个人导航页面,如上图。但是这个是 Hexo 的文件是放在了我实验室的电脑上,以后毕业之后肯定就会丢,所以现在我将其迁移到我的云服务器上,记录一下这次的迁移过程。

准备工作

迁移之前,需要对服务器做以下准备工作

配置 Git

  1. 执行以下命令安装 Git

yum update # 更新系统软件包列表
yum install -y git
git --version
  1. 设置全局用户名和邮箱

git config --global user.name "miykah"
git config --global user.email "miykah@163.com"

# 查看
git config --global user.name
git config --global user.email
  1. 配置 SSH 公钥

ssh-keygen -t rsa -C "miykah@163.com"

查看公钥,复制公钥内容

cat ~/.ssh/id_rsa.pub
  1. Github 配置

打开 Github 设置,添加 SSH Key。

  1. 验证是否配置成功

执行命令:

ssh -T git@github.com

安装 nodejs 和 npm

执行命令:

yum install -y nodejs

# 查看是否安装成功
node -v
npm -v

安装 Hexo 及其他组件

安装 hexo-cli

npm install -g hexo-cli
# 输入hexo -v检查是否安装成功

安装 hexo-deployer-git

npm install hexo-deployer-git --save # 为了使用hexo d来部署到git上 

数据迁移

在服务器对应位置创建文件夹,复制电脑上 hexo 目录下红框中的文件,到服务器中。

服务器中的文件如图所示:

安装部署

使用 npm install 命令,进行模块安装。这里不需要使用 hexo init 进行初始化,因为有的文件我们已经拷贝生成过来了。如果不慎在此时用了hexo init,则站点的配置文件_config.yml里面内容会被清空使用默认值,所以这一步一定要慎重,不要用hexo init

  1. 执行 npm install 安装依赖包

npm install
  1. 执行 hexo g 生成网站源文件,也就是对应的 /public 目录下的内容(该目录下的内容其实就是 github 仓库中的内容,也就是网站页面文件)

hexo g

在此处我第一次遇到了问题,记录在下面。

  1. 执行 hexo d 部署到 github

hexo d
# 这里要我输入 github 的用户名以及密码,这个密码不是登录密码,是github中的token
# 前往 github中 settings/Developer settings/personal access tokens 中生成 

问题记录

hexo g 遇到报错

[root@RainYun-Zl1DlWlK webstack]# hexo g
INFO  Validating config
FATAL 
TypeError: Object.fromEntries is not a function
    at then.filter.then.modules (/opt/webstack/node_modules/hexo/dist/hexo/load_plugins.js:36:23)
    at tryCatcher (/opt/webstack/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/opt/webstack/node_modules/bluebird/js/release/promise.js:547:31)
    at Promise._settlePromise (/opt/webstack/node_modules/bluebird/js/release/promise.js:604:18)
    at Promise._settlePromise0 (/opt/webstack/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/opt/webstack/node_modules/bluebird/js/release/promise.js:729:18)
    at Promise._fulfill (/opt/webstack/node_modules/bluebird/js/release/promise.js:673:18)
    at MappingPromiseArray.PromiseArray._resolve (/opt/webstack/node_modules/bluebird/js/release/promise_array.js:127:19)
    at MappingPromiseArray._filter (/opt/webstack/node_modules/bluebird/js/release/map.js:134:10)
    at MappingPromiseArray._promiseFulfilled (/opt/webstack/node_modules/bluebird/js/release/map.js:106:18)
    at Promise._settlePromise (/opt/webstack/node_modules/bluebird/js/release/promise.js:609:26)
    at Promise._settlePromise0 (/opt/webstack/node_modules/bluebird/js/release/promise.js:649:10)
    at Promise._settlePromises (/opt/webstack/node_modules/bluebird/js/release/promise.js:729:18)
    at _drainQueueStep (/opt/webstack/node_modules/bluebird/js/release/async.js:93:12)
    at _drainQueue (/opt/webstack/node_modules/bluebird/js/release/async.js:86:9)
    at Async._drainQueues (/opt/webstack/node_modules/bluebird/js/release/async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (/opt/webstack/node_modules/bluebird/js/release/async.js:15:14)
    at runCallback (timers.js:705:18)
    at tryOnImmediate (timers.js:676:5)
    at processImmediate (timers.js:658:5)

查询后发现好像是 node 版本问题。将 node 版本从 10 升级到 14。

升级过程:

解决每次 hexo d 都需要输入用户名和 token

我发现每次执行 hexo d 都会让我输一次用户名和密码(这个不是 github 账号密码,而是 token)。

要是输密码还好,token 根本记不住(现在需要使用 token 而不是 password)

[root@RainYun-Zl1DlWlK webstack]# hexo d
INFO  Validating config
INFO  Deploying: git
INFO  Clearing .deploy_git folder...
INFO  Copying files from public folder...
INFO  Copying files from extend dirs...
[master 72a6bce] Site updated: 2023-12-12 15:30:14
 1 file changed, 1 insertion(+), 1 deletion(-)
Username for 'https://github.com': miykah
Password for 'https://miykah@github.com': xxxxxxxxxxx

解决方法:

修改 /_config.yml 文件

找到如下位置:

deploy:
  type: 'git'
  repo: https://github.com/Miykah/miykah.github.io.git
  branch: master

将其修改为:

deploy:
  type: 'git'
  repo: https://your-token@github.com/Miykah/miykah.github.io.git
  branch: master

your-token 修改为实际的 token 即可。

0

评论区