我是小小強,這是我的第4篇原創文章,閱讀需要大約10分鐘。
三思而行:在真正操作前,學習了網上的資料,逐步明確搭建博客的目的。
- 使用github pages 及hexo完成博客
- 分別備份博客源文件及生成的靜態頁面,前者的倉庫應當是私有的
- 可免密推送倉庫
安裝及配置github sshkey
前提:本地具備git環境
- 注冊github并創建倉庫
創建xx.github.io.git倉庫(xx為github的用戶名,如果不適用用戶名創建倉庫,會導致博客顯示異常),設置master為默認分支,同時本地執行:
cd .ssh
ssh-keygen -t rsa -C "xxx@163.com"
同時設置對應的key密碼sdxxx,然后復制產生的id_rsa.pub內容到github上,執行如下命令測試是否成功:
ssh -T git@github.com
- 配置多用戶登錄
后續會有多個帳號的sshkey切換,因此在.ssh目錄創建config文件,輸入:
#github
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
如果無錯誤發生,則本機可免密提交代碼到github上。為方便提交代碼,完善git信息
git config --global user.name "xxx"http://用戶名
git config --global user.email "xxx@163.com"http://填寫自己的郵箱
- 檢出倉庫到本地
git clone https://github.com/xx/xx.github.io.git
注意:在github上版本庫名稱需要為xx.github.io的名稱,克隆到本地時任意名稱均可。
安裝及配置hexo
- 安裝nodejs
brew install node
安裝成功后,可以使用npm指令,可以使用node -v查看信息。
- 配置hexo
npm install -g hexo-cli 安裝hexo
cd xx.github.io.git
hexo init 初始化(這一步會覆蓋掉.git目錄)
npm install 安裝依賴組件
npm install hexo-deployer-git --save
安裝完成后,執行hexo clean;hexo -g;hexo -s可以在localhost:4000查看hexo的默認頁面。
- 安裝next主題
git clone https://github.com/iissnan/hexo-theme-next themes/next
cd themes/next
git pull
配置xx.github.io.git目錄下的_config.yml
language: zh-Hans #網站語言
timezone: Asia/Shanghai #時區
theme: next
deploy:
type: git
repository: https://github.com/xx/xx.github.io.git
branch: master
配置上面的地址后,每次執行hexo -g;hexo -d會將生成的靜態頁面推送到github上的xx.github.io.git倉庫。
安裝及配置oschina
- 設置oschina
在oschina上創建倉庫hexo,并為oschina添加sshkeyssh-keygen -t rsa -C "xx@163.com" -f oschina
將oschina.pub拷貝到oschina的用戶設定下。同時修改.ssh/config文件,加入:
#osOne
Host oschina
HostName git.oschina.net
User git
IdentityFile ~/.ssh/oschina
執行ssh -T git@git.oschina.net測試是否成功 。
- 配置本地xx.github.io.git映射到hexo
cd xx.github.io.git
rm -rf .git
rm -rf themes/next/.git(原因下面解釋)
git init
git remote add origin https://git.oschina.net/xx/hexo.git
git pull origin master
git add .
git commit -m "add repo first"
git push origin master
編輯 .gitignore,加入
/.deploy_git
/public
按照上面的配置完成后,本地源文件會推送到oschina的hexo.git,執行hexo d之后的靜態文件會推送到github的xx.github.io.git的master分支。
日常使用
編輯博客文章
方法一:對于強迫癥患者,希望將文章按照分類categories存放在不同的目錄,那么就可以在_posts目錄下手動建立文件夾。
- 在_posts下創建dir目錄,用于存放某一categories的文章
- 執行hexo new "file"會在_posts目錄下產生file.md文件,將文件拷貝到dir目錄
- 編輯file.md文件
---
title: 'title'
date: 2017-06-29 21:51:07
categories: dir #為手動創建的目錄名
tags: [tags1,tags2]
---
方法二:對于非強迫癥患者,實際沒有必要創建dir目錄,只要在file.md中像上文一樣指明categories就行。這個時候創建的文章在默認路徑下就可以,只要不嫌亂。
提交管理
在本地對博客進行修改(添加新博文、修改樣式等等)后,通過下面的流程進行管理:
- 依次執行git add .、git commit -m “…”、git push指令將改動的源文件推送到oschina
- 執行hexo clean;hexo g -d發布網站到github的master分支
恢復資料
如果想在一個新環境使用博客,按照以下流程處理:
- 使用git clone https://git.oschina.net/xxx/hexo.git 拷貝倉庫
- 在hexo.git目錄執行npm install -g hexo-cli、npm install、npm install hexo-deployer-git
注意一定不要執行hexo init。
Q&A
- 執行hexo -d提示“error:deploy not found:git”,執行下面命令即可
npm install hexo-deployer-git --save
- 執行ssh -T git@git.oschina.net提示Permission denied (publickey),是因為產生的sshkey未添加到系統生效,每次開機后執行如下命令:
ssh-add ~/.ssh/私鑰名
- 如果不介意博客源文件也放在github上的話,可以先把xx.github.io.git庫下到本地,然后在本地建立一個hexo分支,然后把本地的hexo分支推送到github,同時github設置hexo為默認分支。源文件推送到hexo分支,在執行hexo -d時,生成的靜態文件會推送到master分支。這樣就不需要oschina私有庫。使用github一個庫,兩個分支一樣達到目的。
- hexo在本地測試運行重啟后頁面一直空白,或者參照"恢復資料"一節部署后提示如下:
WARN No layout: 2017/05/13/hello-world/index.html
WARN No layout: archives/index.html
WARN No layout: archives/2017/index.html
WARN No layout: archives/2017/05/index.html
WARN No layout: index.html
這個原因是從oschina下載的themes目錄下的next主題目錄為空,因為next也是一個版本庫,目錄下包含.git目錄,當向oschina進行push時,未push上去。目前的解決方案時將next目錄下的.git改名為next_git,在此push發現還是沒有提交上去。然后將next目錄拷貝到庫之外的目錄,執行push在服務端先刪除next,然后再把next拷貝回來,再次push。
- fatal: The current branch master has no upstream branch.
git push -u origin master(不要-u也可以)
或者
git add -A
git commit
git push origin master
- 執行
hexo cl;hexo g -d
提示下面錯誤:
FATAL Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
這個原因是對應的git用戶的key未加入到系統中,參見前面ssh-add
的Q&A.
常用命令
hexo help #查看幫助
hexo init #初始化一個目錄
hexo new "postName" #新建文章
hexo new page "pageName" #新建頁面
hexo generate #生成網頁,可以在 public 目錄查看整個網站的文件
hexo server #本地預覽,'Ctrl+C'關閉
hexo deploy #部署.deploy目錄
hexo clean #清除緩存,強烈建議每次執行命令前先清理緩存,每次部署前先刪除 .deploy 文件夾
npm install hexo -g #安裝
npm update hexo -g #升級
hexo generate --deploy
hexo deploy --generate
hexo deploy -g
hexo server -g
hexo new draft <title> 新建草稿
hexo publish draft <title> 發布草稿為post
參考資料
記錄網站誕生過程-使用hexo+github pages
Github-Pages-Hexo搭建博客
使用hexo,如果換了電腦怎么更新博客?
Hexo常見問題解決方案
Hexo搭建Github-Pages博客填坑教程
hexo你的博客
GitHubPages + Hexo—詳解博客搭建
Cherry's博客