網上教程已經很多了。爲什麼還要寫這樣一篇博客呢?
網上教程過於分散,自己在搭建過程中遇到了一些細節問題,從頭到尾解決下來花了不少時間,本文重點是涉及配置hexo安裝環境和git環境,希望做一個總結,方便日後查看,也許能夠幫到更多人呢~
說明:Hexo是靜態博客生成框架,這個博客要託管在開源代碼託管網站Github的git pages上,git
是Github的分佈式源代碼管理工具,這裏用來推送hexo博客文件到github,我們只需要簡單的瞭解node js
是一個Java script運行環境,hexo的運行需要這個環境的支撐即可,npm
是nodejs
的模塊管理器,可以用來方便地安裝所需hexo模塊。)
1. 本地設置:
1.1 配置Hexo安裝環境 (git
,nodejs
和npm
)
(說明:Hexo是靜態博客生成框架,這個博客要託管在開源代碼託管網站Github的git pages上,git
是Github的分佈式源代碼管理工具,這裏用來推送hexo博客文件到github,我們只需要簡單的瞭解node js
是一個Java script運行環境,hexo的運行需要這個環境的支撐即可,npm
是nodejs
的模塊管理器,可以用來方便地安裝所需hexo模塊。)
1.1.1 安裝nodejs
和npm
#如果是Debian系的(如Ubuntu)
sudo apt-get install nodejs npm
#如果是Archlinux
sudo pacman -S nodejs npm
1.1.2 配置環境變量
npm config set prefix ~/.npm
export PATH="$PATH:$HOME/.npm/bin"
echo export PATH="$PATH:$HOME/.npm/bin" >> ~/.zshrc # 持久化環境變量配置
echo export PATH="$PATH:$HOME/.npm/bin" >> ~/.bashrc
1.1.3 配置git
首先安裝好git,然後執行如下命令配置git環境:
git config --global user.name "arisskz6"
git config --global user.email arisstz6@gmail.com
1.2 安裝Hexo
npm install hexo-cli -g
npm install
npm install hexo-deployer-git
2. 遠程設置
2.1 配置Github pages
感謝知乎@CrazyMilk
在github上創建博客倉庫,名稱形式是這樣:arisskz6.github.io
- 創建倉庫 arisskz6.github.io;
- 創建兩個分支:master 與 hexo;
- 設置hexo爲默認分支(因爲我們只需要手動管理這個分支上的Hexo網站文件);
- 使用git clone [email protected]:arisskz6/arisskz6.github.io.git拷貝倉庫;
- 在本地https://arisskz6.github.io文件夾下通過Git bash依次執行npm install hexo、hexo init、npm install 和 npm install hexo-deployer-git(此時當前分支應顯示爲hexo);
- 修改_config.yml中的deploy參數,分支應爲master;
- 依次執行git add .、git commit -m “…”、git push origin hexo提交網站相關的文件;
- 執行hexo g -d生成網站並部署到GitHub上。
直通車: 點我
2.2 本地與git pages連接
2.2.1 判斷本地ssh key是否已存在
ls -al ~/.ssh
顯示結果如下:
arisskz6 in ~/Documents λ ls -al ~/.ssh
總用量 20
drwx------ 2 arisskz6 users 4096 11月 24 20:29 .
drwx------ 29 arisskz6 users 4096 12月 13 16:11 ..
-rw------- 1 arisskz6 users 1679 11月 24 20:29 id_rsa
-rw-r--r-- 1 arisskz6 users 400 11月 24 20:29 id_rsa.pub
-rw-r--r-- 1 arisskz6 users 988 11月 24 21:25 known_hosts
上面結果中的4、5兩行就分別是ssh key的私鑰和公鑰,我這裏已經存在,如果沒有,就要生成ssh key了
使用如下命令生成ssh密鑰對:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
會回答幾個問題,如果沒有特別需求,一路按回車鍵選擇默認選項即可。
2.2.2 將ssh key添加到ssh-agent中
eval "$(ssh-agent -s)" #啓動ssh-agent後臺程序
ssh-add ~/.ssh/id_rsa #添加ssh密鑰到ssh-agent
2.2.3 將本地ssh密鑰對中的公鑰添加到github
cat ~/.ssh/id_rsa.pub
將顯示出的ssh公鑰內容複製到剪貼板,在gituhb個人頁面中點擊頭像,然後點擊Settings,在Personal settings邊欄中點擊SSH and GPG keys,點擊New SSH key(或Add SSH key),設置自己喜歡的標題,把公鑰粘貼進下方空白區域即可
2.2.4 測試ssh連通性
ssh -T git@github.com
如果顯示如下就成功了:
arisskz6 in ~/Documents λ ssh -T [email protected]
Hi arisskz6! You've successfully authenticated, but GitHub does not provide shell access.
我們配置ssh key目的就是不用每次提交博客都輸入賬號密碼,前面的鋪墊打完了,下面就要在站點配置文件中進行相應的設置
2.3 修改Hexo站點和主題文件
2.3.1 創建配置文件的備份,方便以後出現問題恢復
cd ~/Documents/hexo
cp _config.yml _config.yml.bak
2.3.2 首先修改_config.yml
中的deploy
屬性
deploy:
type: git
repo: git@github.com:arisskz6/arisskz6.github.io.git
branch: master
2.3.3 安裝next
主題
mkdir themes/next
curl -L https://api.github.com/repos/iissnan/hexo-theme-next/tarball | tar -zxv -C themes/next --strip-components=1
2.3.4 配置next主題
2.3.4.1 首先修改hexo根目錄下的站點配置文件_config.yml
- 設置網站標題
title: arisskz6's Blog
subtitle: 不忘初心
- 設置語言爲中文:
language: zh-Hans
- 設置時區(重要!!!如果不設置會出現問題,以後我們會專門寫一篇博文來總結hexo配置中的那些坑)
timezone: Asia/Shanghai
- 啓用next主題
themes: next
- 添加網站url
url: https://arisskz6.github.io/
- 添加disqus評論支持
disqus_shortname: arisstz6
- 添加一個標籤頁,裏面包含網站中的所有標籤
- 創建一個名爲
tags
頁面 - 編輯標籤頁, 設置頁面類型爲tags
- 添加 tags 到主題配置文件
_config.yml
裏
- 創建一個名爲
hexo new page "tags"
title: All tags
date: 2014-12-22 12:39:04
type: "tags"
------
menu:
home: /
archives: /archives
tags: /tags
站點配置文件中其他項可酌情自行設置,除非瞭解要修改項的含義,否則不要隨意改動
3. hexo常用命令
- 新建文章:
hexo new "文章標題"
- 更新hexo配置
hexo clean
- 將寫好的makdown格式的博文生成爲html文件
hexo g
- 本地預覽博客
hexo s
- 本地調試博客
hexo s --debug
- 推送博客到git pages
hexo d
更新博客時上面兩個命令可以合用:
hexo g -d
4. 換電腦或重裝系統後更新博客
- 使用形如
git clone [email protected]:arisskz6/arisskz6.github.io.git
的git命令拷貝倉庫(默認分支爲hexo) - 在本地新拷貝的
arisskz6.github.io
目錄下執行如下命令在持久化保存用戶名和密碼(以後提交就不用每次都輸入用戶名和密碼了):
git config credential.helper store
- 依次執行下列指令:
npm install hexo
npm install
npm install hexo-deployer-git # 記得,不需要hexo init這條指令
5. 配置獨立域名
兩位大神已經給出了詳細的教程,我不會說是我懶癌犯了,參考鏈接(感謝^^):
1.無人看的冷清博客:Hexo-Github-Pages-Cloudflare搭建自定義域名HTTPS博客
2.MARKSZのBlog:hexo持久化構建以及給自有域名github-page上HTTPS