搭建完树莓派的环境之后接下来就是需要将blog上传到Github Page进行发布
令人Angry的 Github Pages
创建一个目录用来放博客的文件,名字任意
1 | sudo mkdir blog |
进入blog目录之后,初始化hexo:
1 | sudo hexo init |
煲汤…
启动hexo:
1 | sudo hexo s |
Ctrl + C
退出,安装 deployer
1 | sudo cnpm install --save hexo-deployer-git |
启动博客: sudo hexo s
上传博客: sudo hexo d
我以为是我的GitHub第一邮箱设置的是Gmail导致了auto detect失败,将第一邮箱设置成163之后也还是失败了…
于是当前的问题就变成了我输入 git config -l
能够正确显示我的name和email,但当我试图push的时候git却说不能识别我的身份…
1 | *** Please tell me who you are. |
easy,easy…(我一开始以为这只是个小问题,没想到这个报错提示一直伴随着我接下来的22小时)
这种问题只可能有两个可能:1.我对git不够了解,需要重新复习一下 git 的目录结构以及配置;2.GitHub那边可能有问题。
第一种我在大学里做项目时就已经遇到过,当时的我选择了绕开,现在的我还是一条懒狗,所以我先找第二种情况可能的解决方法。
于是尝试了很多次比如 hexo-deployer 在 pi 目录、home 目录和 blog目录下重新安装或者是更改_config.yml之类的操作,最终都以失败告终。
然后我决定暂时放弃去看网上的教程和博客,直奔 hexo-deployer 的 官方文档 去:[部署]-[Git]部分,最后的第四点提醒要在Github的库设置中也要设置成_config.yml配置中的分支名称。
打开GitHub官网,翻到库的 Settings
果然,Github 更新了Github Page的用法,必须在库设置(Repository Settings)设置好Source和发布站点…
打开 Github Paga的官方文档 ,根据它的步骤一步步设置所有者和 Github Page的发布站点,如图:
我以为我的 git 推送失败是因为这个没有设置,于是在设置结束之后我直奔终端,结果还是以失败告终…
我排除了第二种情况的可能性,唯一的可能只有我对 git 的一知半解导致了一直在撞南墙
尝试一:利用 cache 将我的密码临时存储在内存里
有可能是name和email的环境路径不对劲导致了deployer读不到信息;
既然读不到我的git身份信息,那就利用 cache 将我的密码临时存储在内存里再进行操作,于是我打开 git 的官方文档 :
1 | cd home/pi |
失败…
尝试二:.git 和 .ssh 文件的位置
我先是到 Pi 目录下(此时pi目录下只有一个 .git 目录)执行了 sudo hexo d
:
说明 hexo命令必须在 执行 hexo init
的目录下进行…Fine
我将Pi目录下的 .git 目录打包送到了bolg目录下:
1 | sudo mv ./.git ./blog |
确认configure文件中是否有email和name的信息,如果没有,添加如下字段:
1 | [user] |
这样的话,我的blog目录下就有.git文件,应当就能读取到我的信息
but…
尝试三:将deployer推倒重来
参考链接:【Hexo】deploy出错的解决方法
1 | cd blog |
还是失败…
尝试四:root 大法好
事先说明,root大法我成功了,但来来回回的曲折比前三种方法可能还要更多一点,顺带着还学习了Linux的权限控制
Linux环境下hexo的 hexo d
在各个博主的博文里体现的似乎都很顺利,几乎没有博主在这一步被卡过…Linux方面找不到我想要的答案,我就去找了Windows下配置 hexo d
的步骤和问题。发现Windows下要进行commit必须要在 Git Bush
进行…
于是我怀疑我的所有命令都是在 Pi@raspberry:
这个用户下进行的,将信将疑地进入blog目录,然后输入 su git
,输入我的Github密码,我的终端变了颜色
也就是说当前我的操作是在git用户下进行的,按理说我是输了GitHub密码进来的,当前的账户就是我的账户不可能会出现deployer不能识别我的情况,输入:
1 | sudo hexo d |
“权力越大,责任越大” ,整挺好;输入Github密码
提示我:Git不在 sudoers 文件中。此事将被报告
那就放弃管理员权限直接开d
1 | hexo d |
提示我 Error: EACCES: permission denied, unlink '/home/pi/blog/.deploy_git/index.html'
.
死结就在这里,sudo的话git没权限,不 sudo 的话deployer 禁止非管理员启动.
我对Linux的配置文件的原则是能不招惹就不招惹,配错了重装一切就得重头来过…
第一个思路:将.deployer_git这个文件的权限拉满拉到 777
1 | cd blog |
再次尝试,失败;
第二个思路:硬着头皮去改 sudoers 这个文件
1 | su root |
注意:在这种情况下,git 这个用户已经拥有和root一样的权限,在这个用户下面进行操作一定要注意
Ctrl+X
,Y 退出
1 | cd home/pi |
没有权限的提示消失了,接下来就是在 git 用户下解决 email 探测问题
在各个目录下面安装 git ,使用 sudo npm install git
在/home,/pi,/blog 下执行这个指令
1 | cd home |
加上自己的user.name 和user.email,见尝试二
1 | su git |
成功了…
原因总结
报错一
1 | *** Please tell me who you are. |
这是最主要的问题,问题的关键在于检测不到我的github信息;
在 pi 和 root用户下都尝试过 sudo git config --global xxxxxx
的操作但还是会出现;
通过Windows配置时需要通过 Git Bush
进行操作发现有可能是账户的问题,就考虑切换 Git 用户进行 git config
最后成功
报错二
1 | EACCES: permission denied, unlink |
权限问题:不加sudo 进行hexo d就会出现报错
报错三
1 | xxxx不在sudoers文件中。此时将被报告 |
切换到root,在/etc/sudoers中加上当前用户的名字
报错四
在每一次hexo d失败后重新尝试时,都可以将你blog目录下的.deployer_git整个目录删掉再进行尝试。然后终端输入
1 | git config --global user.name "yourname" |
或是直接打开.git/config文件,加上
1 | [user] |
报错五
1 | ERROR Deployer not found: git |
再站点目录安装deployer插件,执行
1 | sudo npm uninstall hexo-deployer-git --save |
事实上,在后续的尝试中发现,不需要Git用户进行 sudo hexo d
也可以成功,大致可以知道其实在第四次尝试之前,问题就应该解决了,只不过我没有先进行 root 权限下的push而是用了git用户;也有可能是在git下成功一次之后,hexo 就能够探测到我的 Email地址….相当玄学
域名绑定
阿里云买一个适合自己的域名,看各人博客定位,我选择的是dzyblog.site;
实名认证;
Github下设置打开仓库的 [Settings],拖到下方 [Custom domain] 添加自己的域名;
这个时候仓库的根目录下面就会出现CNAME的文件,打开之后是域名的名字,如果没有则手动添加;
有了域名之后就需要解析;
再更新主题之后会有 sudo hexo d
的操作,然后就可以发现浏览器输入独立域名页面Page显示404,但输入 xxxx.github.io
还是能够访问,非常的amazing
我以为是我DNS解析出了问题,打开阿里云解析:
主机记录 | 记录类型 | 解析路线 | 记录值 |
---|---|---|---|
@ | A | 默认 | ip地址(ip地址的获得通过在终端Ping你的 用户名.github.io 获得) |
www | CNAME | 默认 | 用户名.github.io |
解析是没有问题的,检查目录结构,发现问题所在:
树莓派本地并没有添加上述CNAME的文件,所以在进行一次提交之后,新版本就把原来的老版本里CNAME文件给删除了…
需要在本地source文件里添加CNAME文件,再依次执行 hexo clean
hexo g
hexo s
.
1 | cd blog/source |
1 | sudo hexo clean |
其他问题
中间做github推送时心态崩溃把整个blog的文件目录都删了准备重建,这时候在blog下执行
sudo hexo init
发现报错:心态崩溃*2…加上sudo之后再次尝试:
心态崩溃*3…Google了一圈怀疑可能是自己误删了pi根目录下面的一些隐藏文件导致把git也删了…于是重装git:
不对劲,安装git要在pi的根目录下进行:
cd ..
,安装git提示缺少
package.json
文件,印象里确实把它删了,解决方法:将npm初始化1
npm init
安装git:
1
sudo npm install git
重新搭框架:
1
2cd blog
sudo hexo initgit连接不上了: Permission denied (publickey) 的解决方法(树莓派端)
错误报告:
Permission denied (publickey).
前情提要:在RaspberryPi本地和Github端都已经设置好ssh公钥…但是当我试图push我的本地hexo时,发现没有成功于是就删掉了本地的.ssh文件,按照之前的github公钥方式再次尝试就不行了…
解决方案:
先删除GitHub网页中的ssh公钥和树莓派本地/pi/.ssh/这个文件夹;
不再使用
ssh-keygen -t rsa -C "你的邮箱地址"
这个命令,使用全默认ssh -keygen -t rsa
;cat ~/.ssh/id_rsa.pub
,将这段public key复制到Github的 New ssh 里;回到shell,删掉原来的remote信息
git remote rm origin
;ssh -T git@github.com
,Done. 出现Hi,xxxxx的提示就表示成功。