atom.xml 97.4 KB
Newer Older
Alderaan's avatar
Alderaan 已提交
1 2 3 4 5 6 7 8
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Alderaan的博客</title>
  
  
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://alderaan.xyz/"/>
Alderaan's avatar
Alderaan 已提交
9
  <updated>2020-05-11T15:04:04.452Z</updated>
Alderaan's avatar
Alderaan 已提交
10 11 12 13 14 15 16 17 18
  <id>https://alderaan.xyz/</id>
  
  <author>
    <name>Alderaan</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
Alderaan's avatar
Alderaan 已提交
19 20 21 22 23
  <entry>
    <title>Centos 7.6 下使用美格SLM750(4G模块)拨号上网</title>
    <link href="https://alderaan.xyz/2020/05/11/centos7-6-use-meig-4G-module-slm750/"/>
    <id>https://alderaan.xyz/2020/05/11/centos7-6-use-meig-4G-module-slm750/</id>
    <published>2020-05-11T09:40:13.000Z</published>
Alderaan's avatar
Alderaan 已提交
24
    <updated>2020-05-11T15:04:04.452Z</updated>
Alderaan's avatar
Alderaan 已提交
25
    
Alderaan's avatar
Alderaan 已提交
26
    <content type="html"><![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​    想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块<code>SLM750</code>,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。</p><a id="more"></a><h2 id="准备"><a href="#准备" class="headerlink" title="准备"></a>准备</h2><p>​    系统为Cento 7.6 64bit,基本环境为Basic Web Server安装(理论上与安装环境模式无关,最小安装也可以)。需要下载内核源码,Centos 7.6的内核版本为<code>3.10.0-957</code>,源码可在此<a href="http://vault.centos.org/7.6.1810/updates/Source/SPackages/kernel-3.10.0-957.21.3.el7.src.rpm" target="_blank" rel="noopener">链接</a>下载。另外还需要厂家提供的<code>GobiNet</code>网卡拨号的驱动及拨号工具源码,一张能4G上网的手机卡或物联网卡,接好模块天线。</p><h2 id="编译内核源码"><a href="#编译内核源码" class="headerlink" title="编译内核源码"></a>编译内核源码</h2><p>​    将下载好的源码,解压到看到<code>linux-3.10.0-957.21.3.el7.tar.xz</code>文件,将其放到<code>/usr/src/kernels</code>文件夹下,并执行如下命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ tar xvf linux-3.10.0-957.21.3.el7.tar.xz // 解压内核源码文件</span><br><span class="line">$ mv linux-3.10.0-957.21.3.el7 3.10.0-957.el7.x86_64 // 重命名文件夹</span><br></pre></td></tr></table></figure><p>​    之所以要更改文件夹名称,是因为厂家的<code>GobiNet</code>驱动源码,<code>Makefile</code>文件中:</p><figure class="highlight makefile"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">obj-m := GobiNet.o</span><br><span class="line">GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o</span><br><span class="line"></span><br><span class="line">PWD := <span class="variable">$(<span class="built_in">shell</span> pwd)</span></span><br><span class="line">OUTPUTDIR=/lib/modules/`uname -r`/kernel/drivers/net/usb/</span><br><span class="line"></span><br><span class="line"><span class="comment">#ifeq ($(ARCH),)</span></span><br><span class="line"><span class="comment">#EARCH := $(shell uname -m)</span></span><br><span class="line"><span class="comment">#endif</span></span><br><span class="line"><span class="comment">#ifeq ($(CROSS_COMPILE),)</span></span><br><span class="line"><span class="comment">#CROSS_COMPILE :=</span></span><br><span class="line"><span class="comment">#endif</span></span><br><span class="line"><span class="comment">#ifeq ($(KDIR),)</span></span><br><span class="line">KDIR := /lib/modules/<span class="variable">$(<span class="built_in">shell</span> uname -r)</span>/build <span class="comment"># 这里通过uname -r 获取了内核名称</span></span><br><span class="line"><span class="comment">#endif</span></span><br><span class="line"></span><br><span class="line"><span class="section">default:</span></span><br><span class="line"><span class="comment">#ln -sf makefile Makefile</span></span><br><span class="line"><span class="comment">#$(MAKE) ARCH=$&#123;ARCH&#125; CROSS_COMPILE=$&#123;CROSS_COMPILE&#125; -C $(KDIR) M=$(PWD) modules</span></span><br><span class="line"><span class="variable">$(MAKE)</span>  CROSS_COMPILE=$&#123;CROSS_COMPILE&#125; -C <span class="variable">$(KDIR)</span> M=<span class="variable">$(PWD)</span> modules</span><br><span class="line"></span><br><span class="line"><span class="section">install: default</span></span><br><span class="line">mkdir -p <span class="variable">$(OUTPUTDIR)</span></span><br><span class="line">cp -f GobiNet.ko <span class="variable">$(OUTPUTDIR)</span></span><br><span class="line">depmod</span><br><span class="line">modprobe -r GobiNet</span><br><span class="line">modprobe GobiNet</span><br><span class="line"></span><br><span class="line"><span class="section">clean:</span></span><br><span class="line"><span class="comment"># rm -rf Makefile # 这里这段代码去掉,否则执行make clean会把Makefile文件也删除了</span></span><br><span class="line">rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions Module.* modules.order</span><br></pre></td></tr></table></figure><p>​    如果为其他版本的系统,将文件夹对应修改为<code>uname -r</code>得到的名称即可。</p><h3 id="添加串口的ID"><a href="#添加串口的ID" class="headerlink" title="添加串口的ID"></a>添加串口的ID</h3><p>​    打开内核源码文件 <code>/3.10.0-957.el7.x86_64/drivers/usb/serial/option.c</code>,在<code>/* Vendor and product IDs */</code>下增加宏定义:</p><figure class="highlight c"><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></pre></td><td class="code"><pre><span class="line"><span class="comment">/* Vendor and product IDs */</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MEIG_VENDOR_ID0x05C6 </span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MEIG_PRODUCT_7300xF601 </span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MEIG_VENDOR_ID_7200x2dee </span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MEIG_PRODUCT_7200x4d07 </span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">define</span> MEIG_PRODUCT_720_ECM0x4d02</span></span><br></pre></td></tr></table></figure><p>​    在<code>option_ids</code>结构体数组增加4G模块的<code>VID</code>和<code>PID</code>:</p><figure class="highlight c"><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"><span class="keyword">static</span> <span class="keyword">const</span> <span class="class"><span class="keyword">struct</span> <span class="title">usb_device_id</span> <span class="title">option_ids</span>[] = &#123;</span></span><br><span class="line">&#123; USB_DEVICE(MEIG_VENDOR_ID,MEIG_PRODUCT_730) &#125;, </span><br><span class="line">&#123; USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720) &#125;, </span><br><span class="line">&#123; USB_DEVICE(MEIG_VENDOR_ID_720,MEIG_PRODUCT_720_ECM) &#125;,</span><br></pre></td></tr></table></figure><h3 id="删除NDIS和ADB端口"><a href="#删除NDIS和ADB端口" class="headerlink" title="删除NDIS和ADB端口"></a>删除NDIS和ADB端口</h3><p>​    使用<code>option</code>驱动,修改 <code>/3.10.0-957.el7.x86_64/driver/usb/serial/option.c</code>,在<code>option_probe</code>函数添加如下代码:</p> <figure class="highlight c"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">static</span> <span class="keyword">int</span> <span class="title">option_probe</span><span class="params">(struct usb_serial *serial,</span></span></span><br><span class="line"><span class="function"><span class="params"><span class="keyword">const</span> struct usb_device_id *id)</span></span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">usb_interface_descriptor</span> *<span class="title">iface_desc</span> =</span></span><br><span class="line"><span class="class">&amp;<span class="title">serial</span>-&gt;<span class="title">interface</span>-&gt;<span class="title">cur_altsetting</span>-&gt;<span class="title">desc</span>;</span></span><br><span class="line"><span class="class"><span class="keyword">struct</span> <span class="title">usb_device_descriptor</span> *<span class="title">dev_desc</span> = &amp;<span class="title">serial</span>-&gt;<span class="title">dev</span>-&gt;<span class="title">descriptor</span>;</span></span><br><span class="line"><span class="keyword">const</span> <span class="class"><span class="keyword">struct</span> <span class="title">option_blacklist_info</span> *<span class="title">blacklist</span>;</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* Never bind to the CD-Rom emulation interface*/</span></span><br><span class="line"><span class="keyword">if</span> (iface_desc-&gt;bInterfaceClass == <span class="number">0x08</span>)</span><br><span class="line"><span class="keyword">return</span> -ENODEV;</span><br><span class="line"></span><br><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment"> * Don't bind reserved interfaces (like network ones) which often have</span></span><br><span class="line"><span class="comment"> * the same class/subclass/protocol as the serial interfaces.  Look at</span></span><br><span class="line"><span class="comment"> * the Windows driver .INF files for reserved interface numbers.</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">blacklist = (<span class="keyword">void</span> *)id-&gt;driver_info;</span><br><span class="line"><span class="keyword">if</span> (blacklist &amp;&amp; test_bit(iface_desc-&gt;bInterfaceNumber,</span><br><span class="line">&amp;blacklist-&gt;reserved))</span><br><span class="line"><span class="keyword">return</span> -ENODEV;</span><br><span class="line"></span><br><span class="line"><span class="comment">// struct usb_wwan_intf_private *data; 文档中的这个语句其实没有</span></span><br><span class="line"><span class="comment">// 开始添加代码</span></span><br><span class="line"><span class="keyword">if</span> (serial-&gt;dev-&gt;descriptor.idVendor == MEIG_VENDOR_ID &amp;&amp; </span><br><span class="line">(serial-&gt;dev-&gt;descriptor.idProduct == MEIG_PRODUCT_730)&amp;&amp; </span><br><span class="line">serial-&gt;interface-&gt;cur_altsetting-&gt;desc.bInterfaceNumber &gt;= <span class="number">4</span>) </span><br><span class="line"><span class="keyword">return</span> -ENODEV; </span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (serial-&gt;dev-&gt;descriptor.idVendor == MEIG_VENDOR_ID_720&amp;&amp; </span><br><span class="line">(serial-&gt;dev-&gt;descriptor.idProduct == MEIG_PRODUCT_720)&amp;&amp; </span><br><span class="line">serial-&gt;interface-&gt;cur_altsetting-&gt;desc.bInterfaceNumber &gt;= <span class="number">4</span>) </span><br><span class="line"><span class="keyword">return</span> -ENODEV; </span><br><span class="line"><span class="comment">// 完成添加代码</span></span><br></pre></td></tr></table></figure><p>使用<code>usb-serial</code>驱动,<code>/3.10.0-957.el7.x86_64/driver/usb/serial/usb-serial.c</code>,在<code>usb_serial_probe</code>函数添加如下代码:</p><figure class="highlight c"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">    serial = create_serial (dev, interface, type); </span><br><span class="line">   <span class="keyword">if</span> (!serial) &#123; </span><br><span class="line">           unlock_kernel(); </span><br><span class="line">           dev_err(&amp;interface-&gt;dev, <span class="string">"%s - out of memory\n"</span>, __FUNCTION__); </span><br><span class="line">           <span class="keyword">return</span> -ENOMEM; </span><br><span class="line">   &#125; </span><br><span class="line"><span class="comment">//开始添加代码 厂家文档写的是宏定义,在该文件中无法找到会报错,这里直接改成了对应值</span></span><br><span class="line">   <span class="keyword">if</span> ( (serial-&gt;dev-&gt;descriptor.idVendor == <span class="number">0x50C6</span> &amp;&amp;  </span><br><span class="line">(serial-&gt;dev-&gt;descriptor.idProduct == <span class="number">0xF601</span>) )&amp;&amp; </span><br><span class="line">serial-&gt;interface-&gt;cur_altsetting-&gt;desc.bInterfaceNumber &gt;=<span class="number">4</span> ) </span><br><span class="line"><span class="keyword">return</span> -ENOMEM; </span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> (serial-&gt;dev-&gt;descriptor.idVendor == <span class="number">0x2dee</span> &amp;&amp; </span><br><span class="line">(serial-&gt;dev-&gt;descriptor.idProduct == <span class="number">0x4d07</span>)&amp;&amp; </span><br><span class="line">serial-&gt;interface-&gt;cur_altsetting-&gt;desc.bInterfaceNumber &gt;= <span class="number">4</span>) </span><br><span class="line"><span class="keyword">return</span> -ENODEV; </span><br><span class="line"><span class="comment">//完成添加代码</span></span><br></pre></td></tr></table></figure><pre><code>### 配置编译参数</code></pre><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">$ <span class="built_in">cd</span> /usr/src/kernels/3.10.0-957.el7.x86_64  <span class="comment"># 切换到内核源码所在路径</span></span><br><span class="line">$ cp /boot/config-3.10.0-957.el7.x86_64 ./.config <span class="comment"># 拷贝当前内核的编译配置</span></span><br><span class="line">$ make oldconfig <span class="comment"># 在已有内核基础上进行配置</span></span><br><span class="line">$ yum install gcc gdb make elfutils-libelf-devel</span><br></pre></td></tr></table></figure><p>​    需要说明的是,Centos 6.7默认就开启了<code>device drivers-&gt;usb support-&gt;usb serial converter support-&gt;USB driver for GSM and CDMA modems</code>和<code>device drivers-&gt;Network device support-&gt;usb Network Adapters-&gt;Multi-purpose USB Networking Framework</code>这两个组件,所以拷贝原有内核的编译配置即可使用。</p><h3 id="开始编译"><a href="#开始编译" class="headerlink" title="开始编译"></a>开始编译</h3><p>​    执行如下命令开始编译源码,对应的线程数字按照实际机器进行配置,这个过程会比较慢。</p><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">$ make -j 8</span><br></pre></td></tr></table></figure><p>​    如果有其他错误提示,则安装对应的软件包依赖即可,这里编译后不进行安装,因为内核是一样的,编译内核只是为了编译驱动时能找到一些依赖。</p><h2 id="编译NDIS驱动"><a href="#编译NDIS驱动" class="headerlink" title="编译NDIS驱动"></a>编译NDIS驱动</h2><p>​    这里采用的是单独编译的方式,所以上一个步骤没有和内核一块打包编译,主要是为了在不动原来内核的情况下使用,以防上面的其他软件运行受影响。</p><p>​    到驱动目录下,执行如下命令:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ make <span class="comment"># 编译驱动</span></span><br><span class="line">$ make install <span class="comment"># 安装驱动</span></span><br></pre></td></tr></table></figure><p>​    正常编译安装的话,不会有其他的警告或者错误,驱动成功后,可以看到新的网卡。一般是<code>ethX</code>这种格式,但还没有IP地址,需要使用拨号软件。</p><h2 id="编译Gobinet拨号工具"><a href="#编译Gobinet拨号工具" class="headerlink" title="编译Gobinet拨号工具"></a>编译Gobinet拨号工具</h2><p>​    在厂家提供的源码中,由于是嵌入式的方案,默认获取IP地址的是<code>busybox</code>中的<code>udhcpc</code>命令,在<code>udhcpc.c</code>文件中,可以注释掉这样代码,以及这行代码上面两行的寻找默认配置文件的语句。本文管理网卡的工具是<code>NetworkManager</code>,Gobinet拨号后,会自动检测网卡状态,进行获取IP地址操作。其它系统根据实际需要,进行修改。本文做出的修改如下:</p><figure class="highlight c"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> (profile-&gt;ipv4.Address) &#123;</span><br><span class="line"><span class="meta">#<span class="meta-keyword">ifdef</span> USE_DHCLIENT</span></span><br><span class="line">            <span class="built_in">snprintf</span>(udhcpc_cmd, <span class="keyword">sizeof</span>(udhcpc_cmd), <span class="string">"dhclient -4 -d --no-pid %s"</span>, ifname);</span><br><span class="line">            dhclient_alive++;</span><br><span class="line"><span class="meta">#<span class="meta-keyword">else</span></span></span><br><span class="line">    <span class="comment">// 注释掉获取默认配置文件</span></span><br><span class="line">            <span class="comment">//if (access("/usr/share/udhcpc/default.script", X_OK)) &#123;</span></span><br><span class="line">            <span class="comment">//    dbg_time("Fail to access /usr/share/udhcpc/default.script, errno: %d (%s)", errno, strerror(errno));</span></span><br><span class="line">            <span class="comment">//&#125;</span></span><br><span class="line"></span><br><span class="line">            <span class="comment">//-f,--foreground    Run in foreground</span></span><br><span class="line">            <span class="comment">//-b,--background    Background if lease is not obtained</span></span><br><span class="line">            <span class="comment">//-n,--now        Exit if lease is not obtained</span></span><br><span class="line">            <span class="comment">//-q,--quit        Exit after obtaining lease</span></span><br><span class="line">            <span class="comment">//-t,--retries N        Send up to N discover packets (default 3)</span></span><br><span class="line">    <span class="comment">// 注释定义的获取IP命令</span></span><br><span class="line">            <span class="comment">//snprintf(udhcpc_cmd, sizeof(udhcpc_cmd), "busybox udhcpc -f -n -q -t 5 -i %s", ifname);</span></span><br><span class="line"><span class="meta">#<span class="meta-keyword">endif</span></span></span><br><span class="line"><span class="comment">// 注释掉命令线程</span></span><br><span class="line">            <span class="comment">//pthread_create(&amp;udhcpc_thread_id, &amp;udhcpc_thread_attr, udhcpc_thread_function, (void*)strdup(udhcpc_cmd));</span></span><br><span class="line">            sleep(<span class="number">1</span>);</span><br><span class="line">        &#125;</span><br></pre></td></tr></table></figure><p>​    执行如下命令编译拨号工具</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ make <span class="comment"># 编译</span></span><br><span class="line">$ ./MeiG-CM &amp; <span class="comment"># 后台执行拨号工具</span></span><br></pre></td></tr></table></figure><p>​    如果拨号成功,可以看到对应的网卡会获取到IP地址,并可以正常上网。</p><h2 id="服务化拨号工具"><a href="#服务化拨号工具" class="headerlink" title="服务化拨号工具"></a>服务化拨号工具</h2><p>​    可以使用<code>systemctl</code>管理拨号工具,新建一个文件<code>MeiG-CM.service</code>,并写入如下内容:</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><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">[Unit]</span><br><span class="line">Description=quectel-CM Service</span><br><span class="line">After=network.target</span><br><span class="line"></span><br><span class="line">[Service]</span><br><span class="line">Type=simple</span><br><span class="line">User=root</span><br><span class="line">Restart=always</span><br><span class="line">RestartSec=5s</span><br><span class="line">ExecStart=/home/MeiG-CM/MeiG-CM <span class="comment"># 这里更改为对应的可执行文件所在路径</span></span><br><span class="line"></span><br><span class="line">[Install]</span><br><span class="line">WantedBy=multi-user.target</span><br></pre></td></tr></table></figure><p>​    执行以下命令可配置服务并设置开机自启动:</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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">$ cp MeiG-CM.service /usr/lib/systemd/system/ <span class="comment"># 拷贝服务文件到系统目录</span></span><br><span class="line">$ systemctl daemon-reload <span class="comment"># 重新检测加载服务,使其被系统识别到</span></span><br><span class="line">$ systemctl start MeiG-CM.service <span class="comment"># 手动启动服务</span></span><br><span class="line">$ systemctl <span class="built_in">enable</span> MeiG-CM.service <span class="comment"># 配置开机自启动</span></span><br></pre></td></tr></table></figure><p>​    至此,在Centos 7.6上就可以自动配置MeiG SLM50 4G模块上网。如果卡被停用后·再启用,也不需要重新启动机器,会自动重新拨号。</p>]]></content>
Alderaan's avatar
Alderaan 已提交
27 28 29 30 31 32 33 34
    
    <summary type="html">
    
      &lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;​    想要实现4G上网有两种方式,要么加多一个4G路由器,再通过优先接入;要么通过增加4G模块(可为USB或PCIE等多种接口),直接进行拨号上网。尝试在一款J1900工控机上(该工控机自带SIM插槽),通过增加PCIE接口的美格4G模块&lt;code&gt;SLM750&lt;/code&gt;,进行拨号上网。Windows系统下已测试过,直接安装厂家提供驱动,可以正常上网,说明硬件方面是完全支持的。本文参照厂家提供的嵌入式方案,进行驱动编译安装,并编译拨号软件,最终实现工控机4G上网功能。&lt;/p&gt;
    
    </summary>
    
    
Alderaan's avatar
Alderaan 已提交
35
      <category term="Centos" scheme="https://alderaan.xyz/categories/Centos/"/>
Alderaan's avatar
Alderaan 已提交
36 37
    
    
Alderaan's avatar
Alderaan 已提交
38
      <category term="Centos" scheme="https://alderaan.xyz/tags/Centos/"/>
Alderaan's avatar
Alderaan 已提交
39
    
Alderaan's avatar
Alderaan 已提交
40
      <category term="4G module" scheme="https://alderaan.xyz/tags/4G-module/"/>
Alderaan's avatar
Alderaan 已提交
41
    
Alderaan's avatar
Alderaan 已提交
42
      <category term="SLM750" scheme="https://alderaan.xyz/tags/SLM750/"/>
Alderaan's avatar
Alderaan 已提交
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
    
  </entry>
  
  <entry>
    <title>水星USB无线网卡mw150us苹果macOS系统驱动成功</title>
    <link href="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/"/>
    <id>https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/</id>
    <published>2020-05-10T07:04:06.000Z</published>
    <updated>2020-05-11T06:20:15.584Z</updated>
    
    <content type="html"><![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​    之前修好后的<strong>MacBook Pro (13-inch, Mid 2010)</strong>,去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块<strong>MERCURY(水星)</strong>的usb无线网卡MW150US 2.0 (170107),想在<strong>macOS</strong> Hight Sierra 10.13.5上驱动它。</p><a id="more"></a><h2 id="基本信息"><a href="#基本信息" class="headerlink" title="基本信息"></a>基本信息</h2><p>​    由于水星这款网卡,不同时期生产的是不一样的芯片,我手头上这块是这样子的:</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/07576FCDC43828BAE9BB5A2FC846FA97.jpg" alt="水星无线网卡图片"></p><p>​    在苹果系统上的硬件信息如下:</p><figure class="highlight plain"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">802.11n NIC:</span><br><span class="line"></span><br><span class="line">  产品 ID:0x8179</span><br><span class="line">  厂商 ID:0x0bda  (Realtek Semiconductor Corp.)</span><br><span class="line">  版本:0.00</span><br><span class="line">  序列号:00E04C0001</span><br><span class="line">  速度:最大 480 Mb&#x2F;秒</span><br><span class="line">  制造商:Realtek</span><br><span class="line">  位置 ID:0x24100000 &#x2F; 1</span><br><span class="line">  可用电流 (mA):500</span><br><span class="line">  所需电流 (mA):500</span><br><span class="line">  额外的操作电流 (mA):0</span><br></pre></td></tr></table></figure><p>​    在Windows系统上,驱动后显示的网卡名称包含<code>rtl 8188eu</code>字眼,成功得到对应芯片型号信息。</p><h2 id="寻找驱动"><a href="#寻找驱动" class="headerlink" title="寻找驱动"></a>寻找驱动</h2><p>​    一开始在网上下载一些别人试过的Mac版本驱动,安装后仍无法使用,有可能是我的系统版本比较新的缘故。转而开始从芯片版本入手,查找其他也使用了这款芯片的厂家,看是否有对应的macOS驱动。后来了解到,<code>Edimax</code>这个厂家的<a href="https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_n150/ew-7811un/" target="_blank" rel="noopener">EW-7811Un</a> 这款 USB 无线网卡,采用了类似芯片,也是最高150Mbps。在<a href="https://www.edimax.com/edimax/download/download/data/edimax/global/download/for_home/wireless_adapters/wireless_adapters_n150/ew-7811un" target="_blank" rel="noopener">Download</a>页面上有如下的驱动列表:</p><table><thead><tr><th>Version</th><th>Note</th><th>Date</th><th>File Type</th><th>File Size</th><th></th></tr></thead><tbody><tr><td>v1.0.1.4</td><td>Support OS:MAC 10.7/10.8/10.9/10.10/10.11 Languages:English</td><td>2016-02-24</td><td>ZIP</td><td>10.30 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/EW-7811Un_Mac_driver_v1.0.1.4.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>v1.0.0.1</td><td>Support OS:Raspberry Pi2 Win10 IoT Languages:English</td><td>2015-12-21</td><td>ZIP</td><td>1.65 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/EW-7811Un_Win10_IoT_1.0.0.1.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>v1.0.0.5</td><td>Support OS:Windows XP/Vista Languages:English</td><td>2015-12-17</td><td>ZIP</td><td>26.81 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/transfer/Wireless/NIC/EW-7811Un/EW-7811Un_Windows_driver_v1.0.0.5.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>v1.0.0.5</td><td>Support OS:MAC 10.4/10.5/10.6 Languages:English</td><td>2012-12-12</td><td>ZIP</td><td>24.73 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/transfer/Wireless/NIC/EW-7811Un/EW-7811Un_Mac_driver_v1.0.0.5.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>1.0.1.6</td><td>Support OS:Windows 7/8/8.1/10 Languages:English</td><td>2019-10-21</td><td>ZIP</td><td>49.75 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/EW-7811Un_Windows_Driver_1.0.1.6.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>1.0.1.8</td><td>Support OS:MAC 10.13 Languages:English</td><td>2018-09-17</td><td>ZIP</td><td>12.03 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/EW-7811Un_Mac_driver_1.0.1.8.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>1.0.1.9</td><td>EW-7811Un_Linux_Wi-Fi_Driver_1.0.1.9 Support Kernel : 2.6.18 ~ 4.4.3</td><td>2018-06-13</td><td>ZIP</td><td>1.08 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/EW-7811Un_Linux_Driver_1.0.1.9.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr><tr><td>1.0.1.5</td><td>Support OS:MAC 10.12 Languages:English</td><td>2016-12-20</td><td>ZIP</td><td>10.70 MB</td><td><a href="https://www.edimax.com/edimax/mw/cufiles/files/download/Driver_Utility/Mac10.12_Driver_1.0.1.5.zip" target="_blank" rel="noopener"><img src="https://www.edimax.com/edimax/mw/cufiles/images/web/download_btn.png" alt="img"></a></td></tr></tbody></table><p>​    刚好有1.0.1.8这个版本可以支持macOS 10.13,直接下载解压后,有如下四个文件:</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-221203.png" alt="压缩包解压后文件夹图片"></p><h2 id="安装驱动"><a href="#安装驱动" class="headerlink" title="安装驱动"></a>安装驱动</h2><p>​    双击<code>Installer.pkg</code>安装驱动</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-221615.png" alt="压缩包解压后文件夹图片"></p><p>​    选择继续</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-221624.png" alt="压缩包解压后文件夹图片"></p><p>​    选择继续,会弹出如下窗口</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-221648.png" alt="压缩包解压后文件夹图片"></p><p>​    同意软件许可协议中的条款</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-221713.png" alt="压缩包解压后文件夹图片"></p><p>​    点击安装开始执行安装,这个过程可能需要几分钟,耐心等待</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-222045.png" alt="压缩包解压后文件夹图片"></p><p>​    安装完成后会提示需要重新启动,同时在第一次运行会提示需要有额外的权限,允许即可。</p><h2 id="完成"><a href="#完成" class="headerlink" title="完成"></a>完成</h2><p>​    如果安装完成,在右上侧状态栏中会出现新的图标,插上USB网卡,成功驱动后会显示周围的WiFi网络:</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-224242.png" alt="驱动成功周围WiFi信息截图"></p><p>​    打开Wireless Utility显示信息如下,左上角的图标和网上其他人发的那些驱动图标一模一样:</p><p><img src="https://alderaan.xyz/2020/05/10/mw150us-2-0-mac-driver/20200510-224641.png" alt="Wireless Utility显示信息截图"></p><p>​    现在就可以开心地重新享受无线上网了,其他81XX芯片型号的网卡也可以试试这个厂家的驱动,对于黑苹果用户也可以参考使用。</p>]]></content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;​    之前修好后的&lt;strong&gt;MacBook Pro (13-inch, Mid 2010)&lt;/strong&gt;,去年开始就发现偶尔找不到自带的无线网卡,用着也还经常死机。屏蔽了无线功能后,一直只能有线上网。最近终于忍不住,要无线上网了。。。由于囊中羞涩,先找了一块&lt;strong&gt;MERCURY(水星)&lt;/strong&gt;的usb无线网卡MW150US 2.0 (170107),想在&lt;strong&gt;macOS&lt;/strong&gt; Hight Sierra 10.13.5上驱动它。&lt;/p&gt;
    
    </summary>
    
    
      <category term="MacOS" scheme="https://alderaan.xyz/categories/MacOS/"/>
    
    
      <category term="MW150US" scheme="https://alderaan.xyz/tags/MW150US/"/>
    
      <category term="Driver" scheme="https://alderaan.xyz/tags/Driver/"/>
    
      <category term="MacOS" scheme="https://alderaan.xyz/tags/MacOS/"/>
    
  </entry>
  
  <entry>
    <title>使用Gulp压缩Hexo博客静态资源</title>
    <link href="https://alderaan.xyz/2020/05/07/hexo-compress/"/>
    <id>https://alderaan.xyz/2020/05/07/hexo-compress/</id>
    <published>2020-05-07T13:06:42.000Z</published>
    <updated>2020-05-11T06:20:15.584Z</updated>
    
    <content type="html"><![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​    由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用<strong>Gulp</strong>对博客的js、css、img、html等静态资源文件进行压缩。</p><a id="more"></a><h2 id="Gulp全局安装"><a href="#Gulp全局安装" class="headerlink" title="Gulp全局安装"></a>Gulp全局安装</h2><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 gulp -g</span><br></pre></td></tr></table></figure><p>​    本博客安装的<strong>Gulp</strong>版本为4.0.2。</p><h2 id="Gulp插件安装"><a href="#Gulp插件安装" class="headerlink" title="Gulp插件安装"></a>Gulp插件安装</h2><p>​    在<code>blog</code>文件夹(站点根目录)下,安装必备的插件:</p><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 gulp gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp-imagemin --save</span><br></pre></td></tr></table></figure><p>​    安装完成后,可以在<code>package.json</code>下查看到具体的插件版本信息,本博客的插件版本对应信息如下:</p><figure class="highlight"><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></pre></td><td class="code"><pre><span class="line">"dependencies": &#123;</span><br><span class="line">"gulp": "^4.0.2",</span><br><span class="line">    "gulp-htmlclean": "^2.7.22",</span><br><span class="line">    "gulp-htmlmin": "^5.0.1",</span><br><span class="line">    "gulp-imagemin": "^7.1.0",</span><br><span class="line">    "gulp-minify-css": "^1.2.4",</span><br><span class="line">    "gulp-uglify": "^3.0.2"</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="创建gulpfile-js文件"><a href="#创建gulpfile-js文件" class="headerlink" title="创建gulpfile.js文件"></a>创建gulpfile.js文件</h2><p>​    在<code>blog</code>文件夹(站点根目录)下,新建<code>gulpfile.js</code>文件,并编写如下内容:</p><figure class="highlight javascript"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 引入需要的模块</span></span><br><span class="line"><span class="keyword">var</span> gulp = <span class="built_in">require</span>(<span class="string">'gulp'</span>);</span><br><span class="line"><span class="keyword">var</span> minifycss = <span class="built_in">require</span>(<span class="string">'gulp-minify-css'</span>);</span><br><span class="line"><span class="keyword">var</span> uglify = <span class="built_in">require</span>(<span class="string">'gulp-uglify'</span>);</span><br><span class="line"><span class="keyword">var</span> htmlmin = <span class="built_in">require</span>(<span class="string">'gulp-htmlmin'</span>);</span><br><span class="line"><span class="keyword">var</span> htmlclean = <span class="built_in">require</span>(<span class="string">'gulp-htmlclean'</span>);</span><br><span class="line"><span class="keyword">var</span> imagemin = <span class="built_in">require</span>(<span class="string">'gulp-imagemin'</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 压缩public目录下所有html文件, minify-html是任务名, 设置为default,启动gulp压缩的时候可以省去任务名</span></span><br><span class="line">gulp.task(<span class="string">'minify-html'</span>, <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.src(<span class="string">'./public/**/*.html'</span>) <span class="comment">// 压缩文件所在的目录</span></span><br><span class="line">        .pipe(htmlclean())</span><br><span class="line">        .pipe(htmlmin(&#123;</span><br><span class="line">            removeComments: <span class="literal">true</span>,</span><br><span class="line">            minifyJS: <span class="literal">true</span>,</span><br><span class="line">            minifyCSS: <span class="literal">true</span>,</span><br><span class="line">            minifyURLs: <span class="literal">true</span>,</span><br><span class="line">        &#125;))</span><br><span class="line">        .pipe(gulp.dest(<span class="string">'./public'</span>)) <span class="comment">// 输出的目录</span></span><br><span class="line">&#125;);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 压缩css</span></span><br><span class="line">gulp.task(<span class="string">'minify-css'</span>, <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.src([<span class="string">'./public/**/*.css'</span>,<span class="string">'!./public/js/**/*min.css'</span>])</span><br><span class="line">        .pipe(minifycss(&#123;</span><br><span class="line">            compatibility: <span class="string">'ie8'</span></span><br><span class="line">        &#125;))</span><br><span class="line">        .pipe(gulp.dest(<span class="string">'./public'</span>));</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 压缩js</span></span><br><span class="line">gulp.task(<span class="string">'minify-js'</span>, <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.src([<span class="string">'./public/**/.js'</span>,<span class="string">'!./public/js/**/*min.js'</span>])</span><br><span class="line">        .pipe(uglify())</span><br><span class="line">        .pipe(gulp.dest(<span class="string">'./public'</span>));</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 压缩图片</span></span><br><span class="line">gulp.task(<span class="string">'minify-images'</span>, <span class="function"><span class="keyword">function</span>(<span class="params"></span>) </span>&#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.src([<span class="string">'./public/**/*.png'</span>,<span class="string">'./public/**/*.jpg'</span>,<span class="string">'./public/**/*.gif'</span>])</span><br><span class="line">        .pipe(imagemin(</span><br><span class="line">        [imagemin.gifsicle(&#123;<span class="string">'optimizationLevel'</span>: <span class="number">3</span>&#125;), </span><br><span class="line">        imagemin.mozjpeg(&#123;<span class="string">'progressive'</span>: <span class="literal">true</span>&#125;), </span><br><span class="line">        imagemin.optipng(&#123;<span class="string">'optimizationLevel'</span>: <span class="number">5</span>&#125;), </span><br><span class="line">        imagemin.svgo()],</span><br><span class="line">        &#123;<span class="string">'verbose'</span>: <span class="literal">true</span>&#125;))</span><br><span class="line">        .pipe(gulp.dest(<span class="string">'./public'</span>))</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// gulp 4.0 适用的方式</span></span><br><span class="line">gulp.task(<span class="string">'default'</span>, gulp.parallel(<span class="string">'minify-html'</span>,<span class="string">'minify-css'</span>,<span class="string">'minify-js'</span>,<span class="string">'minify-images'</span></span><br><span class="line">));</span><br></pre></td></tr></table></figure><p>​    这里要注意,压缩过程中排除<code>*min.css</code>和<code>*min.js</code>这两类文件,因为这些文件其他人已经经过处理,不需要再进行压缩,否则可能无法正常使用。其他人网上的脚本使用的是<code>imagemin.jpegtran</code>,由于<code>gulp-imagemin</code>在7.0.0开始,已经被替换为 <code>mozjpeg</code>,具体可以在<a href="https://github.com/sindresorhus/gulp-imagemin/releases" target="_blank" rel="noopener">release</a>版本说明中查看。</p><h2 id="压缩指令"><a href="#压缩指令" class="headerlink" title="压缩指令"></a>压缩指令</h2><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">$ hexo clean// 可以先清除缓存文件和已生成的静态文件(特别是更换主题后需要执行此操作)</span><br><span class="line">$ hexo generate// 生成博客</span><br><span class="line">$ gulp default// 执行压缩,可简写为 gulp</span><br><span class="line">$ hexo deploy// 压缩完成无错误后,就可以发布了</span><br></pre></td></tr></table></figure><p>​    在执行压缩过程中,可能会遇到压缩jpg、压缩png、压缩gif时的错误,或者提示类似于<code>imagemin-*</code>组件无法找到的错误。此时应该注意,<code>gulp-imagemin</code>也有对应的相关依赖,如本博客中版本为<code>7.1.0</code>,有以下特定版本的<a href="https://github.com/sindresorhus/gulp-imagemin/commit/67cceb3cfcef05a9523f0a89c71d56e42e2c3981" target="_blank" rel="noopener">依赖</a>:</p><figure class="highlight"><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></pre></td><td class="code"><pre><span class="line">"optionalDependencies": &#123;</span><br><span class="line">"imagemin-gifsicle": "^7.0.0",</span><br><span class="line">"imagemin-mozjpeg": "^8.0.0",</span><br><span class="line">"imagemin-optipng": "^7.0.0",</span><br><span class="line">"imagemin-svgo": "^7.0.0"</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>​    若对应依赖组件的版本有问题,可能会导致压缩对应格式的图片出错,为此建议当出现某个组件压缩失败时,手动安装对应特定的版本,<code>npm</code>安装软件包特定版本的命令格式如下:</p><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 imagemin-mozjpeg@8.0.0 // 在软件包后面加上@版本号</span><br></pre></td></tr></table></figure><h2 id="效果"><a href="#效果" class="headerlink" title="效果"></a>效果</h2><p>​    一次压缩过程输出内容如下:</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><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">$ gulp</span><br><span class="line">[21:55:01] Using gulpfile ~/Documents/blog/gulpfile.js</span><br><span class="line">[21:55:01] Starting <span class="string">'default'</span>...</span><br><span class="line">[21:55:01] Starting <span class="string">'minify-html'</span>...</span><br><span class="line">[21:55:01] Starting <span class="string">'minify-css'</span>...</span><br><span class="line">[21:55:01] Starting <span class="string">'minify-js'</span>...</span><br><span class="line">[21:55:01] Starting <span class="string">'minify-images'</span>...</span><br><span class="line">[21:55:02] Finished <span class="string">'minify-js'</span> after 1.01 s</span><br><span class="line">[21:55:03] Finished <span class="string">'minify-css'</span> after 1.75 s</span><br><span class="line">[21:55:03] gulp-imagemin: ✔ images/apple-touch-icon-next.png (saved 190 B - 12.3%)</span><br><span class="line">[21:55:03] gulp-imagemin: ✔ images/favicon-16x16-next.png (saved 150 B - 34.5%)</span><br><span class="line">[21:55:03] gulp-imagemin: ✔ images/avatar.jpg (saved 3.69 kB - 18.6%)</span><br><span class="line">[21:55:03] gulp-imagemin: ✔ images/favicon-32x32-next.png (saved 152 B - 23.8%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-114433.jpg (saved 51.1 kB - 54.5%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202546.jpg (saved 21.3 kB - 47.3%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200236.jpg (saved 40.2 kB - 51%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-193801.jpg (saved 51 kB - 53%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-111152.jpg (saved 80.1 kB - 56.7%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ images/avatar.gif (saved 8 B - 0.4%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-203256.jpg (saved 17.2 kB - 43.5%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-205440.jpg (saved 18.5 kB - 47.4%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-200812.jpg (saved 49.4 kB - 52.7%)</span><br><span class="line">[21:55:04] gulp-imagemin: ✔ 2020/05/03/hexo-install-and-deploy/20200503-202952.jpg (saved 49.6 kB - 52.5%)</span><br><span class="line">[21:55:04] gulp-imagemin: Minified 14 images (saved 383 kB - 51.3%)</span><br><span class="line">[21:55:04] Finished <span class="string">'minify-html'</span> after 3.13 s</span><br><span class="line">[21:55:04] Finished <span class="string">'minify-images'</span> after 3.13 s</span><br><span class="line">[21:55:04] Finished <span class="string">'default'</span> after 3.14 s</span><br></pre></td></tr></table></figure><p>​    <code>index.html</code>在压缩前的大小为<code>37,326</code>字节,压缩后为<code>33,537</code>字节;utils.js在压缩前的大小为15,982字节,压缩后仍为 <code>15,982</code>字节;main.css在压缩前大小为49,538字节,压缩后为<code>38,183</code>字节。</p><p>​    由本次压缩可看出,Gulp对图片的压缩效果比较明显,在html、css、js上也有一定的效果,总体上讲还是有比较好的优化。</p>]]></content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;​    由于博客使用的插件较多,文章内包含的图片越多越大,会影响到博客的加载速度,影响访问效果。其中图片对文章加载速度影响较大,如果可以的话,可以使用国内的一些图床,但如果图床挂了,也会导致图片无法访问,迁移麻烦等,所以本博客还是挂在Github上进行访问。为此开始从资源文件大小上进行优化,了解到可以使用&lt;strong&gt;Gulp&lt;/strong&gt;对博客的js、css、img、html等静态资源文件进行压缩。&lt;/p&gt;
    
    </summary>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/categories/Hexo/"/>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/tags/Hexo/"/>
    
      <category term="Gulp" scheme="https://alderaan.xyz/tags/Gulp/"/>
    
  </entry>
  
Alderaan's avatar
Alderaan 已提交
98
  <entry>
Alderaan's avatar
Alderaan 已提交
99
    <title>ssh -T git@github.com Connection reset by XXX port 22</title>
Alderaan's avatar
Alderaan 已提交
100 101 102
    <link href="https://alderaan.xyz/2020/05/07/ssh-to-git-github-com-connection-reset/"/>
    <id>https://alderaan.xyz/2020/05/07/ssh-to-git-github-com-connection-reset/</id>
    <published>2020-05-07T05:34:09.000Z</published>
Alderaan's avatar
Alderaan 已提交
103
    <updated>2020-05-07T06:18:27.046Z</updated>
Alderaan's avatar
Alderaan 已提交
104
    
Alderaan's avatar
Alderaan 已提交
105
    <content type="html"><![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p>​    今天在用<strong>Hexo</strong>发布博客文章时,遇到上传<strong>Github</strong>失败问题,主要提示为</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><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">Connection reset by 52.74.223.119</span><br><span class="line">fatal: Could not <span class="built_in">read</span> from remote repository.</span><br><span class="line"></span><br><span class="line">Please make sure you have the correct access rights</span><br><span class="line">and the repository exists.</span><br></pre></td></tr></table></figure><a id="more"></a><h2 id="问题发现"><a href="#问题发现" class="headerlink" title="问题发现"></a>问题发现</h2><p>​    由于已经在<code>Git bash</code>中配置过SSH免密访问,且已正常使用过也没有进行修改,所以排除SSH key配置问题。怀疑是无法连接到<code>github.com</code>,尝试执行<code>ssh -T git@github.com</code>得到如下结果:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ ssh -T git@github.com</span><br><span class="line">Connection reset by 52.74.223.119 port 22</span><br></pre></td></tr></table></figure><p>​    竟然真的无法SSH连接到github.com???增加<code>-v</code>选项查看一下详细信息,反馈如下:</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><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">$ ssh -T -v git@github.com</span><br><span class="line">OpenSSH_8.0p1, OpenSSL 1.1.1c  28 May 2019</span><br><span class="line">debug1: Reading configuration data /c/Users/Alder/.ssh/config</span><br><span class="line">debug1: Reading configuration data /etc/ssh/ssh_config</span><br><span class="line">debug1: Connecting to github.com [52.74.223.119] port 22.</span><br><span class="line">debug1: Connection established.</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_rsa <span class="built_in">type</span> 0</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_rsa-cert <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_dsa <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_dsa-cert <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_ecdsa <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_ecdsa-cert <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_ed25519 <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_ed25519-cert <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_xmss <span class="built_in">type</span> -1</span><br><span class="line">debug1: identity file /c/Users/Alder/.ssh/id_xmss-cert <span class="built_in">type</span> -1</span><br><span class="line">debug1: Local version string SSH-2.0-OpenSSH_8.0</span><br><span class="line">debug1: Remote protocol version 2.0, remote software version babeld-d45c1532</span><br><span class="line">debug1: no match: babeld-d45c1532</span><br><span class="line">debug1: Authenticating to github.com:22 as <span class="string">'git'</span></span><br><span class="line">debug1: SSH2_MSG_KEXINIT sent</span><br><span class="line">Connection reset by 52.74.223.119 port 22</span><br></pre></td></tr></table></figure><h2 id="问题解决"><a href="#问题解决" class="headerlink" title="问题解决"></a>问题解决</h2><p>​    在Windows系统下,打开控制面板-&gt;系统和安全-&gt;Windows Defender 防火墙-&gt;高级设置,选择入站规则,点击新建规则,选择端口,在特定本地端口写入22,连续选择下一步三次,输入一个名称(随意命名规则),点击完成,然后再执行命令得到如下格式结果:</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ ssh -T git@github.com</span><br><span class="line">Hi XXX! You<span class="string">'ve successfully authenticated, but GitHub does not provide shell access.</span></span><br></pre></td></tr></table></figure><p>​    再尝试发布<strong>Hexo</strong>博客到<strong>Github</strong>就可以正常上传了…暂时不知道这其中的原理,即使将刚添加的规则删除了,再打开新的<code>Git bash</code>窗口也不会出现Connection reset错误了。。。</p>]]></content>
Alderaan's avatar
Alderaan 已提交
106 107 108
    
    <summary type="html">
    
Alderaan's avatar
Alderaan 已提交
109 110
      &lt;h2 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h2&gt;&lt;p&gt;​    今天在用&lt;strong&gt;Hexo&lt;/strong&gt;发布博客文章时,遇到上传&lt;strong&gt;Github&lt;/strong&gt;失败问题,主要提示为&lt;/p&gt;
&lt;figure class=&quot;highlight bash&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Connection reset by 52.74.223.119&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;fatal: Could not &lt;span class=&quot;built_in&quot;&gt;read&lt;/span&gt; from remote repository.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Please make sure you have the correct access rights&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;and the repository exists.&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
Alderaan's avatar
Alderaan 已提交
111
    
Alderaan's avatar
Alderaan 已提交
112 113 114
    </summary>
    
    
Alderaan's avatar
Alderaan 已提交
115 116 117 118 119 120
      <category term="Github" scheme="https://alderaan.xyz/categories/Github/"/>
    
    
      <category term="Github" scheme="https://alderaan.xyz/tags/Github/"/>
    
      <category term="SSH" scheme="https://alderaan.xyz/tags/SSH/"/>
Alderaan's avatar
Alderaan 已提交
121 122 123
    
  </entry>
  
Alderaan's avatar
Alderaan 已提交
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
  <entry>
    <title>Hexo博客Next主题美化</title>
    <link href="https://alderaan.xyz/2020/05/06/hexo-config/"/>
    <id>https://alderaan.xyz/2020/05/06/hexo-config/</id>
    <published>2020-05-06T07:01:22.000Z</published>
    <updated>2020-05-07T03:44:34.073Z</updated>
    
    <content type="html"><![CDATA[<p>​    本文主要说明在<strong>Hexo</strong>博客<strong>nexT</strong>主题下如何进行美化,具体对应效果可通过本博客页面进行查看。</p><ul><li>Hexo version: 4.2.0</li><li>nexT version:7.8.0</li></ul><a id="more"></a><hr><h2 id="更改nexT主题为中文"><a href="#更改nexT主题为中文" class="headerlink" title="更改nexT主题为中文"></a>更改nexT主题为中文</h2><p>​    在<strong>站点配置文件</strong>中的<code>Site</code>配置进行如下修改:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">language:</span> <span class="string">zh-CN</span> <span class="comment"># 简体中文</span></span><br></pre></td></tr></table></figure><hr><h2 id="更改头像"><a href="#更改头像" class="headerlink" title="更改头像"></a>更改头像</h2><p>​    将头像图片放在<code>/blog/themes/next/source/images/</code>下,然后在<strong>主题配置文件</strong>下搜索<code>avatar.gif</code>,修改为要替换的头像图片名称。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Replace the default image and set the url here.</span></span><br><span class="line"><span class="attr">url:</span> <span class="string">/images/avatar.jpg</span> <span class="comment"># 头像图片名称 这里我的图片成名为avatar.jpg</span></span><br></pre></td></tr></table></figure><hr><h2 id="更改头像显示框为圆形"><a href="#更改头像显示框为圆形" class="headerlink" title="更改头像显示框为圆形"></a>更改头像显示框为圆形</h2><p>​    在<code>/blog/themes/next/source/css/_common/outline/sidebar</code>文件夹下编辑<code>sidebar-author.styl</code>文件,做出如下修改:</p><figure class="highlight stylus"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.site-author-image</span> &#123;</span><br><span class="line">  <span class="attribute">border</span>: <span class="variable">$site</span>-author-image-border-width solid <span class="variable">$site</span>-author-image-border-color;</span><br><span class="line">  <span class="attribute">display</span>: block;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span> auto;</span><br><span class="line">  <span class="attribute">max-width</span>: <span class="variable">$site</span>-author-image-width;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">2px</span>;</span><br><span class="line">  </span><br><span class="line">  <span class="comment">/* 头像圆形 */</span></span><br><span class="line">  border-radius: 50%; # 新增</span><br><span class="line">  transition: 2s all; # 新增</span><br><span class="line"></span><br><span class="line">  <span class="keyword">if</span> (hexo-config(<span class="string">'avatar.rounded'</span>)) &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><hr><h2 id="更改博客标题和作者名称"><a href="#更改博客标题和作者名称" class="headerlink" title="更改博客标题和作者名称"></a>更改博客标题和作者名称</h2><p>​    在<strong>站点配置文件</strong>中的<code>Site</code>配置进行如下修改:</p><figure class="highlight yaml"><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></pre></td><td class="code"><pre><span class="line"><span class="comment"># Site</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">Alderaan的博客</span> <span class="comment"># 博客名称</span></span><br><span class="line"><span class="attr">subtitle:</span> <span class="string">''</span></span><br><span class="line"><span class="attr">description:</span> <span class="string">''</span></span><br><span class="line"><span class="attr">keywords:</span></span><br><span class="line"><span class="attr">author:</span> <span class="string">Alderaan</span> <span class="comment"># 作者名称</span></span><br><span class="line"><span class="attr">language:</span> <span class="string">zh-CN</span></span><br><span class="line"><span class="attr">timezone:</span> <span class="string">''</span></span><br></pre></td></tr></table></figure><hr><h2 id="文章开启版权说明"><a href="#文章开启版权说明" class="headerlink" title="文章开启版权说明"></a>文章开启版权说明</h2><p>​    新版<strong>nexT</strong>已增加版权说明模块,只需要在文章开头设置<code>copyright: true</code>即可,也可以修改<code>~/scaffolds/post.md</code> 文件,设置新建文章自动开启 <code>copyright</code>:</p><figure class="highlight yaml"><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"><span class="meta">---</span></span><br><span class="line"><span class="attr">title:</span> <span class="string">&#123;&#123;</span> <span class="string">title</span> <span class="string">&#125;&#125;</span></span><br><span class="line"><span class="attr">date:</span> <span class="string">&#123;&#123;</span> <span class="string">date</span> <span class="string">&#125;&#125;</span></span><br><span class="line"><span class="attr">copyright:</span> <span class="literal">true</span> <span class="comment"># 设置默认开启版权说明</span></span><br><span class="line"><span class="meta">---</span></span><br></pre></td></tr></table></figure><hr><h2 id="添加「标签」页面"><a href="#添加「标签」页面" class="headerlink" title="添加「标签」页面"></a>添加「标签」页面</h2><p>新建「标签」页面,并在菜单中显示「标签」链接。「标签」页面将展示站点的所有标签,若你的所有文章都未包含标签,此页面将是空的。 底下代码是一篇包含标签的文章的例子:</p><figure class="highlight plain"><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">title: 标签测试文章</span><br><span class="line">tags:</span><br><span class="line">  - Testing</span><br><span class="line">  - Another Tag</span><br><span class="line">---</span><br></pre></td></tr></table></figure><p>请参阅官方 <a href="https://hexo.io/zh-cn/docs/front-matter.html#分类和标签" target="_blank" rel="noopener">Hexo 的分类与标签文档</a>,了解如何为文章添加标签或者分类。</p><ul><li><a href="http://theme-next.iissnan.com/theme-settings.html#new-page-tags" target="_blank" rel="noopener">新建页面</a></li><li><a href="http://theme-next.iissnan.com/theme-settings.html#set-page-tags" target="_blank" rel="noopener">设置页面类型</a></li><li><a href="http://theme-next.iissnan.com/theme-settings.html#update-menu-for-tags-page" target="_blank" rel="noopener">修改菜单</a></li></ul><p>在终端窗口下,定位到 Hexo 站点目录下。使用 <code>hexo new page</code> 新建一个页面,命名为 <code>tags</code> :</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ cd your-hexo-site</span><br><span class="line">$ hexo new page tags</span><br></pre></td></tr></table></figure><p><strong>注意:</strong>如果有集成评论服务,页面也会带有评论。 若需要关闭的话,请添加字段 <code>comments</code> 并将值设置为 <code>false</code>,如:</p><p>禁用评论示例</p><figure class="highlight plain"><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">title: 标签</span><br><span class="line">date: 2014-12-22 12:39:04</span><br><span class="line">type: &quot;tags&quot;</span><br><span class="line">comments: false</span><br><span class="line">---</span><br></pre></td></tr></table></figure><hr><h2 id="添加「分类」页面"><a href="#添加「分类」页面" class="headerlink" title="添加「分类」页面"></a>添加「分类」页面</h2><p>​    新建「分类」页面,并在菜单中显示「分类」链接。「分类」页面将展示站点的所有分类,若你的所有文章都未包含分类,此页面将是空的。 底下代码是一篇包含分类的文章的例子:</p><figure class="highlight plain"><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">title: 分类测试文章</span><br><span class="line">categories: Testing</span><br><span class="line">---</span><br></pre></td></tr></table></figure><p>​    请参阅官方 <a href="https://hexo.io/zh-cn/docs/front-matter.html#分类和标签" target="_blank" rel="noopener">Hexo 的分类与标签文档</a>,了解如何为文章添加标签或者分类。</p><ul><li><p><a href="http://theme-next.iissnan.com/theme-settings.html#new-page-categories" target="_blank" rel="noopener">新建页面</a></p></li><li><p><a href="http://theme-next.iissnan.com/theme-settings.html#set-page-categories" target="_blank" rel="noopener">设置页面类型</a></p></li><li><p><a href="http://theme-next.iissnan.com/theme-settings.html#update-menu-for-categories-page" target="_blank" rel="noopener">修改菜单</a></p><p>在终端窗口下,定位到 Hexo 站点目录下。使用 <code>hexo new page</code> 新建一个页面,命名为 <code>categories</code> :</p></li></ul><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ cd your-hexo-site</span><br><span class="line">$ hexo new page categories</span><br></pre></td></tr></table></figure><p>​    <strong>注意:</strong>如果有集成评论服务,页面也会带有评论。 若需要关闭的话,请添加字段 <code>comments</code> 并将值设置为 <code>false</code>,如:</p><p>​    禁用评论示例</p><figure class="highlight plain"><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">title: 分类</span><br><span class="line">date: 2014-12-22 12:39:04</span><br><span class="line">type: &quot;categories&quot;</span><br><span class="line">comments: false</span><br><span class="line">---</span><br></pre></td></tr></table></figure><hr><h2 id="开启网站计数"><a href="#开启网站计数" class="headerlink" title="开启网站计数"></a>开启网站计数</h2><p>​    在<strong>主题配置文件</strong>中搜索<code>busuanzi_count</code>,做出如下修改:</p><figure class="highlight plain"><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><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"># Show Views &#x2F; Visitors of the website &#x2F; page with busuanzi.</span><br><span class="line"># Get more information on http:&#x2F;&#x2F;ibruce.info&#x2F;2015&#x2F;04&#x2F;04&#x2F;busuanzi</span><br><span class="line">busuanzi_count:</span><br><span class="line">  enable: true # 更改为true开启计数</span><br><span class="line">  total_visitors: true</span><br><span class="line">  total_visitors_icon: fa fa-user</span><br><span class="line">  total_views: true</span><br><span class="line">  total_views_icon: fa fa-eye</span><br><span class="line">  post_views: true</span><br><span class="line">  post_views_icon: fa fa-eye</span><br></pre></td></tr></table></figure><hr><h2 id="开启文章底部标签图标显示"><a href="#开启文章底部标签图标显示" class="headerlink" title="开启文章底部标签图标显示"></a>开启文章底部标签图标显示</h2><p>​    在<strong>主题配置文件</strong>中搜索<code>tag_icon</code>,做出如下修改:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># Use icon instead of the symbol # to indicate the tag at the bottom of the post</span><br><span class="line">tag_icon: true # 更改为true开启图标显示,默认为&#39;#&#39;号</span><br></pre></td></tr></table></figure><hr><h2 id="添加Live2D宠物"><a href="#添加Live2D宠物" class="headerlink" title="添加Live2D宠物"></a>添加Live2D宠物</h2><p>​    首先在博客目录下执行:</p><figure class="highlight cmd"><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">#<span class="built_in">cmd</span> 进入博客根目录</span><br><span class="line">#安装 hexo-helper-live2d</span><br><span class="line">npm install hexo-helper-live2d -save</span><br></pre></td></tr></table></figure><p>​    在<strong>站点配置文件</strong>尾部新增:</p><figure class="highlight yml"><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><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Live2d</span></span><br><span class="line"><span class="attr">live2d:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">scriptFrom:</span> <span class="string">local</span></span><br><span class="line">  <span class="attr">pluginRootPath:</span> <span class="string">live2dw/</span></span><br><span class="line">  <span class="attr">pluginJsPath:</span> <span class="string">lib/</span></span><br><span class="line">  <span class="attr">pluginModelPath:</span> <span class="string">assets/</span></span><br><span class="line">  <span class="attr">model:</span></span><br><span class="line">    <span class="attr">use:</span> <span class="string">live2d-widget-model-hijiki</span></span><br><span class="line">  <span class="attr">display:</span></span><br><span class="line">    <span class="attr">position:</span> <span class="string">right</span></span><br><span class="line">    <span class="attr">width:</span> <span class="number">150</span></span><br><span class="line">    <span class="attr">height:</span> <span class="number">300</span></span><br><span class="line">  <span class="attr">mobile:</span></span><br><span class="line">    <span class="attr">show:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><p>​    <code>npm</code>安装需要的宠物文件</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install &#123;packagename&#125;</span><br></pre></td></tr></table></figure><p>​    如本博客宠物名为hijiki, 则为 <code>npm install live2d-widget-model-hijiki</code>,其他宠物包点击<a href="https://github.com/xiazeyu/live2d-widget-models" target="_blank" rel="noopener">live2d-widget-models</a>。详细内容可参考<a href="https://github.com/EYHN/hexo-helper-live2d" target="_blank" rel="noopener"><strong>hexo-helper-live2d</strong></a>。</p><hr>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;​    本文主要说明在&lt;strong&gt;Hexo&lt;/strong&gt;博客&lt;strong&gt;nexT&lt;/strong&gt;主题下如何进行美化,具体对应效果可通过本博客页面进行查看。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hexo version: 4.2.0&lt;/li&gt;
&lt;li&gt;nexT version:7.8.0&lt;/li&gt;
&lt;/ul&gt;
    
    </summary>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/categories/Hexo/"/>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>在GitHub上搭建Hexo个人博客</title>
    <link href="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/"/>
    <id>https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/</id>
    <published>2020-05-03T02:04:45.000Z</published>
    <updated>2020-05-07T03:46:42.729Z</updated>
    
    <content type="html"><![CDATA[<h1 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h1><p>​    近来发现,之前学习过、实践过的东西,要用的时候经常一时想不起来。习惯性添加进谷歌浏览器的书签,也会因为对方博客文章删除等无法继续看到。特别的是,部署一个东西需要看几个网上资源才可以完成,书签列表越来越长,难以维护。为此,觉得还是很有必要通过写博客的方式进行分类记录,也方便分享经验。本着<code>能折腾就不闲着</code>的宗旨,在网上查阅有关资料后,决定在<strong>GitHub</strong>上搭建<strong>Hexo</strong>个人博客,顺便学习使用<strong>Markdown</strong>。</p><a id="more"></a><h1 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h1><h2 id="安装Git"><a href="#安装Git" class="headerlink" title="安装Git"></a>安装<strong>Git</strong></h2><p>​    在<strong>Git</strong>的官方<a href="https://git-scm.com/downloads" target="_blank" rel="noopener">下载地址</a>上,选择要安装平台的安装文件进行安装</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-111152.jpg" alt="Git官方下载地址截图"></p><p>​    上述图片是在Mac OS上访问网页的截图,官网一般会自动检测当前电脑的系统,如果是Windows上浏览网页右侧显示会略有不同,当然也可以在Downloads下选择特定平台的版本安装文件。</p><h2 id="安装Node-js"><a href="#安装Node-js" class="headerlink" title="安装Node.js"></a>安装<strong>Node.js</strong></h2><p>​    在<strong>Node.js</strong>的官方<a href="https://nodejs.org/en/" target="_blank" rel="noopener">下载地址</a>上,选择要安装平台的安装文件进行安装</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-114433.jpg" alt="Node.js官方下载地址截图"></p><p>​    这里我选择的是12.16.3 LTS版本进行安装。</p><h1 id="安装Hexo"><a href="#安装Hexo" class="headerlink" title="安装Hexo"></a>安装Hexo</h1><h2 id="执行安装命令"><a href="#执行安装命令" class="headerlink" title="执行安装命令"></a>执行安装命令</h2><p>​    在命令行执行以下命令(Mac、Linux下需要加上sudo权限)</p><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</span><br></pre></td></tr></table></figure><h2 id="初始化网站"><a href="#初始化网站" class="headerlink" title="初始化网站"></a>初始化网站</h2><p>​    在磁盘上创建好一个文件夹(本文章文件夹名为blog),用于保存网站文件,并切换到文件夹后,执行一下命令</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">cd</span> blog</span><br><span class="line">$ hexo init</span><br></pre></td></tr></table></figure><h2 id="生成默认网页"><a href="#生成默认网页" class="headerlink" title="生成默认网页"></a>生成默认网页</h2><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 generate <span class="comment"># 也可以简写为 hexo g</span></span><br></pre></td></tr></table></figure><h2 id="启动本地预览服务"><a href="#启动本地预览服务" class="headerlink" title="启动本地预览服务"></a>启动本地预览服务</h2><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 server <span class="comment"># 也可以简写为 hexo s</span></span><br></pre></td></tr></table></figure><p>​    默认的本地预览服务地址为 <a href="http://localhost:4000" target="_blank" rel="noopener">http://localhost:4000</a> ,需要先确保端口4000没有被占用,以免影响访问网页。不出意外,在浏览器上可以看到如下默认网页。</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-205440.jpg" alt="Hexo博客默认主题Hello World页面"></p><h2 id="修改主题"><a href="#修改主题" class="headerlink" title="修改主题"></a>修改主题</h2><p>​    如果对默认主题风格不满意,可以在hexo的<a href="https://hexo.io/themes/" target="_blank" rel="noopener">官网</a>上寻找自己喜欢的主题,并下载到theme目录下面。本博客使用的是NexT主题,可执行如下代码下载</p><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">$ git <span class="built_in">clone</span> https://github.com/iissnan/hexo-theme-next themes/next <span class="comment"># 若通过git clone下载,后续如果修改了主题配置,则无法提交修改后子模块源码到GitHub,建议下载后手动拷贝到themes文件夹下</span></span><br></pre></td></tr></table></figure><p>​    在 Hexo 中有两份主要的配置文件,其名称都是 <code>_config.yml</code>。 其中,一份位于站点根目录下,主要包含 Hexo 本身的配置;另一份位于主题目录下,这份配置由主题作者提供,主要用于配置主题相关的选项。</p><p>​    为了描述方便,在以下说明中,将前者称为 <strong>站点配置文件</strong>, 后者称为 <strong>主题配置文件</strong>。打开 <strong>站点配置文件</strong>, 找到 <code>theme</code> 字段,并将其值更改为 <code>next</code>,以启用 NexT 主题</p><blockquote><p>theme: next</p></blockquote><p>​    在切换主题之后、验证之前, 我们最好使用 <code>hexo clean</code> 来清除 Hexo 的缓存。重新执行<code>hexo g</code>和<code>hexo s</code>即可查看应用新主题后的默认网页。</p><h1 id="部署到GitHub"><a href="#部署到GitHub" class="headerlink" title="部署到GitHub"></a>部署到GitHub</h1><h2 id="配置免密SSH登陆"><a href="#配置免密SSH登陆" class="headerlink" title="配置免密SSH登陆"></a>配置免密SSH登陆</h2><p>​    由于Hexo博客文章是通过提交代码实现,所以需要拥有github传输权限,但是直接使用用户名和密码不够安全,所以我们使用SSH Key来解决本地和服务器的连接问题。</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">cd</span> ~/.ssh </span><br><span class="line">$ ls <span class="comment">#检查本机已存在的ssh密钥</span></span><br></pre></td></tr></table></figure><p>​    如果没有任何结果,说明你是第一次使用git;如果仅有known_hosts文件,没有包含<code>id_rsa</code>字样文件,则需要创建SSH Key:</p><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">$ ssh-keygen -t rsa -C <span class="string">"邮件地址"</span></span><br></pre></td></tr></table></figure><p>​    然后连续3次回车(默认不添加密码),最终会生成两个文件(<code>id_rsa</code>和<code>id_rsa.pub</code>)在用户目录下,打开用户目录,找到<code>.ssh/id_rsa.pub</code>文件,执行</p><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">$ cat id_rsa.pub</span><br></pre></td></tr></table></figure><p>​    并复制里面的内容(<code>ssh-rsa</code>开头、你输入的<code>邮件地址</code>内容结尾),打开你的github主页,进入Settings -&gt; SSH and GPG keys -&gt; New SSH key:</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-193801.jpg" alt="SSH配置截图"></p><p>​    将刚复制的内容粘贴到Key那里,Title按实际需要填写内容,保存后测试是否配置成功。</p><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">$ ssh -T git@github.com <span class="comment">#注意地址不用改</span></span><br></pre></td></tr></table></figure><p>​    如果提示<code>Are you sure you want to continue connecting (yes/no)?</code>,输入yes,如果返回如下信息,说明SSH已配置成功:</p><blockquote><p>Hi XXX! You’ve successfully authenticated, but GitHub does not provide shell access.</p></blockquote><h2 id="创建个人主页仓库"><a href="#创建个人主页仓库" class="headerlink" title="创建个人主页仓库"></a>创建个人主页仓库</h2><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-202952.jpg" alt="创建Github仓库截图"></p><p>​    这里需要注意的是,仓库名字格式为<code>xxx.github.io</code>,且前缀需要和Username一致,如果你的github账户名为blog,那么对应的的仓库名为blog.github.io。新建成功后,复制SSH地址。</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-config/20200503-203256.jpg" alt="SSH地址截图"></p><h2 id="绑定个人域名-可选"><a href="#绑定个人域名-可选" class="headerlink" title="绑定个人域名(可选)"></a>绑定个人域名(可选)</h2><p>​    如果不绑定域名,只能通过默认的 <code>xxx.github.io</code> 来访问,如果你想更个性一点,可以在阿里云上注册一个域名(需要实名认证),并到控制台-&gt;域名-&gt;解析-&gt;解析设置-&gt;添加记录。</p><p>​    域名解析配置最常见有2种方式,CNAME和A记录,CNAME填写域名,A记录填写IP,由于不带www方式只能采用A记录,所以必须先ping一下<code>你Username.github.io</code>的IP,然后到你的域名DNS设置页,将A记录指向你ping得到的IP,将CNAME指向<code>Username.github.io</code>,这样可以保证无论是否添加www都可以访问,如下所示:</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-200236.jpg" alt="域名解析设置截图"></p><p>​    此时需要到仓库下面,选择<code>Settings</code>-&gt;<code>options</code>,并下拉滚动条到<strong>GitHub Pages</strong>-&gt;<code>Custom domain</code>内填写上你的个人域名地址,如下所示:</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-200812.jpg" alt="GitHub Pages配置截图"></p><p>​    可以开启<strong>Enforce HTTPS</strong>,个人页面Github会自动添加HTTPS证书,不会提示连接不安全的问题。</p><blockquote><p>此时还不能直接通过域名验证,由于阿里云免费的域名解析需要10分钟时间才能完全同步,且Github会自动申请添加HTTPS证书,需要一定时间。建议等待十分钟后,再查看是否可以正常访问。</p></blockquote><h2 id="上传Hexo生成的博客"><a href="#上传Hexo生成的博客" class="headerlink" title="上传Hexo生成的博客"></a>上传Hexo生成的博客</h2><p>​    hexo可以通过命令直接上传到git,但需要安装一个插件:</p><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>​    安装后,打开<strong>站点配置文件</strong>,找到<code>deploy</code>部分,修改<code>repository</code>项内容:</p><figure class="highlight yaml"><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"><span class="attr">deploy:</span></span><br><span class="line"><span class="attr">type:</span> <span class="string">git</span>  </span><br><span class="line"><span class="attr">repository:</span> <span class="string">git@github.com:Username/Username.github.io.git</span>  </span><br><span class="line"><span class="attr">branch:</span> <span class="string">master</span></span><br></pre></td></tr></table></figure><p>​    此时,到blog下输入</p><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 deploy <span class="comment"># 也可以简写为 hexo d</span></span><br></pre></td></tr></table></figure><p>​    就会将本次有改动的代码全部提交到<code>master</code>:</p><p><img src="https://alderaan.xyz/2020/05/03/hexo-install-and-deploy/20200503-202546.jpg" alt="hexo d命令结果截图"></p><h2 id="上传Hexo博客源码-可选"><a href="#上传Hexo博客源码-可选" class="headerlink" title="上传Hexo博客源码(可选)"></a>上传Hexo博客源码(可选)</h2><p>​    为方便在MacOS、Windows不同电脑上随时编辑博客,且防止当前电脑故障,导致找不到Hexo配置及博文原始md文件,可以在存放Hexo博客生成的页面上创建一个新分支source,用于专门提交博客源码。</p><p>​    操作步骤如下:</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><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">$ <span class="built_in">cd</span> blog <span class="comment"># 切换到博客文件夹下</span></span><br><span class="line">$ git init <span class="comment"># 初始化git</span></span><br><span class="line">$ git remote add origin https://github.com/Username/Username.github.io.git <span class="comment"># 替换为你实际的git地址</span></span><br><span class="line">$ git checkout -b <span class="built_in">source</span> <span class="comment"># 创建并切换到新分支source</span></span><br><span class="line">$ git add . <span class="comment"># 添加当前所有文件(Hexo博客源码自带上传规则,会自动排出public等博客会自动生成的文件)</span></span><br><span class="line">$ git commit -m <span class="string">"your description"</span> <span class="comment"># 添加提交版本描述</span></span><br><span class="line">$ git push origin <span class="built_in">source</span> <span class="comment">#提交Hexo博客源码到source分支</span></span><br></pre></td></tr></table></figure><p>​    由于<strong>站点配置文件</strong>指定了上传博客网页的是master分支,所以提交Hexo博客源码切换的<code>source</code>分支,不会影响到<code>hexo d</code>的正常提交,两者互不冲突。</p><p>​    至此,Hexo博客的安装部署工作已经完成!</p>]]></content>
    
    <summary type="html">
    
      &lt;h1 id=&quot;概述&quot;&gt;&lt;a href=&quot;#概述&quot; class=&quot;headerlink&quot; title=&quot;概述&quot;&gt;&lt;/a&gt;概述&lt;/h1&gt;&lt;p&gt;​    近来发现,之前学习过、实践过的东西,要用的时候经常一时想不起来。习惯性添加进谷歌浏览器的书签,也会因为对方博客文章删除等无法继续看到。特别的是,部署一个东西需要看几个网上资源才可以完成,书签列表越来越长,难以维护。为此,觉得还是很有必要通过写博客的方式进行分类记录,也方便分享经验。本着&lt;code&gt;能折腾就不闲着&lt;/code&gt;的宗旨,在网上查阅有关资料后,决定在&lt;strong&gt;GitHub&lt;/strong&gt;上搭建&lt;strong&gt;Hexo&lt;/strong&gt;个人博客,顺便学习使用&lt;strong&gt;Markdown&lt;/strong&gt;&lt;/p&gt;
    
    </summary>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/categories/Hexo/"/>
    
    
      <category term="Hexo" scheme="https://alderaan.xyz/tags/Hexo/"/>
    
      <category term="Github" scheme="https://alderaan.xyz/tags/Github/"/>
    
  </entry>
  
</feed>