用Hexo+Github+Coding搭建靜態(tài)博客(一)

為什么搭建Hexo靜態(tài)博客?

??????Hexo是一款快速、簡(jiǎn)潔而且高效的博客框架,使用Markdown(或者其他渲染引擎)解析文章,在幾秒內(nèi),既可以安裝可利用的靚麗的主題生成靜態(tài)頁(yè)面

我目前只在window系統(tǒng)下面操作過(guò),Mac和linux沒(méi)有操作過(guò),不過(guò)原理應(yīng)該是一樣的,歡迎大家點(diǎn)評(píng),不過(guò)以后要是在liunx或者M(jìn)ac折騰的話(huà),相信會(huì)繼續(xù)更新噠!!
關(guān)于Markdown的使用,請(qǐng)見(jiàn)這篇文章MarkDown學(xué)習(xí)筆記
那么建立Hexo,你要具備什么知識(shí)呢?

  1. 知道npm包管理工具的基本使用
  2. 了解Git原理以及使用Git
  3. 知道Github page是如何實(shí)現(xiàn)的
  4. 域名分流是如何操作的

其特點(diǎn)有:

  • 超快速度:Node.js所帶來(lái)的超快生成速度,讓上百個(gè)頁(yè)面在幾秒內(nèi)瞬間完成
  • 支持Markdown:Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 Octopress 的大多數(shù)插件
  • 一鍵部署:只需一條指令即可部署到 GitHub Pages, Heroku 或其他網(wǎng)站
  • 豐富的插件:Hexo 擁有強(qiáng)大的插件系統(tǒng),安裝插件可以讓 Hexo 支持 Jade, CoffeeScript。

我覺(jué)得用 大象無(wú)形,大道至簡(jiǎn) 形容最好了!Hexo太容易就運(yùn)行了呢!
那還等什么,快開(kāi)始Hexo探索之旅吧?。?/code>

勤能補(bǔ)拙是良訓(xùn),一分耕耘一分才??????——華羅庚

在本地運(yùn)行Hexo項(xiàng)目

擼碼時(shí)刻,準(zhǔn)備興奮??! 你的系統(tǒng)必須具備以下環(huán)境,否則,會(huì)安裝失敗的喲

安裝Node建議用nvm,nvm是node版本控制工具
NVM安裝成功后,執(zhí)行 nvm install stable 就可以安裝node了

1、全局安裝hexo
    npm install hexo-cli -g
2、hexo命令生成一個(gè)博客雛形
    hexo init blog
3、進(jìn)入blog文件夾
    cd blog
4、根據(jù)package.json安裝依賴(lài)模塊
    npm install
5、啟動(dòng)hexo項(xiàng)目
    hexo server

你的博客可以運(yùn)行了吧,啊哈哈,有沒(méi)有一種超快的趕腳?不過(guò)Hexo遠(yuǎn)不止于此,你離真正使用Hexo搭建一個(gè)個(gè)性化博客還是很遠(yuǎn)的呢,待我慢慢道來(lái)吧。
如果想要自定義Hexo博客,請(qǐng)看我這篇文章哦 搭建Hexo博客進(jìn)階篇
運(yùn)行成功之后,把目標(biāo)轉(zhuǎn)向安裝的文件夾,文件夾目錄如下所示:

.
├── _config.yml   //這里是網(wǎng)站的配置信息
├── package.json  //HEXO項(xiàng)目依賴(lài)
├── scaffolds     //模板文件夾
|   ├──post.md    //文章模板
|   ├──draft.md   //
|   └──page.md
├── source       //資源文件夾,
|   ├── _drafts
|   └── _posts
└── themes       // 主題文件夾。Hexo會(huì)根據(jù)主題來(lái)生成靜態(tài)頁(yè)面

目錄文件解釋如下:

目錄/文件名 子文件名 作用 備注
_config.yml --- 這里是網(wǎng)站的配置信息 ----
package.json --- HEXO項(xiàng)目依賴(lài) 應(yīng)用程序的信息,EJS, Stylus 和 Markdown renderer 已默認(rèn)安裝,您可以自由移除。
scaffolds post,draft,page(.md) 模版 文件夾。當(dāng)您新建文章時(shí),Hexo 會(huì)根據(jù) scaffold 來(lái)建立文件。 模板是指在新建的markdown文件中默認(rèn)填充的內(nèi)容。例如,如果您修改scaffold/post.md中的Front-matter內(nèi)容,那么每次新建一篇文章時(shí)都會(huì)包含這個(gè)修改。
source _drafts、_posts 資源文件夾是存放用戶(hù)資源的地方 除 _posts 文件夾之外,開(kāi)頭命名為 _ (下劃線(xiàn))的文件 / 文件夾和隱藏的文件將會(huì)被忽略。Markdown 和 HTML 文件會(huì)被解析并放到 public 文件夾,而其他文件會(huì)被拷貝過(guò)去。
themes 主題配置相關(guān) 主題 文件夾。Hexo 會(huì)根據(jù)主題來(lái)生成靜態(tài)頁(yè)面。 ---

Hexo的基本使用

配置

網(wǎng)站基本信息在 _config.yml 中配置 :

網(wǎng)站

Site
title:       網(wǎng)站標(biāo)題      
subtitle:    網(wǎng)站副標(biāo)題    
description: 網(wǎng)站描述      
author:      您的名字
language:    網(wǎng)站使用的語(yǔ)言 zh-Hans,
timezone:    網(wǎng)站時(shí)區(qū)  America/New_York, Japan, 和 UTC

其中,description主要用于SEO,告訴搜索引擎一個(gè)關(guān)于您站點(diǎn)的簡(jiǎn)單描述,通常建議在其中包含您網(wǎng)站的關(guān)鍵詞。author參數(shù)用于主題顯示文章的作者
網(wǎng)站時(shí)區(qū),詳情請(qǐng)見(jiàn)時(shí)區(qū)列表

網(wǎng)址

url: http://yoursite.com   網(wǎng)址
root: /      網(wǎng)站根目錄
permalink: :year/:month/:day/:title/   文章的永久鏈接格式
permalink_defaults:  永久鏈接中各部分的默認(rèn)值

如果您的網(wǎng)站存放在子目錄中,例如 http://yoursite.com/blog,則請(qǐng)將您的 url 設(shè)為 http://yoursite.com/blog 并把 root 設(shè)為 /blog/。

目錄

Directory
source_dir: source  資源文件夾,這個(gè)用來(lái)存放內(nèi)容
public_dir: public 公共文件夾,這個(gè)文件夾用于存放生成的站點(diǎn)文件
tag_dir: tags 標(biāo)簽文件夾
archive_dir: archives 歸檔文件架
category_dir: categories 分類(lèi)文件夾
code_dir: downloads/code include code文件夾
i18n_dir: :lang 國(guó)際化文件夾
skip_render:跳過(guò)指定文件的渲染,您可使用 glob 表達(dá)式來(lái)匹配路徑。

public,tags,archives,categories文件夾在hexo項(xiàng)目中是不可見(jiàn)的,只有執(zhí)行Hexo generate命令時(shí),生成public靜態(tài)文件的時(shí)候才存在
我們可以看一下public文件夾的目錄信息

目錄

文章

Writing
新文章的文件名稱(chēng)
new_post_name: :title.md  //File name of new posts
預(yù)設(shè)布局
default_layout: post
把標(biāo)題轉(zhuǎn)換為 title case
titlecase: false Transform title into titlecase
在新標(biāo)簽中打開(kāi)鏈接
external_link: true Open external links in new tab
把文件名稱(chēng)轉(zhuǎn)換為 (1) 小寫(xiě)或 (2) 大寫(xiě)
filename_case: 0
顯示草稿
render_drafts: false
啟動(dòng) Asset 文件夾
post_asset_folder: false
把鏈接改為與根目錄的相對(duì)位址
relative_link: false
顯示未來(lái)的文章
future: true
代碼塊的位置
highlight:
  enable: true
  line_number: true
  auto_detect: false
  tab_replace:

分類(lèi)標(biāo)簽

Category & Tag
default_category: uncategorized
category_map:
tag_map:

時(shí)間/日期格式

Date / Time format
date_format: YYYY-MM-DD
time_format: HH:mm:ss

分頁(yè)

Pagination
per_page: 10
pagination_dir: page

擴(kuò)展

Extensions
Plugins: https://hexo.io/plugins/
Themes: https://hexo.io/themes/
theme: yelee

一鍵部署

Deployment
deploy:
  type:

Hexo基本指令

  • 新建文章:
    hexo new [layout] <title>
    注意:沒(méi)有設(shè)置layout時(shí)候,默認(rèn)使用 _config.yml 中的 default_layout 參數(shù)代替,如果標(biāo)題包含空格,請(qǐng)用引號(hào)括起來(lái)

  • 生成靜態(tài)文件:
    hexo generate,簡(jiǎn)寫(xiě) hexo g

  • hexo g -d ,文件生成后立即部署網(wǎng)站

  • hexo g -w(--watch), 文件生成后件監(jiān)視文件改動(dòng)

  • 發(fā)表草稿
    hexo publish [layout] <filename>

  • 本地啟動(dòng)服務(wù)
    hexo s 默認(rèn)4000端口

  • hexo s -p(--port) 8888 -s(--static) -l(--log)
    重設(shè)端口,啟用靜態(tài)文件,啟動(dòng)日記記錄,使用覆蓋記錄格式

  • 部署網(wǎng)站
    hexo delpoy

  • 渲染文件
    heox render <file1> [file2] -o path path設(shè)置輸出路徑

  • 從其他博客系統(tǒng)遷移內(nèi)容
    hexo migrate <type>

  • 清除緩存(一般主題改變后使用)
    hexo clean
    tips:清除緩存文件 (db.json) 和已生成的靜態(tài)文件 (public)。在某些情況(尤其是更換主題后),如果發(fā)現(xiàn)您對(duì)站點(diǎn)的更改無(wú)論如何也不生效,您可能需要運(yùn)行該命令。

  • 列出網(wǎng)站資料
    hexo list <type>

  • 顯示版本
    hexo version

同步部署到Github Pages和Coding Pages

Github Pages原理

完成github部署,首先你得有一個(gè)github賬號(hào),關(guān)于git的使用可以參考廖雪峰的git教程,講的很詳細(xì),算是入門(mén)的好教程了,更詳細(xì)的請(qǐng)參考git官網(wǎng)

在這里我默認(rèn)大家已經(jīng)有賬號(hào),并且完成了SSH KEY配置,這個(gè)SSH KEY的作用在,讓你的git識(shí)別你的電腦,這樣你才可以推送遠(yuǎn)程。

好了廢話(huà)不多說(shuō),我來(lái)講述Github pages運(yùn)行原理啦

首先,還是老樣子,Github Pages官網(wǎng),這里可以了解Github pages是什么,我在這里說(shuō)說(shuō)我的見(jiàn)解吧

//視頻代碼
<div align=center>
<p style="font-size:30px;color:green;">What is Github Pages?<p>
<iframe width="853" height="480" src="https://www.youtube.com/embed/2MsN8gpT6jY" frameborder="0" allowfullscreen></iframe>
</div> 

以上視頻說(shuō)了什么是github pages,其實(shí) github pages 是對(duì)一個(gè)靜態(tài)資源的訪問(wèn),相當(dāng)于文件服務(wù)器,我們用 node 也可以做一個(gè)文件服務(wù)器,Hexo通過(guò)生成靜態(tài)資源文件目錄 public,把 public 目錄下的內(nèi)容推送到 git 遠(yuǎn)程的 gh-pages 分支,就完成了 github pages 的操作,之后我們可以通過(guò) https://username.github.io/repos 來(lái)訪問(wèn)你的靜態(tài)資源了,就是這么簡(jiǎn)單

注意點(diǎn):要想通過(guò)github pages來(lái)訪問(wèn)你的資源,有兩種做法:

  • 新建一個(gè)倉(cāng)庫(kù),把本地資源直接推送到遠(yuǎn)程倉(cāng)庫(kù)的gh-pages分支,此時(shí)你的站點(diǎn)就在https://username.github.io/repos,repos 子目錄了
  • 新建一個(gè)倉(cāng)庫(kù),倉(cāng)庫(kù)名為username.github.io,把本地資源直接推送東master分支,此時(shí)你的站點(diǎn)是在https://username.github.io/就是根目錄了,但是你的資源在repos目錄下,所以記得引用本地資源要這么寫(xiě) href='/public/xxx.img'

至于coding page跟github同樣是采用git版本控制的,而且coding page操作簡(jiǎn)單,這里不說(shuō)了,注意ssh key的配置,否則你是無(wú)法推送的

購(gòu)買(mǎi)域名

購(gòu)買(mǎi)域名,在這里沒(méi)什么好說(shuō)的了,只知道騰訊域名的.top 1年只要4元,挺實(shí)惠的。
買(mǎi)了域名之后,我們要把 github 和我們的域名綁定在一起,進(jìn)行雙向綁定

  • 域名綁定Github
    買(mǎi)了域名之后,都會(huì)有域名解析服務(wù),我們就把域名解析設(shè)置在你的https://username.github.io/repos網(wǎng)址就可以了,這樣,當(dāng)你訪問(wèn)xxxx.top的時(shí)候,就會(huì)解析到你的github地址上去。也就是說(shuō)你買(mǎi)的域名可以用了哈。
  • github pages 綁定你的域名
    這個(gè)做法,原理很簡(jiǎn)單,只要在倉(cāng)庫(kù)的根目錄添加一個(gè)文件,文件名為 CNAME ,文件內(nèi)容就寫(xiě)你買(mǎi)的域名,這樣就OK了。

但是,注意了,因?yàn)槟忝看螌?xiě)完文章的時(shí)候,都要部署,所以建議把 CNAME 文件放在在 HEXO 的 source 文件夾內(nèi),這樣,每次部署的時(shí)候,source根目錄的文件就會(huì)放在public根目錄下了,一樣達(dá)到了目的

大功告成了嗎?哈哈,并沒(méi)有,我們做到這一步,無(wú)論是訪問(wèn)xxx.top還是訪問(wèn)https://username.github.io/repos都會(huì)跳轉(zhuǎn)到xxx.top,但是注意,服務(wù)器在國(guó)外 :blush:

我們?yōu)槭裁匆瑫r(shí)部署到兩個(gè)地方呢?

距離阻擋不了相思,還是得有備胎!

部署兩個(gè)地方,現(xiàn)在是沒(méi)什么好處了,之前因?yàn)?Coding pages 的服務(wù)器在國(guó)內(nèi),那么國(guó)內(nèi)的用戶(hù)通過(guò)域名分流可以訪問(wèn) Coding pages,而國(guó)外的用戶(hù),域名分流,可以訪問(wèn)到 Github pages,但是現(xiàn)在 Coding pages 的服務(wù)器在香港,這樣一來(lái),也沒(méi)什么好處了,還有就是百度爬蟲(chóng)是爬取不到 github page 的資源的,但是可以爬取到 Coding page 的,所以,這樣一來(lái),我們的網(wǎng)站離百度收錄進(jìn)了一步,具體要讓我們的網(wǎng)站被百度收錄,還是需要專(zhuān)門(mén)去研究SEO了,這里不介紹了。

下面介紹如何設(shè)置,還記得配置網(wǎng)站信息在那個(gè)文件嗎?在_config.yml里面

_config.yml

這樣我們就可以通過(guò)hexo d -g一鍵部署啦
hexo g hexo d分成兩步也可以

參考資料

  1. Hexo官方網(wǎng)站?:?https://hexo.io/
  2. Github pages ?:?https://pages.github.com/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容