昨天部署的时候突然spawn failed,怎么部署都部署不上。后来折腾了好一会终于解决了这个报错问题。今天又发现群友有这个问题,所以写个文章来复盘一下。

截图来自群员

重启电脑

有的时候可能是因为网络波动产生的错误,请首先尝试。

服务器相关

如果你的Hexo是部署在服务器时,请注意以下方法

首先检查服务器是否能被ssh跑通,SERVER填写自己的云主机ip,以git用户为例:

1
ssh -v git@SERVER

服务器部署

请一定要检查公钥pub文件是否输入正确

切换至指定用户,以git用户为例:

1
2
3
su git
mkdir ~/.ssh
vim ~/.ssh/authorized_keys

将pub文件内容在i编辑模式下粘贴进去,请特别检查开头和结尾。

esc后输入:wq退出

服务器文件权限问题

如果你部署的账户没有文件夹权限,则可能会出现权限问题,以git用户为例

1
2
chown -R git:git /var/repo/
chown -R git:git /var/hexo/

使用Github部署

如果使用GitHub,可以尝试是否能跑通GitHub

1
ssh -T git@github.com

修改配置文件

打开_config.yml配置文件

修改以下内容

1
2
3
4
5
6
7
deploy:

type: git

repo: https://github.com/yourname/yourname.github.io.git

branch: master

其中的repo修改为

1
repo: git@github.com:yourname/yourname.github.io.git

本地文件产生的问题

如果你是本地文件产生错误,可以考虑以下方式。

重置git的deploy文件夹

huahua提供的方法,删除博客文件夹中的.deploy_git文件夹,然后在终端cd这个文件夹后输入git config --global core.autocrlf false

删除lock文件

小青提供的方法:找到.deploy_git文件夹中的index.lock文件,删除就好了。

强制推送(不推荐)

cd进.deploy_git文件夹,然后使用git push -f强制推送

回滚版本

Perry提供的方法

打开.deploy_git\.git\logs路径下的HEAD查看最近一次正确的那次的commitId然后用git reset --hard commitId回滚

大功告成!

然后可以直接hexo clean && hexo g && hexo d,发现就可以部署上了。