前言
我使用了 Hexo 在 gitpages 部署了自己的个人导航页面,如上图。但是这个是 Hexo 的文件是放在了我实验室的电脑上,以后毕业之后肯定就会丢,所以现在我将其迁移到我的云服务器上,记录一下这次的迁移过程。
准备工作
迁移之前,需要对服务器做以下准备工作
配置 Git
执行以下命令安装 Git
yum update # 更新系统软件包列表
yum install -y git
git --version
设置全局用户名和邮箱
git config --global user.name "miykah"
git config --global user.email "miykah@163.com"
# 查看
git config --global user.name
git config --global user.email
配置 SSH 公钥
ssh-keygen -t rsa -C "miykah@163.com"
查看公钥,复制公钥内容
cat ~/.ssh/id_rsa.pub
Github 配置
打开 Github 设置,添加 SSH Key。
验证是否配置成功
执行命令:
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
。
执行
npm install
安装依赖包
npm install
执行
hexo g
生成网站源文件,也就是对应的/public
目录下的内容(该目录下的内容其实就是 github 仓库中的内容,也就是网站页面文件)
hexo g
在此处我第一次遇到了问题,记录在下面。
执行
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 即可。
评论区