前言
已经部署到腾讯云上发布的网站,简单地从一个电脑上将本地的文件夹复制到另一个电脑上是无法直接 hexo g -d
来进行部署的,会遇到各种各样的错误,比如最常见的缺少权限。
因此,在更换新设备,对本地数据进行迁移的时候,要重新对网站进行一次部署设置——毕竟门锁换了,还是要重新配一把钥匙的。
1 迁移文件夹和必要依赖
第一步最终还是要把文件夹复制过来的 w,这里主要需要解决复制过后产生的各种各样的问题。
工程迁移后,先重新安装 hexo、npm、Node.js、Git 等,配置好本地的环境。
必备环境在这里~
这次的重新安装环境,顺带也能升级一波。
执行 hexo 脚本无权限
依赖环境配置完成后,先尝试运行 hexo s
,可能会出现如下报错:
这是 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) ALL
git ALL=(ALL) ALL
ESC 进入指令模式,输入 `:wq` 保存退出。
建议编辑结束后将权限改回 400,防止误修改。
云服务器 SSH 配置
切换为 Git 用户后进行 SSH 的配置:
su git # 切换为 Git 用户
mkdir ~/.ssh # 迁移工程应该存在该文件夹
vim ~/.ssh/authorized_keys # 编辑公钥存储
在打开的文件中复制本地的 id_rsa.pub
公钥,保存退出。
重新对 SSH 赋予权限,authorized_keys
赋予 600,.ssh
文件夹赋予 700。
之后在本地测试 Git 能否链接:
ssh -v git@服务器公网ip
出现欢迎的信息就说明配置成功,本地机器可以正常连接上云服务器啦。
后语
配置到这里,迁移的工作就已经基本完成了——什么,你问我为什么不是完全完成?快去工程文件夹里面执行 hexo g -d
看看到底能不能正常运行啊!
因为我的整体迁移工作比较顺利,不正常运行的话我也没办法请告知我,我好看一看解决方法加点容错上去,希望能帮到更多的人。
按照这个文档去部署新的云服务器会缺少 Git Hook、宝塔面板、安装 Nginx、配置本地推送地址这些步骤,所以还是不太行的……有时间的话再说啦~
因为我饿了,觅食去了。
by.饥肠辘辘的Likey_ฅ^._.^ฅ
评论