使用hexo+github搭建免費我的博客詳細教程

[TOC]javascript

本文目錄(注意沒法點擊):html

前言

體驗更加排版請訪問原文連接:http://blog.liuxianan.com/build-blog-website-by-hexo-github.htmljava

使用github pages服務搭建博客的好處有:node

  1. 全是靜態文件,訪問速度快;
  2. 免費方便,不用花一分錢就能夠搭建一個自由的我的博客,不須要服務器不須要後臺;
  3. 能夠隨意綁定本身的域名,不仔細看的話根本看不出來你的網站是基於github的;
  4. 數據絕對安全,基於github的版本管理,想恢復到哪一個歷史版本都行;
  5. 博客內容能夠輕鬆打包、轉移、發佈到其它平臺;
  6. 等等;

1.1. 準備工做

在開始一切以前,你必須已經:python

  • 有一個github帳號,沒有的話去註冊一個;
  • 安裝了node.js、npm,並瞭解相關基礎知識;
  • 安裝了git for windows(或者其它git客戶端)

本文所使用的環境:nginx

搭建github博客

2.1. 建立倉庫

新建一個名爲你的用戶名.github.io的倉庫,好比說,若是你的github用戶名是test,那麼你就新建test.github.io的倉庫(必須是你的用戶名,其它名稱無效),未來你的網站訪問地址就是 http://test.github.io 了,是否是很方便?git

因而可知,每個github帳戶最多隻能建立一個這樣能夠直接使用域名訪問的倉庫。github

幾個注意的地方:web

  1. 註冊的郵箱必定要驗證,不然不會成功;
  2. 倉庫名字必須是:username.github.io,其中username是你的用戶名;
  3. 倉庫建立成功不會當即生效,須要過一段時間,大概10-30分鐘,或者更久,個人等了半個小時才生效;

建立成功後,默認會在你這個倉庫裏生成一些示例頁面,之後你的網站全部代碼都是放在這個倉庫裏啦。sql

2.2. 綁定域名

固然,你不綁定域名確定也是能夠的,就用默認的 xxx.github.io 來訪問,若是你想更個性一點,想擁有一個屬於本身的域名,那也是OK的。

首先你要註冊一個域名,域名註冊之前老是推薦去godaddy,如今以爲其實國內的阿里雲也挺不錯的,價格也不貴,畢竟是大公司,放心!

綁定域名分2種狀況:帶www和不帶www的。

域名配置最多見有2種方式,CNAME和A記錄,CNAME填寫域名,A記錄填寫IP,因爲不帶www方式只能採用A記錄,因此必須先ping一下你的用戶名.github.io的IP,而後到你的域名DNS設置頁,將A記錄指向你ping出來的IP,將CNAME指向你的用戶名.github.io,這樣能夠保證不管是否添加www均可以訪問,以下:

而後到你的github項目根目錄新建一個名爲CNAME的文件(無後綴),裏面填寫你的域名,加不加www看你本身喜愛,由於經測試:

另外說一句,在你綁定了新域名以後,原來的你的用戶名.github.io並無失效,而是會自動跳轉到你的新域名。

配置SSH key

爲何要配置這個呢?由於你提交代碼確定要擁有你的github權限才能夠,可是直接使用用戶名和密碼太不安全了,因此咱們使用ssh key來解決本地和服務器的鏈接問題。

$ cd ~/. ssh #檢查本機已存在的ssh密鑰

若是提示:No such file or directory 說明你是第一次使用git。

ssh-keygen -t rsa -C "郵件地址"

而後連續3次回車,最終會生成一個文件在用戶目錄下,打開用戶目錄,找到.ssh\id_rsa.pub文件,記事本打開並複製裏面的內容,打開你的github主頁,進入我的設置 -> SSH and GPG keys -> New SSH key:

將剛複製的內容粘貼到key那裏,title隨便填,保存。

3.1. 測試是否成功

$ ssh -T git@github.com # 注意郵箱地址不用改

若是提示Are you sure you want to continue connecting (yes/no)?,輸入yes,而後會看到:

Hi liuxianan! You've successfully authenticated, but GitHub does not provide shell access.

看到這個信息說明SSH已配置成功!

此時你還須要配置:

$ git config --global user.name "liuxianan"// 你的github用戶名,非暱稱 $ git config --global user.email "xxx@qq.com"// 填寫你的github註冊郵箱

具體這個配置是幹嗎的我沒仔細深究。

使用hexo寫博客

4.1. hexo簡介

Hexo是一個簡單、快速、強大的基於 Github Pages 的博客發佈工具,支持Markdown格式,有衆多優秀插件和主題。

官網: http://hexo.io
github: https://github.com/hexojs/hexo

4.2. 原理

因爲github pages存放的都是靜態文件,博客存放的不僅是文章內容,還有文章列表、分類、標籤、翻頁等動態內容,假如每次寫完一篇文章都要手動更新博文目錄和相關連接信息,相信誰都會瘋掉,因此hexo所作的就是將這些md文件都放在本地,每次寫完文章後調用寫好的命令來批量完成相關頁面的生成,而後再將有改動的頁面提交到github。

4.3. 注意事項

安裝以前先來講幾個注意事項:

  1. 不少命令既能夠用Windows的cmd來完成,也可使用git bash來完成,可是部分命令會有一些問題,爲避免沒必要要的問題,建議所有使用git bash來執行;
  2. hexo不一樣版本差異比較大,網上不少文章的配置信息都是基於2.x的,因此注意不要被誤導;
  3. hexo有2種_config.yml文件,一個是根目錄下的全局的_config.yml,一個是各個theme下的;

4.4. 安裝

$ npm install -g hexo

4.5. 初始化

在電腦的某個地方新建一個名爲hexo的文件夾(名字能夠隨便取),好比個人是F:\Workspaces\hexo,因爲這個文件夾未來就做爲你存放代碼的地方,因此最好不要隨便放。

$ cd /f/Workspaces/hexo/ $ hexo init

hexo會自動下載一些文件到這個目錄,包括node_modules,目錄結構以下圖:

$ hexo g # 生成 $ hexo s # 啓動服務

執行以上命令以後,hexo就會在public文件夾生成相關html文件,這些文件未來都是要提交到github去的:

hexo s是開啓本地預覽服務,打開瀏覽器訪問 http://localhost:4000 便可看到內容,不少人會碰到瀏覽器一直在轉圈可是就是加載不出來的問題,通常狀況下是由於端口占用的緣故,由於4000這個端口太常見了,解決端口衝突問題請參考這篇文章:

http://blog.liuxianan.com/windows-port-bind.html

第一次初始化的時候hexo已經幫咱們寫了一篇名爲 Hello World 的文章,默認的主題比較醜,打開時就是這個樣子:

4.6. 修改主題

既然默認主題很醜,那咱們別的不作,首先來替換一個好看點的主題。這是 官方主題

我的比較喜歡的2個主題:hexo-theme-jekyll 和 hexo-theme-yilia

首先下載這個主題:

$ cd /f/Workspaces/hexo/ $ git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia

下載後的主題都在這裏:

修改_config.yml中的theme: landscape改成theme: yilia,而後從新執行hexo g來從新生成。

若是出現一些莫名其妙的問題,能夠先執行hexo clean來清理一下public的內容,而後再來從新生成和發佈。

4.7. 上傳以前

在上傳代碼到github以前,必定要記得先把你之前全部代碼下載下來(雖然github有版本管理,但備份一下老是好的),由於從hexo提交代碼時會把你之前的全部代碼都刪掉。

4.8. 上傳到github

若是你一切都配置好了,發佈上傳很容易,一句hexo d就搞定,固然關鍵仍是你要把全部東西配置好。

首先,ssh key確定要配置好。

其次,配置_config.yml中有關deploy的部分:

正確寫法:

deploy:  type: git  repository: git@github.com:liuxianan/liuxianan.github.io.git  branch: master

錯誤寫法:

deploy:  type: github  repository: https://github.com/liuxianan/liuxianan.github.io.git  branch: master

後面一種寫法是hexo2.x的寫法,如今已經不行了,不管是哪一種寫法,此時直接執行hexo d的話通常會報以下錯誤:

Deployer not found: github 或者 Deployer not found: git

緣由是還須要安裝一個插件:

npm install hexo-deployer-git --save

其它命令不肯定,部署這個命令必定要用git bash,不然會提示Permission denied (publickey).

打開你的git bash,輸入hexo d就會將本次有改動的代碼所有提交,沒有改動的不會:

4.9. 保留CNAME、README.md等文件

提交以後網頁上一看,發現之前其它代碼都沒了,此時不要慌,一些非md文件能夠把他們放到source文件夾下,這裏的全部文件都會原樣複製(除了md文件)到public目錄的:

因爲hexo默認會把全部md文件都轉換成html,包括README.md,全部須要每次生成以後、上傳以前,手動將README.md複製到public目錄,並刪除README.html。

4.10. 經常使用hexo命令

常見命令

hexo new "postName" #新建文章 hexo new page "pageName" #新建頁面 hexo generate #生成靜態頁面至public目錄 hexo server #開啓預覽訪問端口(默認端口4000,'ctrl + c'關閉server) hexo deploy #部署到GitHub hexo help # 查看幫助 hexo version #查看Hexo的版本

縮寫:

hexo n == hexo new hexo g == hexo generate hexo s == hexo server hexo d == hexo deploy

組合命令:

hexo s -g #生成並本地預覽 hexo d -g #生成並上傳

4.11. _config.yml

這裏面都是一些全局配置,每一個參數的意思都比較簡單明瞭,因此就不做詳細介紹了。

須要特別注意的地方是,冒號後面必須有一個空格,不然可能會出問題。

4.12. 寫博客

定位到咱們的hexo根目錄,執行命令:

hexo new 'my-first-blog'

hexo會幫咱們在_posts下生成相關md文件:

咱們只須要打開這個文件就能夠開始寫博客了,默認生成以下內容:

固然你也能夠直接本身新建md文件,用這個命令的好處是幫咱們自動生成了時間。

通常完整格式以下:

---
title: postName #文章頁面上的顯示名稱,通常是中文
date: 2013-12-02 15:30:16 #文章生成時間,通常不改,固然也能夠任意修改
categories: 默認分類 #分類
tags: [tag1,tag2,tag3] #文章標籤,可空,多標籤請用格式,注意:後面有個空格
description: 附加一段文章摘要,字數最好在140字之內,會出如今meta的description裏面 --- 如下是正文

那麼hexo new page 'postName'命令和hexo new 'postName'有什麼區別呢?

hexo new page "my-second-blog"

生成以下:

最終部署時生成:hexo\public\my-second-blog\index.html,可是它不會做爲文章出如今博文目錄。

4.12.1. 寫博客工具

那麼用什麼工具寫博客呢?這個我還沒去找,之前本身使用editor.md簡單弄了個,你們有好用的hexo寫博客工具能夠推薦個。

4.12.2. 如何讓博文列表不顯示所有內容

默認狀況下,生成的博文目錄會顯示所有的文章內容,如何設置文章摘要的長度呢?

答案是在合適的位置加上<!--more-->便可,例如:

# 前言 使用github pages服務搭建博客的好處有: 1. 全是靜態文件,訪問速度快; 2. 免費方便,不用花一分錢就能夠搭建一個自由的我的博客,不須要服務器不須要後臺; 3. 能夠隨意綁定本身的域名,不仔細看的話根本看不出來你的網站是基於github的; <!--more--> 4. 數據絕對安全,基於github的版本管理,想恢復到哪一個歷史版本都行; 5. 博客內容能夠輕鬆打包、轉移、發佈到其它平臺; 6. 等等;

最終效果:

相關文章
相關標籤/搜索