美文网首页效率Github + HexoHexo
手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-

手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-

作者: seay | 来源:发表于2016-06-02 15:18 被阅读2821次
    使用Travis自动部署Hexo(1)

    系列教程列表:

    前言

    前面两篇文章介绍了在github上使用hexo搭建博客的基本环境和hexo相关参数设置等。
    基于目前,博客基本上是可以完美运行了。
    但是,有一点是不太好,就是源码同步问题,如果在不同的电脑上写文章会非常不方便。
    是因为hexo使用的部署命令是把生成好的静态文件上传到仓库中的,所以,在其他电脑上同步下来的只是静态文件而已,不是源码。

    到这里就会想到能不能这样:将源码同步到远程仓库后,可以实现自动生成部署呢?
    答案是肯定的,可以通过Travis CI来实现。

    那么,本文就介绍一下Travis CI实现Hexo博客自动生成并部署。

    说明:
    文中出现的命令,Windows用户注意,命令前面有 $ 的表示在Git Bash中执行,没有的在CMD命令窗口执行。
    Linux和MAC系统在终端下不区分。

    配置多个SSH

    • 生成ssh密钥
      可以使用全局的ssh密钥,不过建议使用单独的ssh密钥,在这里以单独ssh密钥为例。
      由于之前生成过ssh密钥,现在不能覆盖之前的,只需要在执行生成命令时注意一下就好了。
    $ #切换到.ssh文件下
    $ cd ~/.ssh
    $ #生成密钥,后面换成自己的github邮箱
    $ ssh-keygen -t rsa -C "SeayXu@163.com"
    

    输入上面命令后回车一下,当提示Enter file in which to save the key (/c/Users/Seay/.ssh/id_rsa):时,输入新的ssh密钥文件路径和文件名(不能是.ssh/id_rsa),这里输入id_rsa_blog,然后一路回车。

    生成SSH密钥
    密钥已经成功生成。
    • 添加ssh到github
      登录到github中,点击进入到博客仓库。
      点击右上方的Settings进入到设置页面,点击左边的Deploy keys项。
      在右上点击Add deploy key,然后在下面输入标题,把生成的密钥id_rsa_blog.pub里面的内容复制到key文本框中,选中下面的Allow write access,最后点击Add key

      github添加ssh
    • 新建配置文件
      在.ssh文件夹中创建一个名为config的配置文件。

    $ cd ~/.ssh
    $ touch config
    
    • 编辑配置信息
      用编辑器打开config文件,添加如下信息:
    # github
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa
    # 这里是空行
    # github_blog
    Host github.com
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa_blog
    

    提示:这里的密钥文件路径根据自己的做相应修改。

    配置Travis

    • 接入Travis CI
      打开Travis CI网站,使用github账号登录。
      将鼠标放在右上角的用户名上,点击Account选项,会显示github的项目。
      找到博客项目,点击前面带有 X 符号的按钮,开启travis支持。

      结果图

      经验提示

      1.Windows用户可能会出现如下错误:

      The command "openssl aes-256-cbc -K $encrypted_xxxxxxxxxxx_key -iv $encrypted_xxxxxxxxxxx_iv -in .travis/id_rsa_blog_travis.enc -out ~/.ssh/id_rsa -d" failed and exited with 1 during .
      

      这个错误在github中有issues,可以去看一下,我回答了部分。
      我的原因是travis在执行加密操作生成的加密信息位数不对。之后在ubuntu系统中操作就一切正常。

      如果不想安装虚拟机,还有另外一种方式实现,在下一篇文章中会详细说明。

      2.所有的配置文件是yaml格式,空格一定要注意。

      【Hexo博客交流群】
      群号:582271078

      Hexo博客交流群

    相关文章

      网友评论

      • 咻咻ing:用Gitee搭建博客,速度稳定不怕被墙,好像还不错
        https://www.jianshu.com/p/5014133ba61a
      • a10a427fef83:$ ssh-add ~/.ssh/id_rsa
        Enter passphrase for /home/travis/.ssh/id_rsa:
        就一直停留在这里怎么破
      • 星好唯柔:作者你好:
        我在操作到加密这一步的时候,出现这个错误
        travis encrypt-file .travis/id_rsa_blog .travis/ --add

        Can't figure out GitHub repo name. Ensure you're in the repo directory, or specify the repo name via the -r option (e.g. travis <command> -r <owner>/<repo>)

        我看了上面其他人的回复,看到您说要确定是不是在正确路径, 还有是否配置了用户以及ssh, 这么回答其实是很模糊的,比如您说是不是正确路径, 那正确路径是啥呢? 是不是可以截个图表示一下呢? 是否配置了用户以及ssh,那究竟是要配置呢, 还是因为配置了所以出现了这个问题呢? 您这里没有给出一个详细的解答!! 请看到我的回复,麻烦您给一个总结吧 谢谢啦:pray:
      • 在花:The command "hexo clean" exited with 126.
        0.01s$ hexo g
        /home/travis/.travis/job_stages: line 54: ./node_modules/.bin/hexo: Permission denied
        The command "hexo g" exited with 126.
        after_script.1
        0.01s$ cd ./public
        after_script.2
        0.01s$ git init
        Initialized empty Git repository in /home/travis/build/zaihuaone/zaihuaone.github.io/public/.git/
        after_script.3
        0.01s$ git config user.name "zaiXXXX"
        0.01s$ git config user.email "zaixxxxx@gmail.com"

        请问,这是什么原因
      • 3134e321638d:您好,您写的方法非常赞,我已经在github上搭建完成自己的博客了,但是出现两个问题:
        1、在使用travis encrypt-file .travis/id_rsa_blog .travis/ --add 加密文件时,总是提示:No such file or directory - git config --get travis.slug,一直不知道怎么解决?
        2、我的博客是https://perixiaowan.github.io,只有题目,内容又是如何添加呢?
        3、假如内容已经编辑好,需要修改,是再次提交新的内容么?
        非常期待您的回复。谢谢
        3134e321638d:@SeayXu 很感谢您的回复,我按照您说的把目录路径都认真的检查了一遍,依然出现这种结果,No such file or directory - git config --get travis.slug。还要麻烦您了,我的目录时这样放置的:
        (1)c 盘下:
        i) .ssh文件夹包含
        config github_rsa github_rsa.pub id_rsa id_rsa.pub id_rsa_blog id_rsa_blog.pub 这些文件;
        其中,config文件中目录设置的是 IdentityFile /c/Users/xhs/.ssh/id_rsa和 IdentityFile /c/Users/xhs/.ssh/id_rsa_blog
        ii).travis文件夹(自动生成的)包含:config.yml error.log travis.sh
        (2) E盘下(项目所在的目录 E:/blog):
        i).travis(touch生成的)包含:id_rsa_blog(从c盘.ssh目录下copy过去的),ssh_config(touch生成,内含路径: IdentityFile /c/Users/xhs/.ssh/id_rsa)
        ii) .travis.yml
        iii)_config.yml
        iv)其他,source public node_modules等等文件夹
        再次感谢大牛 :relaxed:
        seay:@月亮兔 不好意思,没能及时回复你,下面就来一一回答问题。
        1.确保文件夹存在,路径和文件名不能错了。
        2.添加内容直接在source文件夹下找到对应的 .md 文件,写在里面就可以了。内容使用的是markdown语法,你可以参考下我的相关文章。
        3.修改了内容就要推送到github上,这样才会更新。
        3134e321638d:@月亮兔 哈哈,抱歉, 3个问题,又加了一个,我的项目目录是在E盘下的blog文件夹,E:\blog\.travis,加密文件id_rsa_blog和ssh_config文件也是放在这个目录中,.ssh目录在c盘user目录下,.ssh这个目录下面有id_rsa_blog和id_rsa_blog,config文件
      • Kevin_bin:加密操作时 (travis encrypt-file .travis/id_rsa_blog .travis/ --add)
        出现Can't figure out GitHub repo name. Ensure you're in the repo directory, or specify the repo name via the -r option (e.g. travis <command> -r <owner>/<repo>),不知道怎么解决?谢谢!
        seay:@故园无此声_6cc7 首先,路径要对;然后,是否配置了用户以及SSH。
        8deb40ced9c6:想问一下你最后怎么解决的?我也遇到了一样的问题,按照5楼的解决方式也无效。谢谢了!
        seay:@Kevin_bin 你不是在对应的仓库目录下吧,加密的文件要在仓库目录之下。
      • Kevin_bin:当执行travis login --auto这条后,密码输错后,再次登陆报错如下,这个怎么解决??
        /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/client/session.rb:221:in `raw': invalid access token (Travis::Client::NotLoggedIn)
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/client/session.rb:333:in `check_ssl'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/client/session.rb:41:in `initialize'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/client.rb:36:in `new'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/client.rb:36:in `new'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/cli/api_command.rb:41:in `initialize'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/cli/parser.rb:36:in `new'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/cli/parser.rb:36:in `new'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/lib/travis/cli.rb:62:in `run'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/gems/travis-1.8.2/bin/travis:18:in `<top (required)>'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/bin/travis:23:in `load'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/bin/travis:23:in `<main>'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/bin/ruby_executable_hooks:15:in `eval'
        from /Users/kevin/.rvm/gems/ruby-2.0.0-p648/bin/ruby_executable_hooks:15:in `<main>'
        Kevin_bin:@SeayXu 还是报同样的错误
        seay:@Kevin_bin 关闭命令行窗口,然后重新操作
      • 李小争:教程很详细.
        安装travis命令 install 拼错了 :smile:
        seay:@MarcyLi 这个还没遇到过,谢谢分享
        李小争:@MarcyLi 加密操作出现 Can't figure out GitHub repo name. Ensure you're in the repo directory, or specify the repo name via the -r option (e.g. travis <command> -r <owner>/<repo>)

        在作者命令的后面 添加上 -r xxx/xxx.github.io
        seay:@MarcyLi 多谢指正!
      • d853f226e9cb:不错,学习完也搭建一个😊
        seay:@道与天成 好的呀,能帮到你就好。
      • 4975f5189495:不错
        seay:@penetest 谢谢你的支持
      • 74b06379b301:学习了
        seay:@三风 这个挺实用的,值得学习一下

      本文标题:手把手教从零开始在GitHub上使用Hexo搭建博客教程(三)-

      本文链接:https://www.haomeiwen.com/subject/dushdttx.html