win10使用Hexo+GitHub搭建個人博客


一、前言

使用github pages服務搭建博客有以下幾點好處

  • 全是靜態文件,訪問速度快
  • 免費方便,不需要有自己的服務器
  • 可以隨意綁定自己的域名
  • 數據絕對安全,基於GitHub版本管理,想恢復到哪個版本都行
  • 博客內容可以輕易打包、轉移,發布到其他平台

准備工作

  • 有一個GitHub賬號,沒有的話去注冊一個https://github.com/
  • 安裝git for Windows(或者其他的客戶端)
  • 安裝node.js、npm

安裝node.js和npm

官網下載相應的安裝版本,我下的是win64的msi文件
下載后直接安裝,在選擇安裝路徑步驟可以自定義安裝路徑,其余全部按照默認配置,一路next(注意:msi文件按以上步驟安裝后會自動配置環境變量,會如果之前下載的是zip文件,則需要手動配置環境變量)
驗證安裝是否成功,在cmd或Git Bush中輸入
node -v
如果出現相應版本號,則安裝成功!!!由於新版的nodejs已經集成了npm,所以npm在之前也一並安裝了,命令行鍵入
npm -v
如果出現相應版本號,則安裝成功!!!
修改npm的默認安裝位置
如果不修改npm下載模塊的默認位置,默認的安裝路徑是:C:\Users\Administrator\AppData\Roaming下的npm和npm-cache,所有的模塊都安裝在這里(當然你也可以不修改)。
修改方式:找到node安裝路徑,依次進入node_modules->npm,找到npmrc文件修改prefix,不知道是由於版本問題還是什么,網上很多教程里的npmrc文件里都有prefix和cache兩個,而我npmrc文件卻只有一個prefix。
prefix=D:\NodeJS\node_global

二、創建GitHub博客倉庫

創建倉庫
新建一個名為 “你的用戶名.github.io” 的倉庫,如果你的 github 用戶名是 test,那么你就新建 test.github.io 的倉庫(必須是你的用戶名,其它名稱無效),將來你的網站訪問地址就是 http://test.github.io 了。(注意:創建的倉庫可能不會立即生效,大概需要10~20分鍾)

配置SSH key
第一步:創建SSH key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:
ssh-keygen -t rsa -C "youremail@example.com"
你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可。如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
第二步:登陸GitHub,打開你的github主頁,進入個人設置 -> SSH and GPG keys -> New SSH key,title隨意填,將第一步生成的id_rsa.pub中的內容復制到key中,最后點擊Add SSH key。
可以參照:配置SSH key

三、使用hexo寫博客

hexo簡介
Hexo是一個簡單、快速、強大的基於 Github Pages 的博客發布工具,支持Markdown格式,有眾多優秀插件和主題。由於github pages存放的都是靜態文件,博客存放的不只是文章內容,還有文章列表、分類、標簽、翻頁等動態內容,假如每次寫完一篇文章都要手動更新博文目錄和相關鏈接信息,相信誰都會瘋掉,所以hexo所做的就是將這些md文件都放在本地,每次寫完文章后調用寫好的命令來批量完成相關頁面的生成,然后再將有改動的頁面提交到github。

安裝hexo
npm install -g hexo
因為下載源在國外,所以可能出現安裝不成功或網速較慢的情況,這時就可以將npm的注冊表源設置為國內的鏡像。

#獲得原來的鏡像地址
npm get registry
#設置為淘寶鏡像
npm config set registry http://registry.npm.taobao.org/
#換成原來的
npm config set registry https://registry.npmjs.org/

初始化
在電腦的某個地方新建一個名為hexo的文件夾(名字可以隨便取),比如我的是D:\Git\myHexo,由於這個文件夾將來就作為你存放代碼的地方,所以最好不要隨便放。

cd D:/Git/myHexo
hexo init
hexo g    #生成
hexo s    #啟動

執行以上命令之后,hexo就會在public文件夾生成相關html文件,這些文件將來都是要提交到github去的。hexo s是開啟本地預覽服務,打開瀏覽器訪問 http://localhost:4000 即可看到內容,很多人會碰到瀏覽器一直在轉圈但是就是加載不出來的問題,一般情況下是因為端口占用的緣故,因為4000這個端口太常見了,解決端口沖突問題請參考這篇文章,第一次初始化的時候hexo已經幫我們寫了一篇名為 Hello World 的文章,默認的主題比較丑,打開時就是這個樣子:
hexo

修改主題
如果不喜歡默認的主題,可以在官網下載換個好看點的。
例如換上hexo-theme-yilia,首先下載主題

cd D:/Git/myHexo
git clone https://github.com/litten/hexo-theme-yilia.git themes/yilia

下載的主題都會放在···/myHexo/themes中,修改myHexo中_config.yml中的theme: landscape改為theme: yilia,然后重新執行hexo g來重新生成。
如果出現一些莫名其妙的問題,可以先執行hexo clean來清理一下public的內容,然后再來重新生成和發布。

上傳到GitHub
第一步:配置_config.yml中有關deploy的部分

deploy:
  type: git
  repository: git@github.com:liuxianan/liuxianan.github.io.git
  branch: master

第二步:安裝插件
npm install hexo-deployer-git
其它命令不確定,部署這個命令一定要用git bash,否則會提示Permission denied (publickey)。
第三步:打開你的git bash,輸入hexo d就會將本次有改動的代碼全部提交。

寫博客
在source/_posts目錄下使用hexo new命令,或者手動新建.md文件,寫好后使用hexo d -g生成並上傳,這樣就可以通過yourname.github.io訪問博客了!!!

常用命令

hexo new "postName" #新建文章
hexo new page "pageName" #新建頁面
hexo generate #生成靜態頁面至public目錄
hexo server #開啟預覽訪問端口(默認端口4000,'ctrl + c'關閉server)
hexo deploy #部署到GitHub
hexo help  # 查看幫助
hexo version  #查看Hexo的版本

#縮寫
hexo n == hexo new
hexo g == hexo generate
hexo s == hexo server
hexo d == hexo deploy

#組合命令
hexo s -g #生成並本地預覽
hexo d -g #生成並上傳

四、相關配置

圖片的使用
hello-world.md 文件在生成靜態頁面后放在public的子目錄中,例如我的是/public/2019/03/12/hello-world/index.html,所以圖片的鏈接可以寫為 (../../../../img/img.png),即鏈接到 public/img 文件下的圖片。

修改網站icon

  • 修改步驟:
    • 找一張自己喜歡的icon,命名為favicon.png
    • 將圖片放在myHexo/themes/yilia/source/img/中(myHexo是我的hexo空間,yilia是我的主題)
    • 找到myHexo/themes/yilia/layout/_partial/head.ejs,找到以下內容並修改為:
<% if (theme.favicon){ %>
	<link rel="icon" href="/img/favicon.png">
  <% } %>

如何讓博文列表不顯示全部內容
默認情況下,生成的博文目錄會顯示全部的文章內容,如果想要讓博文不顯示全部內容,在博文合適的位置加上 標簽即可。(注意:改標簽前后最好都加上一行空行)
more的使用

hexo系列問題之部署到github時會刪掉README文件

  • 原因
    • 我們執行命令hexo g之后,會把source文件里的.md格式的文件渲染為html文件並放到public下面
    • 繼續執行命令hexo d之后,會把public下面的所有文件提交到對應的XXX.github.io這個倉庫
    • 由於本地public文件夾里沒有README.md這個文件,所以在提交public文件時,github會認為你把README.md文件刪掉了,同時github也會刪掉倉庫里的README.md文件,這就是具體的原因
  • 解決辦法
    • 我們在本地的source文件里新建一個README.md文件
    • 修改Hexo根目錄下的_config.yml文件,將skip_render參數的值設置為README.md
skip_render: README.md

//  為什么需要設置這一步呢?
//  因為你執行hexo g命令時,hexo會默認將source文件里的所有md文件渲染為html文件放到public中,
//  同時README.md會被渲染為README.html文件放到public文件里
//  加上這段設置,就是告訴hexo的解析器,你在渲染source文件里的md文件時,跳過README.md文件

參考這里

五、后記

很久之前就搭建一次,但是因為弄得很亂,所以一直沒用(主要是因為不怎么會用,也不怎么寫博客)。但現在正在找實習當中,經常看一些別人的面經,也試着去回答那些問題,但發現很多知識點自己都會,但是不能清晰、精准的表達出來,所以准備重新搭建起這個博客,希望能把自己每天的積累到的一些重要知識用文字的形式表達出來,以此來鍛煉一下自己的表達能力,同時也是對知識的一個消化、總結。
上次搭建博客花了很多時間,由於對node.js、npm、hexo不了解,所以總感覺哪里不對頭,就算按照別人的教程來,也會出現各種各樣的錯誤(感覺自己有強迫症!!!)。今天搭這個東西也花了一兩個小時,最后總算搞出來了!!!

博客參考:https://www.cnblogs.com/liuxianan/p/build-blog-website-by-hexo-github.html#%E4%B8%8A%E4%BC%A0%E5%88%B0github
Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM