摘要:這是一篇很詳盡的獨(dú)立博客搭建教程,里面介紹了域名注冊、DNS設(shè)置、github和Hexo設(shè)置等過程,這是我寫得最長的一篇教程。我想將我搭建獨(dú)立博客的過程在一篇文章中盡可能詳細(xì)地寫出來,希望能給后來者一個(gè)明確的指引,同時(shí)用這篇教程開篇,正式開始我的第八大洲之旅。
前言
作為一個(gè)技術(shù)小白,沒有技術(shù)基礎(chǔ),看網(wǎng)上的教程也云里霧里,看程序員的教程相當(dāng)不容易,稍微有些細(xì)節(jié)描述得不清楚自己就要繞彎路去找答案(善用搜索引擎),所以,在自己的博客搭建完成之后,我決定要將我搭建博客的過程全記錄下來,以供后期和我一樣的小白參考(是的,我堅(jiān)信還有很多一樣和我一樣的人),我會(huì)盡可能詳細(xì)的整理這個(gè)教程,其中的資料可能會(huì)摘錄到其他人的教程,我會(huì)在后面列出了參考資料,感謝這些作者們。
為什么要開博客?可以看看我的這篇《為什么你要寫博客?》
也可以看看這篇《我的博客時(shí)代》
以下以我的博客:www.cnfeat.com為例,教大家如何搭建一個(gè)獨(dú)立博客。
為什么要搭建一個(gè)獨(dú)立博客?
獨(dú)立的才是自己的。
小白進(jìn)入門檻
1、非常折騰,需要耐心;
2、也需要一定的學(xué)習(xí)能力和鉆研精神;
3、懂一些網(wǎng)頁基礎(chǔ)知識(shí),不懂也重要,參看第二和第三條;
小白白請看
2014年5月15日更新:發(fā)現(xiàn)一個(gè)更簡單的方法:用靜態(tài)頁面生成靜態(tài)博客byisnowfy
按此教程操作即可。
為什么選擇GitHub Pages?
很多人用wordpress,你為什么要用github pages來搭建?
1、github pages有300M免費(fèi)空間,資料自己管理,保存可靠;
2、學(xué)著用github,享受github的便利,上面有很多大牛,眼界會(huì)開闊很多;
3、順便看看github工作原理,最好的團(tuán)隊(duì)協(xié)作流程;
4、github是趨勢;
5、你不覺得一個(gè)文科生用github很geek嗎?瞬間躋身技術(shù)界;
6、就算github被墻了,我可以搬到國內(nèi)的gitcafe中去。

GitHub Pages是什么?
GitHub Pages本用于介紹托管在GitHub的項(xiàng)目, 不過,由于他的空間免費(fèi)穩(wěn)定,用來做搭建一個(gè)博客再好不過了。
github Pages可以被認(rèn)為是用戶編寫的、托管在github上的靜態(tài)網(wǎng)頁。

購買域名
只推薦上godaddy購買,安全,而且可以使用支付寶。
教程(截止至2014年5月10日)如下
1、查你想要的域名;

2、查到適合的域名之后選擇「continue to Cart」;

3、godaddy附加收費(fèi)服務(wù),不要管,繼續(xù)「continue to Cart」;

4、確認(rèn)購買。修改購買年限,默認(rèn)是兩年,可以修改成1/2/3/5/10年,隨自己喜歡。現(xiàn)在godaddy上com每年的默認(rèn)費(fèi)用是12.99美元,附加上ICANN的管理費(fèi)用就是13.17美元。

如果你不是土豪,可以上網(wǎng)搜godaddy的優(yōu)惠碼,一大堆,找一個(gè)填進(jìn)這里,填完之后,一年的費(fèi)用會(huì)變成8.99美元。

說明一下:一般來講,使用網(wǎng)上的優(yōu)惠碼第一年收費(fèi)8.99美元,以后每年的收費(fèi)是10.99美元,不過在網(wǎng)上可以搜到合適的優(yōu)惠碼,可以每年的收費(fèi)都是8.99美元,記得多測試自行鑒別。
如圖,我買了五年的費(fèi)用就是45.85美元,隨后點(diǎn)擊「Proceed to Checkout」

5、結(jié)算。登錄或注冊界面,填完必要的信息之后,選擇用支付寶結(jié)算。

如果以上的教程如果不夠清晰,可以參照這一份《2013年10月新版godaddy域名注冊圖文教程》。
6、檢查。結(jié)算后,重新登錄,去「My Account」,域名已經(jīng)顯示在你的賬戶了。

7、補(bǔ)充一些注意事項(xiàng):
輸入優(yōu)惠碼沒有優(yōu)惠或者優(yōu)惠幅度較低,請清除瀏覽器cookies再嘗試;
如果沒有支付寶支付選項(xiàng),有可能是使用的優(yōu)惠碼不支持支付寶,請重新清除瀏覽器cookies再嘗試;
注冊時(shí)用戶填寫信息時(shí)一定要輸入正確的郵箱名字,否則修改十分麻煩。
買完域名之后一定要記得去自己的郵箱查看激活郵件,否則域名激活不了。
安裝準(zhǔn)備軟件
依次下載安裝。
1、Node.js
2、Git
怎么打開Git?
1、開始菜單Git Bash。

2、鼠標(biāo)右鍵打開Git Bash。

注冊GitHub
注冊你的username和郵箱,郵箱十分重要,GitHub上很多通知都是通過郵箱的。
注冊過程比較簡單,詳細(xì)也可以看:
一步步在GitHub上創(chuàng)建博客主頁 全系列by pchou(推薦)
配置和使用Github
以下教程主要參考beiyuu的《使用Github Pages建獨(dú)立博客》寫成。
配置SSH keys
我們?nèi)绾巫尡镜豨it項(xiàng)目與遠(yuǎn)程的github建立聯(lián)系呢?用SSH keys。
檢查SSH keys的設(shè)置
首先我們需要檢查你電腦上現(xiàn)有的ssh key:
$cd~/. ssh 檢查本機(jī)的ssh密鑰
如果提示:No such file or directory 說明你是第一次使用git。
生成新的SSH Key:
$ssh-keygen -t rsa -C"郵件地址@youremail.com"Generatingpublic/private rsa key pair.Enterfileinwhich to save the key (/Users/your_user_directory/.ssh/id_rsa):<回車就好>
注意1: 此處的郵箱地址,你可以輸入自己的郵箱地址;注意2: 此處的「-C」的是大寫的「C」
然后系統(tǒng)會(huì)要你輸入密碼:
Enter passphrase (empty for no passphrase):<輸入加密串>Enter same passphrase again:<再次輸入加密串>
在回車中會(huì)提示你輸入一個(gè)密碼,這個(gè)密碼會(huì)在你提交項(xiàng)目時(shí)使用,如果為空的話提交項(xiàng)目時(shí)則不用輸入。這個(gè)設(shè)置是防止別人往你的項(xiàng)目里提交內(nèi)容。
注意:輸入密碼的時(shí)候沒有*字樣的,你直接輸入就可以了。
最后看到這樣的界面,就成功設(shè)置ssh key了:

添加SSH Key到GitHub
在本機(jī)設(shè)置SSH Key之后,需要添加到GitHub上,以完成SSH鏈接的設(shè)置。
1、打開本地C:\Documents and Settings\Administrator.ssh\id_rsa.pub文件。此文件里面內(nèi)容為剛才生成人密鑰。如果看不到這個(gè)文件,你需要設(shè)置顯示隱藏文件。準(zhǔn)確的復(fù)制這個(gè)文件的內(nèi)容,才能保證設(shè)置的成功。
2、登陸github系統(tǒng)。點(diǎn)擊右上角的 Account Settings--->SSH Public keys ---> add another public keys
3、把你本地生成的密鑰復(fù)制到里面(key文本框中), 點(diǎn)擊 add key 就ok了

測試
可以輸入下面的命令,看看設(shè)置是否成功,git@github.com的部分不要修改:
$ssh -Tgit@github.com
如果是下面的反饋:
Theauthenticity of host'github.com (207.97.227.239)' can'tbe established.RSAkey fingerprint is16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.Areyou sure you want tocontinueconnecting (yes/no)?
不要緊張,輸入yes就好,然后會(huì)看到:
Hicnfeat!You'vesuccessfully authenticated, butGitHubdoes not provide shell access.
設(shè)置用戶信息
現(xiàn)在你已經(jīng)可以通過SSH鏈接到GitHub了,還有一些個(gè)人信息需要完善的。
Git會(huì)根據(jù)用戶的名字和郵箱來記錄提交。GitHub也是用這些信息來做權(quán)限的處理,輸入下面的代碼進(jìn)行個(gè)人信息的設(shè)置,把名稱和郵箱替換成你自己的,名字必須是你的真名,而不是GitHub的昵稱。
$ git config --globaluser.name"cnfeat"http://用戶名$ git config --globaluser.email"cnfeat@gmail.com"http://填寫自己的郵箱
SSH Key配置成功
本機(jī)已成功連接到github。
若有問題,請重新設(shè)置。常見錯(cuò)誤請參考:
GitHub Help - Generating SSH Keys
GitHub Help - Error Permission denied (publickey)
使用GitHub Pages建立博客
與GitHub建立好鏈接之后,就可以方便的使用它提供的Pages服務(wù),GitHub Pages分兩種,一種是你的GitHub用戶名建立的username.github.io這樣的用戶&組織頁(站),另一種是依附項(xiàng)目的pages。
想建立個(gè)人博客是用的第一種,形如cnfeat.github.io這樣的可訪問的站,每個(gè)用戶名下面只能建立一個(gè)。
github上建立倉庫
登錄后系統(tǒng),在github首頁,點(diǎn)擊頁面右下角「New Repository」

填寫項(xiàng)目信息:
project name:cnfeat.github.io
description:Writing 1000 Words a Day Changed My Life
注:Github Pages的Repository名字是特定的,比如我Github賬號(hào)是cnfeat,那么我Github Pages Repository名字就是cnfeat.github.io。

點(diǎn)擊「Create Repository」 完成創(chuàng)建。
詳細(xì)可以看這里:一步步在GitHub上創(chuàng)建博客主頁(2)
用Hexo克隆主題
Hexo介紹
Hexo的作者是tommy351,根據(jù)官方介紹,Hexo是一個(gè)簡單、快速、強(qiáng)大的博客發(fā)布工具,支持Markdown格式。
安裝Hexo
打開git。
$ npminstall-ghexo
部署Hexo
在我的電腦中建立一個(gè)名字叫「Hexo」的文件夾,然后在此文件夾中右鍵打開Git Bash。
$ hexoinit
Hexo隨后會(huì)自動(dòng)在目標(biāo)文件夾建立網(wǎng)站所需要的所有文件。
現(xiàn)在我們已經(jīng)搭建起本地的hexo博客了,執(zhí)行以下命令(在H:\hexo),然后到瀏覽器輸入localhost:4000看看。
$hexo g$hexo s
復(fù)制cnfeat的主題
以下進(jìn)入復(fù)制主題環(huán)節(jié),如果那一步出現(xiàn)問題,或者修改后沒有顯示修改的結(jié)果,建議來來一個(gè),再看看,可以解決很多問題。
$hexo clean$hexo g$hexo s
建立了Hexo文件之后就可以復(fù)制我的主題了
$git clonehttps://github.com/cnfeat/cnfeat.git themes/jacman
如果不行,可以復(fù)制wuchong的修改的主題,我的就是復(fù)制他的修改的。
$git clonehttps://github.com/wuchong/jacman.git themes/jacman
或者復(fù)制yangjian的
$ gitclonehttps://github.com/A-limon/pacman.git themes/pacman
啟用cnfeat的主題
修改Hexo目錄下的config.yml配置文件中的theme屬性,將其設(shè)置為jacman。同時(shí)請?jiān)O(shè)置stylus屬性中的compress值為true。
theme:jacman
注意:Hexo有兩個(gè)config.yml文件,一個(gè)在根目錄,一個(gè)在theme下,此時(shí)修改的是在根目錄下的。
更新主題
$cd themes/jacman$git pull
注意:為避免出錯(cuò),請先備份你的_config.yml 文件后再升級
本地查看調(diào)試
$hexo g#生成$hexo s#啟動(dòng)本地服務(wù),進(jìn)行文章預(yù)覽調(diào)試
或者直接作用組合命令
$hexo d -g
瀏覽器輸入http://localhost:4000,查看搭建效果。此后的每次變更_config.yml文件或者上傳文件都可以先用此命令調(diào)試,非常好用,尤其是當(dāng)你想調(diào)試出自己想要的主題時(shí)。
將獨(dú)立域名與GitHub Pages的空間綁定
GitHub Pages的設(shè)置
方法一:在Repository的根目錄下面,新建一個(gè)名為CNAME的文本文件,里面寫入你要綁定的域名,比如cnfeat.com。
方法二:到我的github倉庫,點(diǎn)擊右下角的「Download ZIP」,下載源文件,解壓,找到CNAME文件,用記事本打開,將cnfeat.com修改成你的域名,放進(jìn)Hexo\source目錄下,用hexo命令提交上去。
$hexo d -g
DNS設(shè)置
用DNSpod,快,免費(fèi),穩(wěn)定。
注冊DNSpod,添加域名,如下圖設(shè)置。

其中A的兩條記錄指向的ip地址是github Pages的提供的ip
192.30.252.153
192.30.252.154
如博客不能登錄,有可能是github更改了空間服務(wù)的ip地址,記得及時(shí)到在GitHub Pages查看最新的ip即可
www指定的記錄是你在github注冊的倉庫。
去Godaddy修改DNS地址
更改godaddy的Nameservers為DNSpod的NameServers。

1、點(diǎn)擊「My Account」,管理我的域名。

2、點(diǎn)擊域名。

3、將godaddy的Nameservers更改成f1g1ns1.dnspod.net和f1g1ns2.dnspod.net

如有不詳看可以看DNSpod提供的官方幫助
詳細(xì)也可以看這里:一步步在GitHub上創(chuàng)建博客主頁(3)
搭建完成
至此,獨(dú)立博客就算搭建完成,如需進(jìn)步一完善請?jiān)趨⒖匆韵挛恼禄虿┛拖铝粞浴?/p>
Pacman主題介紹by yangjian
使用hexo搭建博客by yangjian
hexo系列教程:(二)搭建hexo博客by zippera(推薦)
hexo系列教程:(三)hexo博客的配置、使用by zippera(推薦)
進(jìn)階篇:Hexo設(shè)置
網(wǎng)站搭建完成后,就可以根據(jù)自己愛好來對Hexo生成的網(wǎng)站進(jìn)行設(shè)置了,對整站的設(shè)置,只要修改項(xiàng)目目錄的_config.yml就可以了,這是我的設(shè)置,可供參考。
# Hexo Configuration## Docs: http://hexo.io/docs/configuration.html## Source: https://github.com/tommy351/hexo/# Site #整站的基本信息title:1000words a Day#網(wǎng)站標(biāo)題subtitle: Writing1000Words a Day Changes My Life#網(wǎng)站副標(biāo)題description: 學(xué)習(xí)總結(jié) 思考感悟 知識(shí)管理#網(wǎng)站描述author:? cnFeat#網(wǎng)站作者,在下方顯示email: cnFeat@gmail.com#聯(lián)系郵箱language: zh-CN# URL## If your site is put in a subdirectoryurl: http://www.cnfeat.com #你的域名root: /permalink: :year/:month/:day/:title/tag_dir: tagsarchive_dir: archivescategory_dir: categoriescode_dir: downloads/code# Directorysource_dir: sourcepublic_dir:public# Writingnew_post_name: :title.md# File name of new postsdefault_layout: postauto_spacing:false# Add spaces between asian characters and western characterstitlecase:false# Transform title into titlecaseexternal_link:true# Open external links in new tabmax_open_file:100multi_thread:truefilename_case:0render_drafts:falsepost_asset_folder:falsehighlight:? enable:trueline_number:truetab_replace:# Category & Tagdefault_category: uncategorizedcategory_map:tag_map:# Archives##2: Enable pagination##1: Disable pagination##0: Fully Disablearchive:2category:2tag:2# Server## Hexo uses Connect as a server## You can customize the logger format as defined in## http://www.senchalabs.org/connect/logger.htmlport:4000server_ip:0.0.0.0logger:falselogger_format:# Date / Time format## Hexo uses Moment.js to parse and display date## You can customize the date format as defined in## http://momentjs.com/docs/#/displaying/format/date_format: YYYY-MM-DDtime_format: H:mm:ss# Pagination## Set per_page to0to disable paginationper_page:15#每頁15篇文章pagination_dir: page# Disqus #社會(huì)化評論disqus,我使用多說,在主題中配置disqus_shortname:# Extensions## Plugins: https://github.com/tommy351/hexo/wiki/Plugins## Themes: https://github.com/tommy351/hexo/wiki/Themestheme: jacmanexclude_generator:Plugins:- hexo-generator-feed- hexo-generator-sitemap#sitemapsitemap:? path: sitemap.xml#Feed Atomfeed:? type: atom? path: atom.xml? limit:20# Markdown## https://github.com/chjj/markedmarkdown:? gfm:truepedantic:falsesanitize:falsetables:truebreaks:truesmartLists:truesmartypants:true# Stylusstylus:? compress:false# Deployment## Docs: http://hexo.io/docs/deployment.htmldeploy:? type: github? repository: https://github.com/cnfeat/cnfeat.github.io.gitbranch: master
修改局部頁面
頁面展現(xiàn)的全部邏輯都在每個(gè)主題中控制,源代碼在hexo\themes\jacman\中:
.├── languages#多語言|? ├──default.yml#默認(rèn)語言|? └── zh-CN.yml#中文語言├── layout#布局,根目錄下的*.ejs文件是對主頁,分頁,存檔等的控制|? ├── _partial#局部的布局,此目錄下的*.ejs是對頭尾等局部的控制|? └── _widget#小掛件的布局,頁面下方小掛件的控制├── source#源碼|? ├── css#css源碼|? |? ├── _base#*.styl基礎(chǔ)css|? |? ├── _partial#*.styl局部css|? |? ├── fonts#字體|? |? ├── images#圖片|? |? └── style.styl#*.styl引入需要的css源碼|? ├── fancybox#fancybox效果源碼|? └── js#javascript源代碼├── _config.yml#主題配置文件└── README.md#用GitHub的都知道
發(fā)表新文章
用hexo發(fā)表新文章
$hexo n#寫文章
其中my new post為文章標(biāo)題,執(zhí)行命令后,會(huì)在項(xiàng)目\source_posts中生成my new post.md文件,用編輯器打開編寫即可。
當(dāng)然,也可以直接在\source_posts中新建一個(gè)md文件,我就是這么做的。
寫完后,推送到服務(wù)器上,執(zhí)行
$hexo g#生成$hexo d#部署 # 可與hexo g合并為 hexo d -g
用Hexo發(fā)表文章的Markdown語法
使用jacman或pacman主題,建議按此標(biāo)準(zhǔn)語法寫:
title: postName#文章頁面上的顯示名稱,可以任意修改,不會(huì)出現(xiàn)在URL中date:2013-12-0215:30:16#文章生成時(shí)間,一般不改,當(dāng)然也可以任意修改categories: example#分類tags: [tag1,tag2,tag3]#文章標(biāo)簽,可空,多標(biāo)簽請用格式,注意:后面有個(gè)空格description: 附加一段文章摘要,字?jǐn)?shù)最好在140字以內(nèi)。---以下正文
為什么我的博客有目錄?
我用的是Markdown語法,Markdown語法怎么用?
請看這里:獻(xiàn)給寫作者的 Markdown 新手指南
或者看這里:Markdown
Hexo命令
常用命令:
hexonew"postName"#新建文章hexonewpage"pageName"#新建頁面hexo generate#生成靜態(tài)頁面至public目錄hexo server#開啟預(yù)覽訪問端口(默認(rèn)端口4000,'ctrl + c'關(guān)閉server)hexo deploy#將.deploy目錄部署到GitHub
常用復(fù)合命令:
hexo d -g#生成加部署hexo s -g#預(yù)覽加部署
簡寫:
hexo n == hexonewhexo g == hexo generatehexo s == hexo serverhexo d == hexo deploy
安裝插件
添加sitemap和feed插件
$ npminstallhexo-generator-sitemap$ npminstallhexo-generator-feed
修改_config.yml,增加以下內(nèi)容
# ExtensionsPlugins:- hexo-generator-feed- hexo-generator-sitemap#Feed Atomfeed:type: atom? path: atom.xmllimit:20#sitemapsitemap:? path: sitemap.xml
Hexo上傳README文件
Github的版本庫通常建議同時(shí)附上README.md說明文件,但是hexo默認(rèn)情況下會(huì)把所有md文件解析成html文件,所以即使你在線生成了README.md,它也會(huì)在你下一次部署時(shí)被刪去。怎么解決呢?
在執(zhí)行hexo deploy前把在本地寫好的README.md文件復(fù)制到.deploy文件夾中,再去執(zhí)行hexo deploy。
404頁面
GitHub Pages有提供制作404頁面的指引:Custom 404 Pages。
直接在根目錄下創(chuàng)建自己的404.html或者404.md就可以。但是自定義404頁面僅對綁定頂級域名的項(xiàng)目才起作用,GitHub默認(rèn)分配的二級域名是不起作用的,使用hexo server在本機(jī)調(diào)試也是不起作用的。
推薦使用騰訊公益404。
圖床
推薦使用七牛(10G空間,免費(fèi)),還可以使用Yupoo(100m免費(fèi)空間)
參考資料:
[1]一步步在GitHub上創(chuàng)建博客主頁 全系列by pchou(推薦)
[2]網(wǎng)站優(yōu)化:一步步在GitHub上創(chuàng)建博客主頁(6)by pchou (推薦)
[3]搭建一個(gè)免費(fèi)的,無限流量的Blog----github Pages和Jekyll入門by 阮一峰(推薦)
[4]hexo系列教程:(二)搭建hexo博客by zippera(推薦)
[5]hexo系列教程:(三)hexo博客的配置、使用by zippera(推薦)
[6]hexo系列教程:(四)hexo博客的優(yōu)化技巧by zippera(推薦)
[7]hexo你的博客by ibruce(推薦)
[8]Pacman主題介紹by yangjian(推薦)
[9]使用hexo搭建博客by yangjian(推薦)
[10]折騰了個(gè)Pacman主題by wuchong(推薦)
[11]hexo官方寫作教程「Writing」
[12]知乎上的教程:如何搭建個(gè)人獨(dú)立博客?
[13]在GitHub Pages設(shè)置獨(dú)立域名的官方教程:[Setting up a custom domain with GitHub Pages]
[14]使用Github Pages建獨(dú)立博客by beiyuu
[15]git/github初級運(yùn)用自如by 蟲師
[16]hexo搭建靜態(tài)博客以及優(yōu)化by Joanna Wu
[17]使用Hexo搭建個(gè)人博客by c4fun
[18]Github Pages與Hexo建個(gè)人博客流程by Kesco
[19]Git push時(shí)重復(fù)輸入用戶名密碼的問題by zippera
[20]hexo文件結(jié)構(gòu)及網(wǎng)站優(yōu)化by kevin chen
相關(guān)鏈接
[2]godaddy域名商
[3]DNSPOD
[4]Hexo官方主頁
[5]GotGitHub:GitHub介紹(推薦)
[5]圖標(biāo)制作網(wǎng)站:faviconer
[6]本地測試頁localhost:4000