前言
已经部署到云服务器上发布的网站,简单地从一台电脑将文件夹复制到另一台电脑上是无法直接 hexo g -d 再次部署的,会遇到各种各样的错误,比如最常见的缺少权限。
因此,在更换新设备,对本地数据进行迁移的时候,要重新对网站进行一次部署设置——毕竟门锁换了,还是要重新配一把钥匙的。
……钥匙换了,要重新配一个门锁。
1 迁移文件夹和必要依赖
总之复制文件夹是第一步,这里需要解决复制过后产生的各种各样的问题。
工程迁移后,先重新安装 hexo、npm、Node.js、Git 等,配置好本地的环境。
环境准备在这里~
这次的重新安装环境,顺带也能升级一波。
执行 hexo 脚本无权限
依赖环境配置完成后,先尝试运行 hexo s,可能会出现如下报错:
hexo : 无法加载文件 \npm\hexo.ps1, 因为在此系统上禁止运行脚本...这是 Win11 的 PowerShell 执行策略默认设置的问题,hexo 脚本 hexo.ps1 被禁止执行了。执行如下命令检查策略定义:
Get-ExecutionPolicy -List输出的执行策略定义可能并非为 Restricted ,而是 Undefined,对于 windows 来说,Undefined 默认等同于 Restricted。
此时需要查找【设置】-【开发者选项】-【PowerShell】,将该设置下的“允许本地 PowerShell 脚本在未签名的情况下运行”打开。

再次输入命令检查策略定义,CurrentUser 一行被修改为 RemoteSigned,确认设置成功。
之后 hexo 脚本就可以正常运行了。
2 重新连接云服务器
云服务器也存在门锁(SSH 加密登录协议),需要有钥匙(SSH Keys)才能进入。与物理钥匙有些不同的是,SSH 是在门锁中加入认证,让锁去适配钥匙。每台设备都有自己独特的钥匙,添加进云服务器中的 SSH 认证中就可以开门进入了。
即个人设备产生公钥和私钥,将公钥(门锁)交给云服务器,用私钥(钥匙)进行登录。
这是刷脸解锁吧。
本地准备 SSH
更换设备当然要重新 SSH,这个步骤在第一次部署的时候想必也都经历过。
也都忘了,毕竟刷脸解锁是自动的,换脸之后大伙也总是想不起来去更新认证……嘶,什么职业需要频繁换脸啊?
本地终端上输入:
ssh-keygen -t rsa -C "邮箱地址"在提示的路径下找到 id_rsa.pub 公钥文件,复制其中的内容备用。
云服务器设置
云服务器 Git 配置
在云服务器中登录,弹出指令执行的窗口,输入指令获取 root 权限:
sudo su root将其中的 Git 升个级吧:
yum install git重新检查下 Git 账户权限:
adduser git # 迁移不需创建 git 账户,第一次部署的时候已经有了chmod 740 /etc/sudoers # 修改改文件的编辑权限vim /etc/sudoers # 使用 vim 进行编辑在 vim 中,键盘输入 i 进入 INSERT 编辑模式,使用方向键移动光标,确认如下行存在:
root ALL=(ALL) ALLgit ALL=(ALL) ALL键盘点击 esc 进入指令模式,输入 :wq 保存退出。
建议编辑结束后将权限改回 400,防止之后可能的误修改。
云服务器 SSH 配置
切换为 Git 用户后进行 SSH 的配置:
su git # 切换为 Git 用户mkdir ~/.ssh # 迁移工程应该存在该文件夹vim ~/.ssh/authorized_keys # 编辑公钥存储在打开的文件中复制本地的 id_rsa.pub 公钥,保存退出。
Vim 的使用方法不会还要在这里帮你复习吧?

重新对 SSH 赋予权限,authorized_keys 赋予 600,.ssh 文件夹赋予 700。
之后在本地测试下 Git 是否正常连接:
ssh -v git@服务器公网ip出现欢迎的信息就说明配置成功,本地机器可以正常连接上云服务器啦。
后语
配置到这里,迁移的工作就已经基本完成了——什么,你问我为什么不是完全完成?快去工程文件夹里面执行 hexo g -d 看看到底能不能正常运行啊!
因为我的整体迁移工作比较顺利,不正常运行的话我也没办法请告知我,我好看一看解决方法加点容错上去,希望能帮到更多的人。
按照这个文档去部署新的云服务器会缺少 Git Hook、宝塔面板、安装 Nginx、配置本地推送地址这些步骤,所以它只是一个迁移的参考,照着部署时不太行的……请检查其他的文档吧~
因为我饿了,觅食去了。
by.饥肠辘辘的L1keyneko_ฅ^._.^ฅ
分享文章
生成精美分享图或复制链接,与更多人分享本文。