今天用Github Pages
和 Hexo
來搭建了一個靜態(tài)的博客裆装。好處就是不需要數(shù)據(jù)庫也不需要服務(wù)器,完全交由Github
托管就可以擁有自己的博客潦闲。下面我記錄了一下我自己的搭建的過程攒菠。
Contex
- linux Cenos 6.5,64位
- Hexo 3.7.1
Github
因為所有的內(nèi)容都是Github
托管的,所以你首先要有一個Github
賬號歉闰。然后在創(chuàng)建一個Repository
,這個Repository
必須要滿足一個規(guī)則才能生成Pages
.詳細(xì)內(nèi)容可以查閱官方文檔 Github Pages
簡單來說就是創(chuàng)建一個名字為 username.github.io
的庫辖众,其中username
為你自己的Github
的用戶名。
創(chuàng)建成功之后和敬,把項目clone到本地凹炸。我機(jī)器本身還沒有Git
所以我先安裝Git
yum info git
yum install -y git
然后我還需要添加這臺機(jī)器對github的ssh權(quán)限,這樣才能訪問github昼弟。
#生成key
ssh-keygen -t rsa -C "xxxx@gmail.com"
cd .ssh/
cat id_rsa.pub
# 得到這個key后把它添加進(jìn)你的github key里面
完成之后我們把剛才創(chuàng)建的Repository
拷貝到本地啤它。
git clone git@github.com:username/username.github.io.git
拷貝下來之后,我們在里面寫一個我們的首頁,并提交到我們的Repository
cd kingty.github.io
echo "Hello World" > index.html
git add --all
git commit -m "Initial commit"
git push -u origin master
到這里舱痘,你到瀏覽器輸入username.github.io
應(yīng)該就可以訪問到你剛才的html頁面变骡。其實到這里就相當(dāng)于你的博客已經(jīng)搭建完成了。但是芭逝,我們自己去寫靜態(tài)頁面肯定是一個繁重的工作塌碌。因此我們就有了下面要介紹使用的工具Hexo
Hexo
安裝
Hexo
是一個快速、簡潔且高效的博客框架铝耻。Hexo
使用 Markdown
(或其他渲染引擎)解析文章誊爹,在幾秒內(nèi),即可利用靚麗的主題生成靜態(tài)網(wǎng)頁瓢捉。并且可以幫助我們直接部署到github.io
也就是你上面創(chuàng)建的Repository
上面???這樣我們就可以只需要寫Markdown
文件就完成了博客部署频丘。
Hexo
是有node
構(gòu)造所以我需要先在機(jī)器上安裝node
.
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-remi
yum -y install nodejs npm --enablerepo=epel
安裝好node
之后我們就可以用npm
安裝hexo
了
npm install -g hexo
在安裝hexo
的時候可能會遇到問題:
npm ERR! Error: CERT_UNTRUSTED
npm ERR! at SecurePair.<anonymous> (tls.js:1430:32)
npm ERR! at SecurePair.emit (events.js:92:17)
npm ERR! at SecurePair.maybeInitFinished (tls.js:1029:10)
npm ERR! at CleartextStream.read [as _read] (tls.js:521:13)
npm ERR! at CleartextStream.Readable.read (_stream_readable.js:341:10)
npm ERR! at EncryptedStream.write [as _write] (tls.js:418:25)
npm ERR! at doWrite (_stream_writable.js:226:10)
npm ERR! at writeOrBuffer (_stream_writable.js:216:5)
npm ERR! at EncryptedStream.Writable.write (_stream_writable.js:183:11)
npm ERR! at write (_stream_readable.js:602:24)
npm ERR! If you need help, you may report this log at:
npm ERR! <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR! <npm-@googlegroups.com>
npm ERR! System Linux 2.6.32-696.18.7.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install" "-g" "hexo"
npm ERR! cwd /root/github/kingty.github.io
npm ERR! node -v v0.10.48
npm ERR! npm -v 1.3.6
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /root/github/kingty.github.io/npm-debug.log
npm ERR! not ok code 0
這是因為npm用https導(dǎo)致的,解決辦法是:
npm config set strict-ssl false
然后應(yīng)該就可以正常安裝好了泡态。完成之后我們需要初始化Hexo
,首先你還是要在剛才的username.github.io
這個目錄下搂漠,你現(xiàn)在應(yīng)該在master分支,這時候你需要創(chuàng)建另外一個分支hexo
git checkout -b hexo
然后在這個分支上初始化
hexo init
初始化的過程可能你會遇到問題如下:
/usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/hexo.js:13
class HexoNotFoundError extends Error {}
^^^^^
SyntaxError: Unexpected reserved word
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/usr/lib/node_modules/hexo/bin/hexo:5:1)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
原因是node
的版本過低某弦,需要update 一下node
到最新版
#安裝更新的一個軟件
npm install n -g
#更新到最新stable版本
n stable
#重新初始化
hexo init
這個時候你可能還???遇到問題如下:
FATAL ~/github/kingty.github.io not empty, please run `hexo init` on an empty folder and then copy your files into it
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Error: target not empty
at Context.initConsole (/usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/console/init.js:30:27)
at Context.tryCatcher (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/util.js:16:23)
at Context.<anonymous> (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/method.js:15:34)
at /usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/context.js:44:9
at Promise._execute (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/debuggability.js:303:9)
at Promise._resolveFromExecutor (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:483:18)
at new Promise (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:79:10)
at Context.call (/usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/context.js:40:10)
at /usr/lib/node_modules/hexo/node_modules/hexo-cli/lib/hexo.js:68:17
at tryCatcher (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:693:18)
at Promise._fulfill (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:638:18)
at Promise._resolveCallback (/usr/lib/node_modules/hexo/node_modules/bluebird/js/release/promise.js:432:57)
這是因為hexo
的初始化必須在一個空目錄下桐汤,包括隱藏的目錄而克。你的文件下應(yīng)該會有一個.git
???你剛剛創(chuàng)建的index.html
,你需要暫時把他們移動到另外一個目錄怔毛,初始化完成之后再移動回來员萍。
#移動出去
mv index.html ../temp
mv .git ../temp
#初始化
hexo init
這時候應(yīng)該可以初始化成功了,然后用相同的方法移動回來拣度,才能進(jìn)行下一步安裝一下
npm install
這個時候應(yīng)該hexo就安裝完成了碎绎。
然后你可以把這些東西push到你的hexo分支上去。
git add .
git commit -m "xxx"
git push -u origin hexo
配置
安裝完成后抗果,我們需要配置一些我們要生成的信息筋帖,還有就是我們要部署的地址。在當(dāng)前文件夾下冤馏,你會看到一個文件叫_config.yml
vi _config.yml
里面會有一些信息日麸,例如title,author都修改成你自己的就好了。注意里面有一項是deploy
,需要修改成你的repo地址和分支逮光,表示生成生個之后會push到你的repo的master分支上
deploy:
type: git
repo: git@github.com:username/username.github.io.git
branch: master
其余的具體配置請參考Hexo 配置
文章
配置完成后代箭,我們嘗試一下寫一篇blog
hexo new "test"
這時候就會在 source/_post
文件下生成一個 test.md
的文件。
cd source/_post
vim test.md
在里面寫一點內(nèi)容睦霎,然后生成梢卸。
hexo generate -d
這時候就會生成靜態(tài)頁面并自動push到你的master分支走诞,在瀏覽器訪問username.github.io
就可以看到剛才生成的blog主頁里會有這篇文章了副女。
然后同樣你可以把這些更改push到你的hexo分支上,以后別的電腦可以pull下來做更改蚣旱。
到這里碑幅,我們的博客就搭建好了,當(dāng)然塞绿,你還可以為博客設(shè)置你喜歡的主題沟涨,做一些自己的定制等等。慢慢去摸索吧异吻。
最后貼出我搭建的地址kingty.top