之前在弄這個博客的時候踩了一些坑,也看了一些教程,今天試著總結成一篇文章。整個過程我只是做過四五次,所以有什么問題還請大家指出。
效果
https://www.niracler.com
注意: 我這里是在linux系統上搭建的,所以win上搭建會有點不一樣,不過大致都差不多。
什么是 Hexo?
Hexo 是一個快速、簡潔且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。
什么是 Github Pages?
Github Pages 是面向用戶、組織和項目開放的公共靜態頁面搭建托管服 務,站點可以被免費托管在 Github 上,你可以選擇使用 Github Pages 默 認提供的域名 github.io 或者自定義域名來發布站點。Github Pages 支持 自動利用 Jekyll 生成站點,也同樣支持純 HTML 文檔,將你的 Jekyll 站 點托管在 Github Pages 上是一個不錯的選擇。
安裝相關工具
安裝Node.js以及Git
首先,你要先確保自己的系統中已經安裝了下面這些應用程序,Hexo是基于Node.js的,而Git則是用來上傳文件到github上的工具:
檢驗是否安裝成功:
node -v npm -v git --version
換源,使用cnpm源
因為在國內直接用npm實在是太慢了,所以我選擇使用淘寶的源,而用cnpm命令。
安裝Hexo
$ sudo cnpm install hexo-cli -g
初始化Hexo項目
創建并進入blog文件夾
$ mkdir blog $ cd blog
初始化hexo基礎配置文件
初始化時間可能會比較長。
$ hexo init
目錄結構
生成靜態文件
$ hexo g
加載hexo基礎html、css、js等文件。
在這完成后等于已經在本地創建了一個網頁,想查看的話,輸入
$ hexo s
然后相當于開啟了一個本地的服務器,會提示你拷貝url到瀏覽器。
在github上創建并設置遠程庫
創建倉庫
名字必須是 用戶名.github.io,這里是因為我已經有這倉庫了
創建分支
我們總共有兩個分支,master和hexo。之所以要有這兩個分支,是為了在電腦出問題的時候或者換新的電腦以后才能快速的恢復blog環境。
設置hexo為默認分支
將項目克隆到本地
$ git clone https://github.com/(用戶名)/(倉庫名).git:克隆到本地
將文件復制到blog文件夾中
$ cd .. $ git clone https://github.com/(用戶名)/(倉庫名).git $ cp -r (倉庫名)/.git .git
安裝主題
可以到下面這個網站看看有什么喜歡的主題,然后安裝。
https://hexo.io/themes/
下載主題
$ cd blog $ git clone https://github.com/theme-next/hexo-theme-next themes/next
配置主題
在項目的_config.yml中配置自己的主題
現在打開http://localhost:4000/ 已經可以看到一篇內置的blog了。當然,這是我經過配置后的主題。
發布hexo到github page
配置遠程倉庫
在項目的_config.yml中配置自己的遠程倉庫地址
提交項目,部署
安裝部署工具(方便以后更新)
$ cnpm install hexo-deployer-git --save
這里有幾個坑需要注意一下:
1、所有的配置“:”符號后面都要帶空格,否則執行本地測試直接失敗。
2、language是設置語言。zh-CN是中文。
生成靜態文件并上傳到github倉庫
$ hexo clean && hexo g && hexo d #等于一次性執行了,清空、刷新、部署三個命令
總結
對于日常修改博客的時候,應該首先用git add ., git commit -m “…” , git push origin hexo 將內容保存至github中,然后才用hexo g -d部署博客
Hexo常用的幾個命令:
$ hexo generate #(hexo g) $ hexo server #(hexo s) $ hexo deploy #(hexo d)
另外還有其他幾個常用命令:
$ hexo new "postName" $ hexo new page "pageName" $ hexo new draft "postName" $ hexo publish "postName"
常用簡寫
$ hexo n==hexo new $ hexo g==hexo generate $ hexo s==hexo server $ hexo d==hexo deploy
常用組合
$ hexo d -g #生成部署 $ hexo s -g #生成預覽
這僅僅是一個開始
雖然我上面已經說了這么多了,但這只是一個開始,你還要選好主題,還有對主題進行無數的優化,還要用自己的域名什么的。我就不寫了,原文里有其他文章的鏈接,你們去看吧。
題圖
本文作者:niracler
本文鏈接: www.niracler.com/2019/03/10/使用Hexo-Github-Pages搭建個人獨立博客/
版權聲明:本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!
最初開始想要搭建博客有兩個原因:
想要把自己學習的東西自己消化然后輸出,有一個比較系統的管理。閑得慌,就是想折騰。
可能有人會問為什么有那么多博客平臺不用,非要自己搭建一個?
其實就是覺得自己搞一個比較有成就感,而且自己可控,還有就是完全免費的可以搞一個屬于自己網站,何樂而不為呢至于為啥選中Hexo,因為一Google搭建免費個人博客最多的就是使用Hexo,所以選擇了Hexo。
為啥選擇GiteePages而不是GitHubPages,自然是因為Gitee是國內的代碼托管平臺,至少是不會被墻掉的吧,而且訪問速度也是個人感覺要快一點。
簡單一點來說,Hexo就是一個快速、簡潔且高效的博客框架。
Hexo官網:https://hexo.io/
GiteePages是碼云的一個和GitHub Pages類似的免費的靜態頁面托管服務。目前GiteePages支持 Jekyll、Hugo、Hexo編譯靜態資源。
GiteePages文檔地址:https://gitee.com/help/articles/4136
搞事情步驟:
安裝nodejs安裝Git安裝Hexo初始化Hexo博客(個人網站)文件夾注冊Gitee賬號創建Gitee倉庫提交文件到Gitee倉庫前的準備工作推送資源文件到Gitee倉庫開啟GiteePages服務
因為Hexo是基于nodejs的,所以要使用Hexo,那么第一步肯定是安裝nodejs。安裝分為以下幾個步驟:
npm config set registry https://registry.npm.taobao.org
要將本地的文件推送到遠程的Gitee倉庫就需要安裝Git。安裝分為以下幾個步驟:
nodejs準備就緒了,那么現在就可以有請第一位主角Hexo出場了。
執行命令:
npm install hexo-cli -g
執行命令如果報錯:
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules/hexo-cli
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! syscall access
npm ERR! path /usr/local/lib/node_modules/hexo-cli
npm ERR! errno -13
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules/hexo-cli'
npm ERR! [Error: EACCES: permission denied, access '/usr/local/lib/node_modules/hexo-cli'] {
npm ERR! stack: "Error: EACCES: permission denied, access '/usr/local/lib/node_modules/hexo-cli'",
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/usr/local/lib/node_modules/hexo-cli'
npm ERR! }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
那是因為安裝過程中需要在系統文件夾寫入文件,但是執行命令的賬號沒有系統文件夾的寫入權限導致的。
這個時候就需要使用root權限來執行命令:
sudo npm install hexo-cli -g
安裝命令執行完成之后,在終端執行hexo -v如果輸出了Hexo的相關信息則表示Hexo已經安裝成功。
恭喜你,離成功進了一步了
Hexo已經安裝完成,現在我們要做的就是使用Hexo來初始化一個我們存放博客或者說是個人網站資源的文件夾。
在你的電腦硬盤中找一個你覺得爽的位置,執行命令:
hexo init blog // blog 為創建的目錄,你可以自己定義
不出意外,現在你的文件夾已經創建好了。
使用終端進入到創建好的文件夾。
執行命令用于更新nodejs的模塊:
npm install
好了,現在你可以在這個創建好的文件夾中搞事情了。
嘗試下在該目錄下執行命令:
hexo server
你會看到如下輸出:
INFO Start processing
INFO Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.
說明Hexo的服務已經啟動成功了,你可以在你的瀏覽器訪問就會出現你的博客(個人網站)主頁了
就像這樣的
雖然已經看到了頁面,但是所有的配置都是默認的,我們還需要做一些修改。在該文件夾下面,找到_config.yml文件,這個文件是Hexo的配置文件,大體如下:
# Hexo Configuration
## Docs: https://hexo.io/docs/configuration.html
## Source: https://github.com/hexojs/hexo/
# Site
title: 你的博客(個人網站)名稱
subtitle: 你的博客(個人網站)子名稱
description: '你的博客(個人網站)的描述'
keywords: 你的博客(個人網站)的關鍵字
author: 你的博客(個人網站)的作者
language: 你的博客(個人網站)語言 en:英文 zh-CN:簡體中文
timezone: '時區(可以不用配置)'
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: 你的博客(個人網站)網址
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:
pretty_urls:
trailing_index: true # Set to false to remove trailing 'index.html' from permalinks
trailing_html: true # Set to false to remove trailing '.html' from permalinks
# Directory
source_dir: source
public_dir: public
tag_dir: tags
archive_dir: archives
category_dir: categories
code_dir: downloads/code
i18n_dir: :lang
skip_render:
# Writing
new_post_name: :title.md # File name of new posts
default_layout: post
titlecase: false # Transform title into titlecase
external_link:
enable: true # Open external links in new tab
field: site # Apply to the whole site
exclude: ''
filename_case: 0
render_drafts: false
post_asset_folder: false
relative_link: false
future: true
highlight:
enable: true
line_number: true
auto_detect: false
tab_replace: ''
wrap: true
hljs: false
# Home page setting
# path: Root path for your blogs index page. (default='')
# per_page: Posts displayed per page. (0=disable pagination)
# order_by: Posts order. (Order by date descending by default)
index_generator:
path: ''
per_page: 10
order_by: -date
# Category & Tag
default_category: uncategorized
category_map:
tag_map:
# Metadata elements
## https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
meta_generator: true
# 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-DD
time_format: HH:mm:ss
## Use post's date for updated date unless set in front-matter
use_date_for_updated: false
# Pagination
## Set per_page to 0 to disable pagination
per_page: 10
pagination_dir: page
# Include / Exclude file(s)
## include:/exclude: options only apply to the 'source/' folder
include:
exclude:
ignore:
# Extensions
## Plugins: https://hexo.io/plugins/
## Themes: https://hexo.io/themes/
theme: landscape
# Deployment
## Docs: https://hexo.io/docs/deployment.html
deploy:
type: ''
這里可以把你的博客(個人網站)的信息配置一下,其余的配置可根據自己的需求配置。
看到了首頁是不是有一點小激動,到了這里,你已經成功一半了
趁熱打鐵,接著搞事情。
現在nodejs有了,Git也是安裝好了,我們既然是使用GiteePages來搭建博客,那么當然是需要一個Gitee的賬號,注冊賬號不用多說了吧。點擊注冊Gitee
好了,經過上面的步驟,已經可以在本地運行你自己的博客(個人網站)了。
如果想要別人也能訪問你的博客(個人網站),那么就需要我們的第二位主角GiteePages,能夠使用GiteePages的前提就是需要有一個Gitee倉庫。
現在登錄到你之前注冊的Gitee主頁,頂欄上有個+圖標
鼠標移上去,點擊新建倉庫進入到創建倉庫頁面
如果你想直接通過域名就能訪問你的博客(個人網站)的話,創建倉庫的時候你的倉庫名就需要和你注冊Gitee的時候的用戶名一樣。
例如:我的Gitee用戶名為maoyikun,我創建的倉庫名是maoyikun,那我訪問的時候直接使用maoyikun.gitee.io就可以直接訪問了。但是,如果我創建的倉庫名和用戶名不一樣,比如我創建倉庫的時候,倉庫名為blog,那我訪問的時候,就必須要域名+倉庫名才能訪問,如maoyikun.gitee.io。
是否開源的選項,如果你的東西不想被別人看見的話,就選擇私有的。
其他的隨便選擇就好。
這樣,存放我們博客(個人網站)資源的倉庫就創建好了。
將本地文件推送到Gitee倉庫之前,我們需要做一些簡單的配置。
在終端輸入命令配置Git提交時的用戶名和郵箱:
git config --global user.name "username" //全局配置提交是使用的提交人名
git config --global user.email "xxx@mail.com" //全局配置提交人的電子郵箱
如果想每次提交的時候不輸入用戶名和密碼就需要在本地生成ssh密鑰。
在終端輸入:
ssh-keygen -t rsa -C "公鑰描述"
生成的秘鑰會存放在~/.ssh/目錄下。
接下來在終端輸入:
cat ~/.ssh/id_rsa.pub
就可以看到生成的公鑰內容了,將公鑰的內容復制下來放到Gitee上。
進入到你的Gitee主頁,點擊設置
進入到Gitee設置頁面,找到安全設置-SSH公鑰
進入到添加公鑰頁面
將剛才你復制的公鑰內容粘貼到公鑰輸入框,點擊確定保存公鑰。
做完以上操作之后,可以測試一下公鑰是否配置成功。
在終端輸入:
ssh -T git@gitee.com
執行命令如果輸出了:
Hi 你的Gitee賬號! You've successfully authenticated, but GITEE.COM does not provide shell access.
此時證明你的公鑰已經配置成功了。
接下來要做的就是將本地的文件推送到Gitee倉庫了。
本地博客(個人網站)目錄已經生成,Gitee倉庫已經創建,現在我們需要將本地的文件推送到Gitee倉庫了。
因為GiteePages是支持Hexo資源編譯的,所以需要推送到Gitee倉庫的文件就有兩種選擇。
這種方式是直接將Hexo生成的所有靜態文件推送到Gitee倉庫,這樣就相當于是GiteePages托管的就是你的博客(個人網站的)所有生成好的靜態文件,就不需要GiteePages再去編譯生成一次靜態文件。這樣每次更新GiteePages的時候時間會相對短一些。這種方式還有個好處就是操作簡單一點,可直接通過Hexo命令來推送文件到Gitee倉庫。
使用終端,進入到博客(個人網站)文件夾下面,執行命令安裝一個插件:
npm i hexo-deployer-git
裝好插件之后,在該目錄下找到_config.yml文件,打開文件配置你的倉庫信息:
#在文件中找到這個deploy這個節點,修改或添加配置
deploy:
type: git
repo: 你的倉庫地址
branch: 你要推送到倉庫的分支(默認為master)
在該目錄下執行:
hexo g
這個命令會根據你的Markdown文件生成對應的靜態文件,生成好了之后,可本地啟動Hexo服務看下效果,輸入命令:
hexo s //和hexo server命令一樣
感覺效果滿意了,就可以提交到Gitee倉庫了,執行命令:
hexo d
至此,生成的靜態文件就已經推送到Gitee倉庫去了。
這種方式是將你初始化的博客(個人網站)整個文件夾下面的所有文件推送到Gitee倉庫,GiteePages在更新的時候會自動地去編譯一次你的目錄,然后生成所有的的靜態文件,這樣的話,每次更新GiteePages的時候肯定時間就相對會久一點。
在終端進入到之前初始化的博客(個人網站)文件夾中,執行命令:
git init //將該文件夾中的文件納入到Git的版本控制中
git add . //將所有的文件添加到Git暫存區
git commit -m "此次提交的說明" //將文件提交到本地
git remote add origin 你的遠程倉庫地址 //告訴Git你的Gitee倉庫在哪里
git push -u origin master //將你本地的文件提交到Gitee倉庫的master分支
至此,你的博客(個人網站)的所有文件已經提交到了Gitee倉庫去了。
ps:Gitee倉庫地址需要進入你創建的倉庫首頁才能看到,既然配置了公鑰,那么倉庫地址肯定是使用ssh協議最好。
現在是萬事具備,只欠開啟GiteePages服務了。
終于走到了最后一步。
現在進入到你的Gitee倉庫頁面,找到服務,點擊Gitee Pages開啟GiteePages服務
進入到頁面之后,可選擇GiteePages服務需要托管的分支,推薦勾選上強制使用HTTPS,選擇完畢之后點擊啟動便可開啟GiteePages服務。
啟動完成之后會展示你的GiteePages網址,這個網址便是你的博客(個人網站)的網址了,記住這個網址。
以后如果你的博客(個人網站)的內容有改動,只需在GiteePages服務頁面點擊更新即可。
至此,你的博客(個人網站)便已經全部搭建完成。
你的博客(個人網站)搭建完成之后便可使用Hexo開始開始豐富博客(個人網站)的內容了。
如何使用Hexo寫作,請看Hexo文檔
本文只是介紹如何使用Hexo和GiteePages來搭建一個免費的博客(個人網站),至于Hexo更多的使用這里不做介紹,大家可以去Hexo官網查看具體的使用和去網上搜索更多Hexo適用的騷操作。
如果有錯的地方或者意見和建議,歡迎大家在下方評論留言指出