hexo干貨系列:(四)將hexo博客同時托管到github和coding


前言

之前我們把hexo托管在github,但是畢竟github是國外的,訪問速度上還是有點慢,所以想也部署一套在國內的托管平台,之前查資料聽說gitcafe,但是聽說gitcafe已經被coding收購了,所以就決定部署到coding。 查詢了多方資料,終於鼓搗出了本地一次部署,同時更新到github以及coding。

正文

_config.yml配置

想要同時部署到2個平台,就要修改博客根目錄下面的_config.yml文件中的deploy如下
根據Hexo官方文檔需要修改成下面的形式

deploy:
  type: git
  message: [message]
  repo:
    github: <repository url>,[branch]
    gitcafe: <repository url>,[branch] 

所以我的是這樣:

deploy:
  type: git
  repo:
	  github: git@github.com:tengj/tengj.github.io.git,master
	  coding: git@git.coding.net:tengj/hexoblob.git,master

這里要注意一下:上面這段代碼左邊的-號只能有2個(如下圖紅圈),如果超過2個一般就是會被認定為填寫格式有問題。我是在repo下面兩行用tab鍵縮進就行,之前沒注意這里一直報錯。

我這邊提交采用的SSH密鑰,這個方法有個好處,提交的時候不用輸入用戶名和密碼。如果你習慣用http的方式,只要將地址改成相應的http地址即可。

coding上創建一個新項目

這里只介紹coding上面如何創建項目,以及把本地hexo部署到coding上面,還不懂如何創建hexo的請看我之前的系類文章。首先我們創建一個項目,創建后進入項目的代碼模塊,獲取到這個項目的ssh地址,我的是https://git.coding.net/tengj/hexoblob.git

同步本地hexo到coding上

把獲取到了ssh配置在上面的_config.yml文件中的deploy下,如果是第一次使用coding的話,需要設置SSH公鑰,生成的方法可以參考coding幫助中心
如果你看過我第一篇文章,里面也有介紹如果如果生成,我這里直接使用之前部署github時已經生成的公鑰。

本地打開 id_rsa.pub 文件,復制其中全部內容,填寫到SSH_RSA公鑰key下的一欄,公鑰名稱可以隨意起名字。完成后點擊“添加”,然后輸入密碼或動態碼即可添加完成。

添加后,在git bash命令輸入:

ssh -T git@git.coding.net

如果得到下面提示就表示公鑰添加成功了:

Coding.net Tips : [Hello ! You've conected to Coding.net by SSH successfully! ]

最后使用部署命令就能把博客同步到coding上面:

hexo deploy -g

pages服務方式部署

部署博客方式有兩種,第一種就是pages服務的方式,也推薦這種方式,因為可以綁定域名,而第二種演示的方式必須升級會員才能綁定自定義域名。pages方式也很簡單
就是在source/需要創建一個空白文件,至於原因,是因為 coding.net需要這個文件來作為以靜態文件部署的標志。就是說看到這個Staticfile就知道按照靜態文件來發布。

cd source/
touch Staticfile  #名字必須是Staticfile

分支選擇master,因為前面配置的分支是master,因此開啟之后,也需要是master。然后看起之后就可訪問了。

注意

如果你的項目名稱跟你coding的用戶名一樣,比如我的用戶是叫tengj,博客項目名也叫tengj
那直接訪問 tengj.coding.me就能訪問博客,否則就要帶上項目名:tengj.coding.me/項目名 才能訪問
推薦項目名跟用戶名一樣,這樣就可以省略項目名了

演示方式部署

當你把你的靜態網站上傳到Coding之后,就可以着手部署演示了,Coding的演示平台支持靜態網頁,所以其實非常簡單。在開啟演示模式之前,會提醒你沒有檢測到環境,你直接強制開啟就可以了。

  • 部署版本我沒有填,默認是master
  • 運行環境一定要選擇HTML
  • 自動部署要勾上,為后面配置自動部署做准備
  • 訪問域名根據你自己喜愛填寫,填好要點急后面的確認按鈕
  • 應用內存也根據自己喜好填寫,填好要點急后面的確認按鈕


以上都配置好了,就可以按下一鍵部署的按鈕了,部署成功后輸入地址:tengj.coding.io就能訪問

設置自動部署

如果你是演示方式的話,就需要設置自動部署,很奇怪,我勾選上了自動部署,但是同步新文章的時候,tengj.coding.io訪問沒有自動更新最新的。查了資料發現還要配置WebHook才行

  • 找到項目設置那邊的WebHook,然后點擊新建 Hook
  • 第一個輸入框中是填你的博客域名,然后在后面加上 /_
  • 第二個輸入框是輸入一個 token ,我們直接填寫 { { TOKEN } } 就可以了,TOKEN兩邊的大括號見的空格記得去掉
  • 回到演示里,在左邊的欄目中找到環境變量,變量名填寫為 WEBHOOK_TOKEN ,值為 { { TOKEN } } ,接着重新啟動應用就 ok 了!


    最后一步我們要測試一下是否 push 代碼的時候就會自動部署。我們回到命令行創建一個新的文章(可以什么都不寫),然后生成靜態頁面 push 到倉庫去:
hexo n codingPage
hexo deploy -g

我們回到瀏覽器在輸入博客的地址,如果那篇新寫好的文章出現在首頁了,說明我們自動部署成功了。以后再也不用自己去手動部署一次了!

個人域名綁定

我在萬網上面購買了tengj.top域名,第一年只要4元哈哈,個人用的就不用com這種超級貴的域名了。現在要實現國內的走coding,海外的走github,只要配置2個CNAME就行。域名解析如下:

過幾分鍾后檢測tengj.top看到的解析是正確的,國內解析到Coding,國外解析到Github,如圖:

我現在訪問tengj.top是跳轉到coding上面
直接訪問tengj.github.io地址會跳轉到tengj.top,但是內容也是coding上面
直接訪問tengj.coding.me發現不會跳轉到tengj.top這個域名,原因我發帖問過別人,答案如下:

github只能綁定一個域名,所以訪問tengj.github.io時,github的服務器知道要往tengj.top跳轉。coding可以綁定多個域名,當綁定多個域名時,訪問tengj.coding.me,coding的服務器不知道要往哪里跳轉,所以干脆就不跳轉了。但是當綁定一個時,為什么不跳轉,可能是coding覺得麻煩,就不跳轉了。這些都是coding定的,我們沒辦法改變。
你先想一個問題:那么多人都要在github上搞博客,還要自定義域名。github哪來這么多ip給你們用?所以辦法就是僅僅提供一個ip,這樣必然導致這個服務器上發着所有人的博客文件,那么如何區分特定的域名應該展示誰的博客呢?答案就是在倉庫里面新建一個CNAME文件,里面寫上你博客想用的域名,github的服務器會根據當前http請求的Host頭部(即域名),查找對應的包含相同的CNAME內容的目錄,從而顯示其中的頁面。這就是為什么要在倉庫里面創建一個CNAME原因。
不過,事情還沒完,一個ip的問題是世界各地不同地點的訪問速度不同,有些地方可能很慢,所以需要一組ip來分擔一下。最早github好像只有2個ip,后來ip變多了。再后來,github支持域名解析的時候,通過alias來。比如在域名商那邊設置成www.tengj.com ---> tengj.github.io,由於github無法控制你如何配置域名和ip的關系,但他可以控制tengj.github.io的最終ip解析,所以github推薦大家使用alias解析,可以為博主提供就近ip訪問。這就是你在域名商那邊配置CNAME或者alias的原理。這里的CNAME跟上面提到的CNAME作用不同,不是一個概念,不要混淆。

參考

使用Cover主題,在Coding上搭建Hexo博客
將hexo博客同時托管到github和gitcafe
個人域名如何同時綁定 github 和 coding 上的博客

總結

到此為止,終於可以實現部署一次,github和coding兩個同步都搞定了。訪問速度也是唰唰唰的快,忙乎了大半個月終於搭好了獨立博客。希望對還在搭建hexo獨立博客的小伙伴有幫助。下一篇研究下如何讓百度能收錄我的博客。


更多教程可以來我嘟嘟獨立博客里面看到

歡迎來訪:嘟嘟獨立博客


最近擼了個java的公眾號,學習資源超級多,視頻,電子書,最新開發工具一個都不能少,已全部分享到百度雲盤,求資源共享,打造一個學習方便,工作方便的java公眾號,開源開源,有需求的可以關注~撒花


免責聲明!

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



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