美文网首页
Hexo&Github Blog 搭建

Hexo&Github Blog 搭建

作者: Kingty | 来源:发表于2018-06-08 11:12 被阅读0次

    今天用Github PagesHexo 来搭建了一个静态的博客。好处就是不需要数据库也不需要服务器,完全交由Github托管就可以拥有自己的博客。下面我记录了一下我自己的搭建的过程。

    Contex

    • linux Cenos 6.5,64位
    • Hexo 3.7.1

    Github

    因为所有的内容都是Github托管的,所以你首先要有一个Github账号。然后在创建一个Repository,这个Repository必须要满足一个规则才能生成Pages.详细内容可以查阅官方文档 Github Pages

    简单来说就是创建一个名字为 username.github.io的库,其中username为你自己的Github的用户名。

    创建成功之后,把项目clone到本地。我机器本身还没有Git所以我先安装Git

    yum info git
    yum install -y git
    
    

    然后我还需要添加这台机器对github的ssh权限,这样才能访问github。

    #生成key
    ssh-keygen -t rsa -C "xxxx@gmail.com"
    
    cd .ssh/
    cat id_rsa.pub 
    # 得到这个key后把它添加进你的github key里面
    
    

    完成之后我们把刚才创建的Repository拷贝到本地。

    git clone git@github.com:username/username.github.io.git
    
    

    拷贝下来之后,我们在里面写一个我们的首页,并提交到我们的Repository

    cd kingty.github.io
    
    echo "Hello World" > index.html
    
    git add --all
    
    git commit -m "Initial commit"
    
    git push -u origin master
    
    

    到这里,你到浏览器输入username.github.io应该就可以访问到你刚才的html页面。其实到这里就相当于你的博客已经搭建完成了。但是,我们自己去写静态页面肯定是一个繁重的工作。因此我们就有了下面要介绍使用的工具Hexo

    Hexo

    安装

    Hexo是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。并且可以帮助我们直接部署到github.io也就是你上面创建的Repository上面ï¼�这样我们就可以只需要写Markdown文件就完成了博客部署。

    Hexo是有node 构造所以我需要先在机器上安装node.

    rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
    
    rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    
    rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
    
    yum -y install nodejs npm --enablerepo=epel
    
    

    安装好node之后我们就可以用npm安装hexo

    npm install -g hexo
    
    

    在安装hexo的时候可能会遇到问题:

    npm ERR! Error: CERT_UNTRUSTED
    npm ERR!    at SecurePair.<anonymous> (tls.js:1430:32)
    npm ERR!    at SecurePair.emit (events.js:92:17)
    npm ERR!    at SecurePair.maybeInitFinished (tls.js:1029:10)
    npm ERR!    at CleartextStream.read [as _read] (tls.js:521:13)
    npm ERR!    at CleartextStream.Readable.read (_stream_readable.js:341:10)
    npm ERR!    at EncryptedStream.write [as _write] (tls.js:418:25)
    npm ERR!    at doWrite (_stream_writable.js:226:10)
    npm ERR!    at writeOrBuffer (_stream_writable.js:216:5)
    npm ERR!    at EncryptedStream.Writable.write (_stream_writable.js:183:11)
    npm ERR!    at write (_stream_readable.js:602:24)
    npm ERR! If you need help, you may report this log at:
    npm ERR!    <http://github.com/isaacs/npm/issues>
    npm ERR! or email it to:
    npm ERR!    <npm-@googlegroups.com>
    npm ERR! System Linux 2.6.32-696.18.7.el6.x86_64
    npm ERR! command "node" "/usr/bin/npm" "install" "-g" "hexo"
    npm ERR! cwd /root/github/kingty.github.io
    npm ERR! node -v v0.10.48
    npm ERR! npm -v 1.3.6
    npm ERR! 
    npm ERR! Additional logging details can be found in:
    npm ERR!    /root/github/kingty.github.io/npm-debug.log
    npm ERR! not ok code 0
    
    

    这是因为npm用https导致的,解决办法是:

    npm config set strict-ssl false
    
    

    然后应该就可以正常安装好了。完成之后我们需要初始化Hexo,首先你还是要在刚才的username.github.io这个目录下,你现在应该在master分支,这时候你需要创建另外一个分支hexo

    git checkout -b hexo
    
    

    然后在这个分支上初始化

    hexo init
    
    

    初始化的过程可能你会遇到问题如下:

    /usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/hexo.js:13
    class HexoNotFoundError extends Error {}
    ^^^^^
    SyntaxError: Unexpected reserved word
        at Module._compile (module.js:439:25)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        at Function.Module._load (module.js:312:12)
        at Module.require (module.js:364:17)
        at require (module.js:380:17)
        at Object.<anonymous> (/usr/lib/node_modules/hexo/bin/hexo:5:1)
        at Module._compile (module.js:456:26)
        at Object.Module._extensions..js (module.js:474:10)
        at Module.load (module.js:356:32)
        
    

    原因是node的版本过低,需要update 一下node到最新版

    #安装更新的一个软件
    npm install n -g
    
    #更新到最新stable版本
    n stable
    
    #重新初始化
    hexo init
    
    

    这个时候你可能还ä¼�遇到问题如下:

    FATAL ~/github/kingty.github.io not empty, please run `hexo init` on an empty folder and then copy your files into it
    FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
    Error: target not empty
        at Context.initConsole (/usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/console/init.js:30:27)
        at Context.tryCatcher (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/util.js:16:23)
        at Context.<anonymous> (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/method.js:15:34)
        at /usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/context.js:44:9
        at Promise._execute (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/debuggability.js:303:9)
        at Promise._resolveFromExecutor (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:483:18)
        at new Promise (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:79:10)
        at Context.call (/usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/context.js:40:10)
        at /usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/hexo.js:68:17
        at tryCatcher (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/util.js:16:23)
        at Promise._settlePromiseFromHandler (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:512:31)
        at Promise._settlePromise (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:569:18)
        at Promise._settlePromise0 (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:614:10)
        at Promise._settlePromises (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:693:18)
        at Promise._fulfill (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:638:18)
        at Promise._resolveCallback (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:432:57)
    
    

    这是因为hexo的初始化必须在一个空目录下,包括隐藏的目录。你的文件下应该会有一个.gitå��你刚刚创建的index.html,你需要暂时把他们移动到另外一个目录,初始化完成之后再移动回来。

    #移动出去
    mv index.html ../temp
    mv .git ../temp
    
    #初始化
    hexo init
    
    

    这时候应该可以初始化成功了,然后用相同的方法移动回来,才能进行下一步安装一下

    npm install
    
    

    这个时候应该hexo就安装完成了。
    然后你可以把这些东西push到你的hexo分支上去。

    git add .
    git commit -m "xxx"
    git push -u origin hexo
    
    

    配置

    安装完成后,我们需要配置一些我们要生成的信息,还有就是我们要部署的地址。在当前文件夹下,你会看到一个文件叫_config.yml

    vi _config.yml
    
    

    里面会有一些信息,例如title,author都修改成你自己的就好了。注意里面有一项是deploy,需要修改成你的repo地址和分支,表示生成生个之后会push到你的repo的master分支上

    deploy:
      type: git
      repo: git@github.com:username/username.github.io.git
      branch: master
    
    

    其余的具体配置请参考Hexo 配置

    文章

    配置完成后,我们尝试一下写一篇blog

    hexo new "test"
    
    

    这时候就会在 source/_post文件下生成一个 test.md的文件。

    cd source/_post
    
    vim test.md
    
    
    

    在里面写一点内容,然后生成。

    
    hexo generate -d
    
    

    这时候就会生成静态页面并自动push到你的master分支,在浏览器访问username.github.io就可以看到刚才生成的blog主页里会有这篇文章了。

    然后同样你可以把这些更改push到你的hexo分支上,以后别的电脑可以pull下来做更改。

    到这里,我们的博客就搭建好了,当然,你还可以为博客设置你喜欢的主题,做一些自己的定制等等。慢慢去摸索吧。

    最后贴出我搭建的地址kingty.top

    相关文章

      网友评论

          本文标题:Hexo&Github Blog 搭建

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