<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>JasonYu的博客</title>
  
  <subtitle>热爱学习无可自拔</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://www.yuhuizhen.com/"/>
  <updated>2018-08-27T07:33:50.617Z</updated>
  <id>https://www.yuhuizhen.com/</id>
  
  <author>
    <name>Jason Yu</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>hexo高级部署教程,利用github+netlify部署</title>
    <link href="https://www.yuhuizhen.com/2018/08/25/hexo-learn.html"/>
    <id>https://www.yuhuizhen.com/2018/08/25/hexo-learn.html</id>
    <published>2018-08-25T06:06:31.000Z</published>
    <updated>2018-08-27T07:33:50.617Z</updated>
    
    <content type="html"><![CDATA[<h1 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h1><p>我是一个爱钻研的小小程序员，之前一直都是看别人的文章，别人的博客，慢慢的随着自己的知识的积累，我也想弄个自己的博客，来写写自己的学习经验，分享下自己的技术等等因素吧，于是我最近一段时间就一直在琢磨这个事，这期间我看过很多的博客平台有CSDN、博客园、简书等等一系列博客平台，不得不承认这些平台很优秀，但是我最终放弃了他们选择了自己来搭个人博客，主要原因我觉得在这上面写东西一个是没有归属感，再一个觉得不够酷(zhuang)炫(bi)<span class="github-emoji" title="smirk" data-src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f60f.png?v8">&#x1f60f;</span><br>于是我就开始自己琢磨怎么搭建自己的个人博客，起初最先想到的方案就是买个服务器弄个博客程序自己搭建一下，但是还是觉得繁杂，而且费用高昂，花钱花精力维护着这么一个没人访问的破站，瞬间会让自己没有坚持下去的动力，这样也违背了我的初衷。后来随着慢慢的深扒，我发现了hexo这种堪称神器的东西，瞬间满足了我的各种需求。</p><ol><li>简单<br>纯前端框架，轻量级，简单易用，跨平台</li><li>酷炫<br>markdown文章编写，CLI一键式部署，各种主题随便切换</li><li>省省省！<br>重要的事情说三遍，无需花钱买服务器，只需一个域名钱，是的你没看错如果你不用自己的域名那一分钱也不用花</li></ol><p>所以我后来就采用了这种方案，然后就有了你们现在看到的这篇文章了哈哈！好下面废话不多说了我开始进入正题！</p><h1 id="什么是Hexo"><a href="#什么是Hexo" class="headerlink" title="什么是Hexo"></a>什么是Hexo</h1><p>引用<a href="https://hexo.io/zh-cn/docs/" target="_blank" rel="noopener">hexo官网</a>文档的介绍  </p><blockquote><p>Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown（或其他渲染引擎）解析文章，在几秒内，即可利用靓丽的主题生成静态网页。</p></blockquote><p>更多基础知识可参考<a href="https://hexo.io" target="_blank" rel="noopener">hexo官网</a>，本篇文章的重点是介绍部署的技巧。如果已掌握hexo的基础知识，可直接<a href="#bushu">跳到部署章节</a>进行浏览。</p><h1 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h1><p>安装hexo之前需要安装一下环境：</p><ul><li><a href="http://nodejs.org/" target="_blank" rel="noopener">Node.js</a></li><li><a href="https://git-scm.com/" target="_blank" rel="noopener">Git</a></li></ul><p>安装完node后由于npm是自带的，可能版本有些落后，需要先将自身升级一下。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm -g install npm</span><br></pre></td></tr></table></figure></p><p>由于国内互联网环境，导致npm下载失败，可使用npm淘宝镜像cnpm<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g cnpm --registry=https://registry.npm.taobao.org</span><br></pre></td></tr></table></figure></p><p>如遇到npm下载组件失败时，可使用cnpm进行下载，只需将npm替换为cnpm，下方代码将继续使用npm，请根据自身网络环境选择适合的使用。<br>以上环境如果没有问题，下面就开始安装hexo了<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br></pre></td></tr></table></figure></p><p>之后在命令行中测试输入<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo version</span><br></pre></td></tr></table></figure></p><h1 id="创建个人站点"><a href="#创建个人站点" class="headerlink" title="创建个人站点"></a>创建个人站点</h1><p>安装hexo完成后，接下来我们就该使用hexo来创建自己的个人站点了。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo init &lt;folder&gt;  <span class="comment">#使用hexo命令在指定的&lt;folder&gt;文件夹下初始化创建一个博客项目</span></span><br><span class="line"><span class="built_in">cd</span> &lt;folder&gt;         <span class="comment">#进入创建好的项目目录</span></span><br><span class="line">npm install         <span class="comment">#使用npm安装所需依赖。</span></span><br></pre></td></tr></table></figure><p>新建完成后详细的目录含义以及配置教程，请参阅<a href="https://hexo.io/zh-cn/docs/" target="_blank" rel="noopener">hexo官网</a>文档的介绍本篇文章暂不赘述。<br>上面代码执行完毕之后，我们就已经创建好了一个自己的个人博客了，下面我们只需要使用hexo的命令工具生成博客并用自带的服务器模块启动，预览下我们的博客。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean <span class="comment">#清理各种缓存和旧文件</span></span><br><span class="line">hexo g     <span class="comment">#生成静态文件</span></span><br><span class="line">hexo s     <span class="comment">#开启服务器预览</span></span><br></pre></td></tr></table></figure></p><p>执行完 <code>hexo s</code> 后命令行窗口将提示您如下信息<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">INFO  Start processing</span><br><span class="line">WARN  ===============================================================</span><br><span class="line">WARN  ========================= ATTENTION! ==========================</span><br><span class="line">WARN  ===============================================================</span><br><span class="line">WARN   NexT repository is moving here: https://github.com/theme-next</span><br><span class="line">WARN  ===============================================================</span><br><span class="line">WARN   It<span class="string">'s rebase to v6.0.0 and future maintenance will resume there</span></span><br><span class="line"><span class="string">WARN  ===============================================================</span></span><br><span class="line"><span class="string">INFO  Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.</span></span><br></pre></td></tr></table></figure></p><p>其中服务器预览地址就是 <a href="http://localhost:4000/" target="_blank" rel="noopener">http://localhost:4000/</a><br>至此，我们的个人博客创建好了，下面我们就来进入部署环节。</p><p><div id="bushu"></div></p><h1 id="部署"><a href="#部署" class="headerlink" title="部署"></a>部署</h1><p>进入这里才是我们的重点环节，因为对于hexo来说入门级的教程遍布满网，随便搜一下到处都是，但是涉及到一些关键的环节，或者是高级点的教程用法，就很少，官网文档也介绍的含糊其辞，以至于有些地方我们都搞错了用法，甚至根本就不晓得怎么去用。<br>那么这里针对部署，我进行重点介绍，并且以我本身的博客实战部署经验为案例，来讲解hexo的高级部署方式，打造可跨平台，多人写作编辑文章，可CDN加速，可HTTPS，可百度收录，可自定义域名，无需备案，无需一分钱费用的部署方案。<br>接下来我分步骤的跟大家来介绍我的部署方案。</p><h2 id="什么是部署"><a href="#什么是部署" class="headerlink" title="什么是部署"></a>什么是部署</h2><p>经过第一个章节，我们知道，当我们使用 <code>hexo g</code> 和 <code>hexo s</code> 命令生成并开启服务后，我们本地访问的测试域名实际是指向了我们当前目录下的 public 目录，也就是说 <code>hexo g</code> 命令生成的静态文件就是 public 目录下的文件，部署的过程就是将这个 public 目录下的文件放到我们的服务器上这样就完成了部署。</p><h2 id="为什么选择netlify服务部署"><a href="#为什么选择netlify服务部署" class="headerlink" title="为什么选择netlify服务部署"></a>为什么选择netlify服务部署</h2><p>好了，介绍完了上面我们知道我们接下来是要弄到可靠的服务器来吧我们的前端代码方上去，那么我们选什么服务器呢？<br>由于我们是纯前端化的博客，无需运行什么后端环境，所以购买服务器就不适合我们了，而且也违背了我们的初衷（买服务器只用来跑一个静态页面，血坑啊，而且还要涉及到备案等一系列手续，黄花菜都凉了）。<br>那用过github的读者都知道github有个pages服务，是否可以用呢？答案是不行！原因有一下几点：</p><ol><li>github虽然没有被墙，但是那个访问速度可想而知非常的慢，对国内访问的用户来说体验极差。</li><li>百度无法抓取，众所周知国内用百度的还是多，如果你写的文章，无法被百度抓取收录，那还是有点坑的。</li><li>配置繁琐，使用不友好。https证书配置这一项就麻烦的要死。</li><li>无法做CDN加速。未备案域名服务器，无法使用国内的cnd加速服务。</li></ol><p>最终放弃使用github的pages服务<br>那么有的读者可能会想到使用coding，这里我告诉你答案仍然是不行！！最主要原因是，使用了coding后绑定了自定义域名，在每天第一次访问自己的域名到自己的博客之间，coding会插入一个广告跳转页面，非常之恶心，虽然说底部加入一个外链指向coding，然后申请提交后可取消广告跳转页面，但是谁能保证以后会不会收费，而且莫名其妙的带了个外链，反正心里不爽<br>好了说到这里，就该介绍我们的netlify服务了。官网：<a href="https://www.netlify.com" target="_blank" rel="noopener">https://www.netlify.com</a><br>netlify服务避免了以上所有缺点，而且结合github分支部署已达到更快捷的部署体验。下面是我画的一个部署架构图，可以大致的先看下部署架构图。<br><img src="https://i.loli.net/2018/08/27/5b83998ae9c3a.jpg" alt="部署架构图.jpg" title="部署架构图"></p><h2 id="为什么要多分支"><a href="#为什么要多分支" class="headerlink" title="为什么要多分支"></a>为什么要多分支</h2><p>这里可能有点绕，因为我们编辑发表文章，生成静态部署文件是用的项目代码，而真正发布的文章是项目给我们生成的 public 下的静态文件，所以我们实际上是有两份代码需要托管的，而且这两份代码实际上都是一个项目产出的，所以放到一个git仓库下更合适，然后使用git的分支隔离特性来托管我们的两份代码才是真正的hexo的正确使用方式。<br>通过上面的图可以看到我的仓库上是有两个分支的，一个是source分支，是用来存放我们编辑的源码，另一个是master分支是用来放我们要部署的代码的，经过以上我们的介绍，实际上我们发现我们要把我们的源代码托管到github上，还有我们编译好的静态文件也要托管到github上，然后我们的netlify服务实际上是经过webhook钩子，勾住了github上某个分支（这里是master分支），当有推送之类的更新操作时，我们的netlify会自动拉去我们仓库中的文件完成自动部署。</p><h2 id="实战开始"><a href="#实战开始" class="headerlink" title="实战开始"></a>实战开始</h2><p>首先把我们的本地项目代码推送到github仓库<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">git init    <span class="comment">#初始化本地项目仓库</span></span><br><span class="line">git add .   <span class="comment">#向git仓库添加文件</span></span><br><span class="line">git commit -m <span class="string">"推送项目代码"</span>    <span class="comment">#本地仓库提交</span></span><br><span class="line">git remote add origin https://github.com/xxx.git    <span class="comment">#绑定或创建远程github仓库</span></span><br><span class="line">git push origin master  <span class="comment">#向远程仓库master分支推送代码</span></span><br></pre></td></tr></table></figure></p><p>好了至此我们已经把我们的项目代码推送到了 master 分支上了<br>好了我们无需切换我们的分支，下面我们需要去配置一下我们的hexo的配置文件 <code>_config.yml</code>  找到 deploy 选项进行如下修改<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">deploy:</span><br><span class="line">  <span class="built_in">type</span>: git <span class="comment">#部署方式</span></span><br><span class="line">  repo: https://github.com/xx.git <span class="comment">#github仓库</span></span><br><span class="line">  branch: run-page <span class="comment">#部署分支</span></span><br></pre></td></tr></table></figure></p><p>好了我们设置完毕，再次执行下面命令我们就可以吧我们的 hexo 项目代码和静态资源推送到我们的github仓库里了。<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo g</span><br><span class="line">hexo d</span><br></pre></td></tr></table></figure></p><p>如果执行 <code>hexo d</code> 时出错提示 <code>ERROR Deployer not found: git</code> 可能是没有安装部署工具执行下面代码<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure></p><p>之后再次执行 <code>hexo d</code> 即可,执行完毕后进入我们的github仓库中会发现多出了一个分支 run-page，正是我们在配置文件中设置的分支，这里面就是放的我们要部署的文件。</p><p>好的接下来我们进入<a href="https://www.netlify.com/" target="_blank" rel="noopener">netlify官网</a>,然后点击 右上角的 Login<br>选择使用github账户授权登录，登录完成后我们就进入到了我们的控制台<br><img src="https://i.loli.net/2018/08/27/5b83a59f4d551.png" alt="netlify控制台.png" title="netlify控制台"><br>然后我们选择右上角的 <code>New site from Git</code> 按钮，然后选择 github<br><img src="https://i.loli.net/2018/08/27/5b83a69b60fd5.png" alt="选择github.png" title="选择github"><br>然后选择要部署的项目仓库。<br><img src="https://i.loli.net/2018/08/27/5b83a7492889b.png" alt="选中要部署的仓库.png"><br>然后选中要部署的分支<br><img src="https://i.loli.net/2018/08/27/5b83a7bab4875.png" alt="选择分支.png"><br>之后点 <code>Deploy site</code> 按钮提交部署之后进入到网站的控制台去进行设置域名绑定和https申请即可，部署成功后会自动进行cdn加速的。<br>之后我们就不需要这么麻烦了以后编辑好文章之后，只需要执行 <code>hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</code> 即可自动化部署，然后要记得将我们的项目文件 push 到 github 的 master分支上去哦。</p><h2 id="异地换设备或多人写作编辑发布"><a href="#异地换设备或多人写作编辑发布" class="headerlink" title="异地换设备或多人写作编辑发布"></a>异地换设备或多人写作编辑发布</h2><p>如果你需要换设备或者多人进行写作那么只需要共同维护好项目分支的代码就行了，部署分支无需处理。<br>例如你换了新的电脑需要维护你的博客<br><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> xxxx.git &lt;file&gt;</span><br><span class="line"><span class="built_in">cd</span> &lt;file&gt;</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure></p><p>经过上面的简单的命令，你的项目已经能在新的设备上进行编辑了，当然要注意新的设备要安装好相应的环境。<br>当你编写完文章后，还是执行 <code>hexo clean &amp;&amp; hexo g &amp;&amp; hexo d</code> 即可自动部署成功！</p><p>如果觉得文章不错可以帮忙转发给您的朋友哦。</p>]]></content>
    
    <summary type="html">
    
      使用github分支和netlify服务的方式部署hexo，搭建一套可跨平台、可多人写作,随时随地发布编辑文字,可被百度收录,可自定域名,免费HTTPS的博客系统！！
    
    </summary>
    
      <category term="日常" scheme="https://www.yuhuizhen.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
      <category term="hexo教程" scheme="https://www.yuhuizhen.com/tags/hexo%E6%95%99%E7%A8%8B/"/>
    
      <category term="hexo部署" scheme="https://www.yuhuizhen.com/tags/hexo%E9%83%A8%E7%BD%B2/"/>
    
      <category term="github分支" scheme="https://www.yuhuizhen.com/tags/github%E5%88%86%E6%94%AF/"/>
    
      <category term="netlify部署" scheme="https://www.yuhuizhen.com/tags/netlify%E9%83%A8%E7%BD%B2/"/>
    
  </entry>
  
  <entry>
    <title>Hello World</title>
    <link href="https://www.yuhuizhen.com/2018/07/12/hello-world.html"/>
    <id>https://www.yuhuizhen.com/2018/07/12/hello-world.html</id>
    <published>2018-07-12T02:40:23.000Z</published>
    <updated>2018-08-27T04:18:43.996Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>博客搭建完成了，作为一个码农开篇第一帖当然是 Hello World! <span class="github-emoji" title="sunglasses" data-src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f60e.png?v8">&#x1f60e;</span> 哈哈开个玩笑，这篇帖子作为第一帖，主要是想跟大家交流下我这个博客的一些想法。<br><a id="more"></a></p></blockquote><p>首先我先介绍一下我这个站点,此博客主要是用来记录一些日常,分享一些技术干货,有兴趣的小伙伴可以点下收藏,有友链的可以互相交换一下哦。另外我博客搭建的有评论板块,只需要填写用户名和邮箱即可在文章下方评论留言方便大家交流。</p><p>然后我大致介绍一下我的博客的搭建方案（绝对的最小成本哟）</p><ul><li>一个域名 yuhuizhen.com (域名其实就是我的名字<span class="github-emoji" title="smirk" data-src="https://assets-cdn.github.com/images/icons/emoji/unicode/1f60f.png?v8">&#x1f60f;</span>)</li><li>一个git仓库</li><li>使用hexo创建博客框架，主题使用的是next  </li><li>图床 sm.ms 主要是用来上传一些文章内的图片当然本地也留有备份  </li></ul><p>总体花费：35块钱，主要是用来购买域名了, 然后想要自己做博客的小伙伴们可以参考一下我的方案。</p><p><strong>另外对于评论区头像的说明</strong></p><blockquote><p>这里引用官方SDK的教程<br>Valine目前使用的是<a rel="noopener" href="http://cn.gravatar.com/" target="_blank">Gravatar</a>作为评论列表头像。<br>请自行登录或注册<a rel="noopener" href="http://cn.gravatar.com/" target="_blank">Gravatar</a>，然后修改自己的头像。<br>评论的时候，留下在的<a rel="noopener" href="http://cn.gravatar.com/" target="_blank">Gravatar</a>注册时所使用的邮箱即可。  </p></blockquote><p>好了由于是开篇第一帖，这篇帖子就先写到这把，后面我会整理更多的内容发送出来，当然也会写一些随笔记录，日常之类的内容不嫌弃的话就看看吧。<br><img src="https://i.loli.net/2018/07/12/5b46e04c592c5.jpg" alt="hello-world\banner" title="JasonYhz"></p>]]></content>
    
    <summary type="html">
    
      欢迎访问我的博客
    
    </summary>
    
      <category term="日常" scheme="https://www.yuhuizhen.com/categories/%E6%97%A5%E5%B8%B8/"/>
    
    
      <category term="hello world" scheme="https://www.yuhuizhen.com/tags/hello-world/"/>
    
      <category term="程序员" scheme="https://www.yuhuizhen.com/tags/%E7%A8%8B%E5%BA%8F%E5%91%98/"/>
    
  </entry>
  
</feed>
