【持續更新】最全Hexo博客搭建+主題優化+插件配置+經常使用操做+錯誤分析

若是你和我同樣是小白,那麼恭喜你!javascript

看完這篇文章,你也能夠擁有一個這樣的博客啦!css

前言

  1. 歡迎在文末留言,或者點擊加入QQ羣933583982互相交流。
  2. 本文采用 CC BY-NC-SA 4.0 許可協議,轉載請註明出處!
  3. 【持續更新】連接:www.simon96.online/2018/10/12/…

博客搭建

準備環境

  1. Node.js 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…html

  2. Git 下載,並安裝。詳細步驟:www.simon96.online/2018/11/10/…java

  3. 安裝Hexo,在命令行(即Git Bash)運行如下命令:node

    npm install -g hexo-clinginx

  4. 初始化Hexo,在命令行(即Git Bash)依次運行如下命令便可:c++

    如下,即存放Hexo初始化文件的路徑, 即站點目錄。git

    $ hexo init <folder>
    $ cd <folder>
    $ npm install
    複製代碼

    新建完成後,在路徑下,會產生這些文件和文件夾:github

    .
    ├── _config.yml
    ├── package.json
    ├── scaffolds
    ├── source
    |   ├── _drafts
    |   └── _posts
    └── themes
    複製代碼

    web

    • hexo相關命令均在站點目錄下,用Git Bash運行。

    • 站點配置文件:站點目錄下的_config.yml

      ​ 路徑爲<folder>\_config.yml

    • 主題配置文件:站點目錄下的themes文件夾下的,主題文件夾下的_config.yml

      ​ 路徑爲<folder>\themes\<主題文件夾>\_config.yml

  5. 啓動服務器。在路徑下,命令行(即Git Bash)輸入如下命令,運行便可:

    hexo server

  6. 瀏覽器訪問網址: http://localhost:4000/

至此,您的Hexo博客已經搭建在本地。

實施方案

方案一:GithubPages
  1. 建立Github帳號

  2. 建立倉庫, 倉庫名爲:<Github帳號名稱>.github.io

  3. 將本地Hexo博客推送到GithubPages

    3.1. 安裝hexo-deployer-git插件。在命令行(即Git Bash)運行如下命令便可:

    $ npm install hexo-deployer-git --save
    複製代碼

    3.2. 添加SSH key。

    • 建立一個 SSH key 。在命令行(即Git Bash)輸入如下命令, 回車三下便可:

      $ ssh-keygen -t rsa -C "郵箱地址"
      複製代碼
    • 添加到 github。 複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub),粘貼到New SSH Key便可。

    • 測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:

      $ ssh -T git@github.com
      $ yes
      複製代碼

    3.3. 修改_config.yml(在站點目錄下)。文件末尾修改成:

    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
      type: git
      repo: git@github.com:<Github帳號名稱>/<Github帳號名稱>.github.io.git
      branch: master
    複製代碼

    注意:上面倉庫地址寫ssh地址,不寫http地址。

    3.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git即成功推送:

    $ hexo g
    $ hexo d
    複製代碼
  4. 等待1分鐘左右,瀏覽器訪問網址: https://<Github帳號名稱>.github.io

至此,您的Hexo博客已經搭建在GithubPages, 域名爲https://<Github帳號名稱>.github.io

方案二:GithubPages + 域名

在方案一的基礎上,添加自定義域名(您購買的域名)。

  1. 域名解析。

    類型選擇爲 CNAME;

    主機記錄即域名前綴,填寫爲www;

    記錄值填寫爲自定義域名;

    解析線路,TTL 默認便可。

  2. 倉庫設置。

    2.1. 打開博客倉庫設置:https://github.com/<Github帳號名稱>/<Github帳號名稱>.github.io/settings

    2.2. 在Custom domain下,填寫自定義域名,點擊save

    2.3. 在站點目錄的source文件夾下,建立並打開CNAME.txt,寫入你的域名(如www.simon96.online),保存,並重命名爲CNAME

  3. 等待10分鐘左右。

    瀏覽器訪問自定義域名。

    至此,您的Hexo博客已經解析到自定義域名,https://<Github帳號名稱>.github.io依然可用。

方案三:GithubPages + CodingPages + 域名

GithubPages 在國內較慢,百度不收錄,而CodingPages 在國外較快。因此在方案二的基礎上,添加CodingPages 。

  1. 建立Coding帳號

  2. 建立倉庫, 倉庫名爲:<Coding帳號名稱>

  3. 進入項目裏『代碼』頁面,點擊『一鍵開啓靜態 Pages』,稍等片刻CodingPages便可部署成功。

  4. 將本地Hexo博客推送到CodingPages

    4.1. 鑑於建立GithubPages 時,已經生成過公鑰。可直接複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub), 粘貼到新增公鑰

    4.2. 測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:

    $ ssh -T git@git.coding.net
    $ yes
    複製代碼

    4.3. 修改_config.yml(在存放Hexo初始化文件的路徑下)。文件末尾修改成:

    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
    - type: git
      repo: git@github.com:<Github帳號名稱>/<Github帳號名稱>.github.io.git
      branch: master
    - type: git
      repo: git@git.dev.tencent.com:<Coding帳號名稱>/<Coding帳號名稱>.git
      branch: master
    複製代碼

    4.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git即成功推送:

    $ hexo g
    $ hexo d
    複製代碼
  5. 域名解析

    1. 添加 CNAME 記錄指向 <Coding帳號名稱>.coding.me

      類型選擇爲 CNAME;

      主機記錄即域名前綴,填寫爲www;

      記錄值填寫爲自定義域名;

      解析線路,TTL 默認便可。

    2. 添加 兩條A 記錄指向 192.30.252.153和192.30.252.154

      類型選擇爲 A;

      主機記錄即域名前綴,填寫爲@;

      記錄值填寫爲192.30.252.153和192.30.252.154;

      解析線路,境外或谷歌。

    3. 在『Pages 服務』設置頁(https://dev.tencent.com/u/<Coding帳號名稱>/p/<Coding帳號名稱>/git/pages/settings)中綁定自定義域名。

至此,您的Hexo博客已經解析到自定義域名,https://<Github帳號名稱>.github.iohttps://<Coding帳號名稱>.coding.me依然可用。

方案四:雲服務器 + 域名

該方案須要先購買雲服務器和域名。

  1. 在雲服務器安裝Git 和 Nginx。(Git 用於版本管理和部署,Nginx 用於靜態博客託管。)

    登錄root用戶,運行:

    $ yum -y update
    $ yum install -y git nginx
    複製代碼
  2. Nginx配置

    2.1. 建立文件目錄(用於博客站點文件存放)

    cd /usr/local/
    mkdir hexo
    chmod 775 -R /usr/local/hexo/
    複製代碼

    2.2. 添加 index.html(用於檢測配置 Nginx 是否成功)

    vim /usr/local/hexo/index.html
    複製代碼

    添加如下代碼,並保存。

    <!DOCTYPE html>
    <html>
      <head>
        <title></title>
        <meta charset="UTF-8">
      </head>
      <body>
        <p>Nginx running</p>
      </body>
    </html>
    複製代碼

    2.3. 配置 Nginx 服務器

    vim /etc/nginx/nginx.conf
    複製代碼

    修改server_name和root:

    server {
          listen       80 default_server;
          listen       [::]:80 default_server;
          server_name  www.baidu.com; # 填我的域名 
          root         /usr/local/hexo/;
      }      
    複製代碼

    2.4. 啓動nginx服務;

    service nginx start
    複製代碼

    2.5. 雲服務器瀏覽器訪問我的域名或IP,若跳轉index.html,則配置完成,不然檢查以上配置。

  3. git配置

    3.1. 建立文件目錄, 用於私人 Git 倉庫搭建, 並更改目錄讀寫權限。

    cd /usr/local/
    mkdir hexoRepo
    chmod 775 -R /usr/local/hexoRepo/
    複製代碼

    3.2. Git 初始化裸庫。

    cd hexoRepo/
    git init --bare hexo.git
    複製代碼

    3.3. 建立 Git 鉤子(hook)。

    vim /usr/local/hexoRepo/hexo.git/hooks/post-receive
    複製代碼

    3.4. 輸入如下信息,用於指定 Git 的源代碼 和 Git 配置文件。

    #!/bin/bash 
    git --work-tree=/usr/local/hexo --git-dir=/usr/local/hexoRepo/hexo.git checkout -f
    複製代碼

    3.5. 保存並退出後, 給該文件添加可執行權限。

    chmod +x /usr/local/hexoRepo/hexo.git/hooks/post-receive
    複製代碼
  4. 本地博客推送到雲服務器

    4.1. 安裝hexo-deployer-git插件。在命令行(即Git Bash)運行如下命令便可:

    $ npm install hexo-deployer-git --save
    複製代碼

    4.2. 添加SSH key。

    • 建立一個 SSH key 。在命令行(即Git Bash)輸入如下命令, 回車三下便可:

      $ ssh-keygen -t rsa -C "郵箱地址"
      複製代碼
    • 添加到 github。 複製密鑰文件內容(路徑形如C:\Users\Administrator\.ssh\id_rsa.pub),粘貼到New SSH Key便可。

    • 測試是否添加成功。在命令行(即Git Bash)依次輸入如下命令,返回「You've successfully authenticated」即成功:

      $ ssh -T git@github.com
      $ yes
      複製代碼

    4.3. 修改_config.yml(在站點目錄下)。文件末尾修改成:

    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
      type: git
      repo: root@xxx.xxx.xxx.xxx:/usr/local/hexoRepo/hexo  //用戶名@域名或 IP 地址:/usr/local/hexoRepo/hexo
      branch: master
    複製代碼

    注意:上面倉庫地址寫ssh地址,不寫http地址。

    4.4. 推送到GithubPages。在命令行(即Git Bash)依次輸入如下命令, 返回INFO Deploy done: git即成功推送:

    $ hexo g
    $ hexo d
    複製代碼
  5. 等待1分鐘左右,瀏覽器訪問我的域名。

    至此,您的Hexo博客已經搭建在雲服務器, 域名爲我的域名。

主題優化

選擇主題

Hexo默認的主題是landscape,推薦如下主題:

  1. snippet
  2. Hiero
  3. JSimple
  4. BlueLake

應用主題

  1. 下載主題
  2. 將下載好的主題文件夾,粘貼到站點目錄的themes下。
  3. 更改站點配置文件_config.yml 的theme字段,爲主題文件夾的名稱:
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: <主題文件夾的名稱>
複製代碼

主題優化

以上主題都有比較詳細的說明文檔,本節主要解決主題優化的常見問題。

主題優化通常包括:

  • 設置「RSS」

  • 添加「標籤」頁面

  • 添加「分類」頁面

  • 設置「字體」

    問題:引用國外字體鏡像較慢。

    解決:能夠改用國內的。將\themes\*\layout_partials\head external-fonts.swig文件中fonts.google.com改爲fonts.lug.ustc.edu.cn

  • 設置「代碼高亮主題」

  • 側邊欄社交連接

    問題:圖標哪裏找?

    解決:Font Awesome

  • 開啓打賞功能

    問題:微信支付寶二維碼不美觀,規格不一。

    解決:在線生成二維碼

  • 設置友情連接

  • 騰訊公益404頁面

  • 站點創建時間

  • 訂閱微信公衆號

  • 設置「動畫效果」

    問題:慢,須要等待 JavaScript 腳本徹底加載完畢後纔會顯示內容。 解決:將主題配置文件_config.yml中,use_motion字段的值設爲 false 來關閉動畫。

  • 設置「背景動畫」

主題優化還包括:

添加背景圖

在 themes/*/source/css/_custom/custom.styl 中添加以下代碼:

body{
    background:url(/images/bg.jpg);
    background-size:cover;
    background-repeat:no-repeat;
    background-attachment:fixed;
    background-position:center;
}
複製代碼
修改Logo字體

themes/*/source/css/_custom/custom.styl 中添加以下代碼:

@font-face {
    font-family: Zitiming;
    src: url('/fonts/Zitiming.ttf');
}
.site-title {
    font-size: 40px !important;
	font-family: 'Zitiming' !important;
}
複製代碼

其中字體文件在 themes/next/source/fonts 目錄下,裏面有個 .gitkeep 的隱藏文件,打開寫入你要保留的字體文件,好比個人是就是寫入 Zitiming.ttf ,具體字庫本身從網上下載便可。

修改內容區域的寬度

編輯主題的 source/css/_variables/custom.styl 文件,新增變量:

// 修改爲你指望的寬度
$content-desktop = 700px

// 當視窗超過 1600px 後的寬度
$content-desktop-large = 900px
複製代碼
網站標題欄背景顏色
.site-meta {
  background: $blue; //修改成本身喜歡的顏色
}
複製代碼
自定義鼠標樣式

打開 themes/*/source/css/_custom/custom.styl ,在裏面寫下以下代碼:

// 鼠標樣式
  * {
      cursor: url("http://om8u46rmb.bkt.clouddn.com/sword2.ico"),auto!important
  }
  :active {
      cursor: url("http://om8u46rmb.bkt.clouddn.com/sword1.ico"),auto!important
  }
複製代碼
文章加密訪問

打開 themes/*/layout/_partials/head.swig文件,在 {% if theme.pace %} 標籤下的 {% endif %} 以前插入代碼:

<script>
    (function(){
        if('{{ page.password }}'){
            if (prompt('請輸入密碼') !== '{{ page.password }}'){
                alert('密碼錯誤');
                history.back();
            }
        }
    })();
</script>
複製代碼

寫文章時加上password: *

---
title: 2018
date: 2018-10-25 16:10:03
password: 123456
---
複製代碼
實現點擊出現桃心效果
  1. /themes/*/source/js/src下新建文件click.js,接着把如下粘貼到click.js文件中。 代碼以下:
!function(e,t,a){function n(){c(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText="left:"+d[e].x+"px;top:"+d[e].y+"px;opacity:"+d[e].alpha+";transform:scale("+d[e].scale+","+d[e].scale+") rotate(45deg);background:"+d[e].color+";z-index:99999");requestAnimationFrame(r)}function o(){var t="function"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement("div");a.className="heart",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement("style");a.type="text/css";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName("head")[0].appendChild(a)}function s(){return"rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document);

複製代碼
  1. \themes\*\layout\_layout.swig文件末尾添加:
<!-- 頁面點擊小紅心 -->
<script type="text/javascript" src="/js/src/clicklove.js"></script>

複製代碼
靜態資源壓縮

在站點目錄下:

$ npm install gulp -g
複製代碼

安裝gulp插件:

npm install gulp-minify-css --save
npm install gulp-uglify --save
npm install gulp-htmlmin --save
npm install gulp-htmlclean --save
npm install gulp-imagemin --save
複製代碼

Hexo 站點下新建 gulpfile.js文件,文件內容以下:

var gulp = require('gulp');
var minifycss = require('gulp-minify-css');
var uglify = require('gulp-uglify');
var htmlmin = require('gulp-htmlmin');
var htmlclean = require('gulp-htmlclean');
var imagemin = require('gulp-imagemin');
// 壓縮css文件
gulp.task('minify-css', function() {
  return gulp.src('./public/**/*.css')
  .pipe(minifycss())
  .pipe(gulp.dest('./public'));
});
// 壓縮html文件
gulp.task('minify-html', function() {
  return gulp.src('./public/**/*.html')
  .pipe(htmlclean())
  .pipe(htmlmin({
    removeComments: true,
    minifyJS: true,
    minifyCSS: true,
    minifyURLs: true,
  }))
  .pipe(gulp.dest('./public'))
});
// 壓縮js文件
gulp.task('minify-js', function() {
    return gulp.src(['./public/**/.js','!./public/js/**/*min.js'])
        .pipe(uglify())
        .pipe(gulp.dest('./public'));
});
// 壓縮 public/demo 目錄內圖片
gulp.task('minify-images', function() {
    gulp.src('./public/demo/**/*.*')
        .pipe(imagemin({
           optimizationLevel: 5, //類型:Number  默認:3  取值範圍:0-7(優化等級)
           progressive: true, //類型:Boolean 默認:false 無損壓縮jpg圖片
           interlaced: false, //類型:Boolean 默認:false 隔行掃描gif進行渲染
           multipass: false, //類型:Boolean 默認:false 屢次優化svg直到徹底優化
        }))
        .pipe(gulp.dest('./public/uploads'));
});
// 默認任務
gulp.task('default', [
  'minify-html','minify-css','minify-js','minify-images'
]);
複製代碼

只須要每次在執行 generate 命令後執行 gulp 就能夠實現對靜態資源的壓縮,壓縮完成後執行 deploy 命令同步到服務器:

hexo g
gulp
hexo d
複製代碼
修改訪問URL路徑

默認狀況下訪問URL路徑爲:domain/2018/10/18/關於本站,修改成 domain/About/關於本站。 編輯 Hexo 站點下的 _config.yml 文件,修改其中的 permalink字段:

permalink: :category/:title/
複製代碼
博文置頂
  1. 安裝插件

    npm uninstall hexo-generator-index --save npm install hexo-generator-index-pin-top --save

而後在須要置頂的文章的Front-matter中加上top便可:

---
title: 2018
date: 2018-10-25 16:10:03
top: 10
---

複製代碼
  1. 設置置頂標誌

打開:/themes/*/layout/_macro/post.swig,定位到

相關文章
相關標籤/搜索