[TOC]javascript
本文目錄(注意沒法點擊):html
體驗更加排版請訪問原文連接:http://blog.liuxianan.com/build-blog-website-by-hexo-github.htmljava
使用github pages服務搭建博客的好處有:node
在開始一切以前,你必須已經:python
本文所使用的環境:nginx
新建一個名爲你的用戶名.github.io
的倉庫,好比說,若是你的github用戶名是test,那麼你就新建test.github.io
的倉庫(必須是你的用戶名,其它名稱無效),未來你的網站訪問地址就是 http://test.github.io 了,是否是很方便?git
因而可知,每個github帳戶最多隻能建立一個這樣能夠直接使用域名訪問的倉庫。github
幾個注意的地方:web
username.github.io
,其中username
是你的用戶名;建立成功後,默認會在你這個倉庫裏生成一些示例頁面,之後你的網站全部代碼都是放在這個倉庫裏啦。sql
固然,你不綁定域名確定也是能夠的,就用默認的 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
並無失效,而是會自動跳轉到你的新域名。
爲何要配置這個呢?由於你提交代碼確定要擁有你的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隨便填,保存。
$ 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是一個簡單、快速、強大的基於 Github Pages 的博客發佈工具,支持Markdown格式,有衆多優秀插件和主題。
官網: http://hexo.io
github: https://github.com/hexojs/hexo
因爲github pages存放的都是靜態文件,博客存放的不僅是文章內容,還有文章列表、分類、標籤、翻頁等動態內容,假如每次寫完一篇文章都要手動更新博文目錄和相關連接信息,相信誰都會瘋掉,因此hexo所作的就是將這些md文件都放在本地,每次寫完文章後調用寫好的命令來批量完成相關頁面的生成,而後再將有改動的頁面提交到github。
安裝以前先來講幾個注意事項:
_config.yml
文件,一個是根目錄下的全局的_config.yml
,一個是各個theme
下的;$ npm install -g hexo
在電腦的某個地方新建一個名爲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 的文章,默認的主題比較醜,打開時就是這個樣子:
既然默認主題很醜,那咱們別的不作,首先來替換一個好看點的主題。這是 官方主題。
我的比較喜歡的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的內容,而後再來從新生成和發佈。
在上傳代碼到github以前,必定要記得先把你之前全部代碼下載下來(雖然github有版本管理,但備份一下老是好的),由於從hexo提交代碼時會把你之前的全部代碼都刪掉。
若是你一切都配置好了,發佈上傳很容易,一句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
就會將本次有改動的代碼所有提交,沒有改動的不會:
提交以後網頁上一看,發現之前其它代碼都沒了,此時不要慌,一些非md文件能夠把他們放到source文件夾下,這裏的全部文件都會原樣複製(除了md文件)到public目錄的:
因爲hexo默認會把全部md文件都轉換成html,包括README.md,全部須要每次生成以後、上傳以前,手動將README.md複製到public目錄,並刪除README.html。
常見命令
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 #生成並上傳
這裏面都是一些全局配置,每一個參數的意思都比較簡單明瞭,因此就不做詳細介紹了。
須要特別注意的地方是,冒號後面必須有一個空格,不然可能會出問題。
定位到咱們的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
,可是它不會做爲文章出如今博文目錄。
那麼用什麼工具寫博客呢?這個我還沒去找,之前本身使用editor.md簡單弄了個,你們有好用的hexo寫博客工具能夠推薦個。
默認狀況下,生成的博文目錄會顯示所有的文章內容,如何設置文章摘要的長度呢?
答案是在合適的位置加上<!--more-->
便可,例如:
# 前言 使用github pages服務搭建博客的好處有: 1. 全是靜態文件,訪問速度快; 2. 免費方便,不用花一分錢就能夠搭建一個自由的我的博客,不須要服務器不須要後臺; 3. 能夠隨意綁定本身的域名,不仔細看的話根本看不出來你的網站是基於github的; <!--more--> 4. 數據絕對安全,基於github的版本管理,想恢復到哪一個歷史版本都行; 5. 博客內容能夠輕鬆打包、轉移、發佈到其它平臺; 6. 等等;
最終效果: