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

截图来自群员

网络问题

可以说明的是这个问题99%由于网络问题造成的,我们的目标就是为了解决网络问题。

重启电脑

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

科学上网问题

如果你使用git走了代理,可能是因为代理软件问题导致无法连接。请检查代理软件是否正常和代理端口是否正确。

设置git代理命令:

1
2
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

如果你没有使用代理,那么可以取消git代理:

1
2
git config --global --unset http.proxy
git config --global --unset https.proxy

修改DNS

可以将你的电脑dns设置为国际dns,再尝试。

1
2
8.8.8.8
1.1.1.1

服务器无法连接

如果你的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部署

如果使用GitHubPage,可以尝试是否能跑通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

多系统混合编写导致的问题

silver提供的方法,cd进.deploy_git文件夹,输入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,发现就可以部署上了。