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

前言


以前咱們把hexo託管在github,可是畢竟github是國外的,訪問速度上仍是有點慢,因此想也部署一套在國內的託管平臺,以前查資料據說gitcafe,可是據說gitcafe已經被coding收購了,因此就決定部署到coding。 查詢了多方資料,終於鼓搗出了本地一次部署,同時更新到github以及coding。 html

正文


_config.yml配置


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

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

因此個人是這樣:github

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鍵縮進就行,以前沒注意這裏一直報錯。 segmentfault

我這邊提交採用的SSH密鑰,這個方法有個好處,提交的時候不用輸入用戶名和密碼。若是你習慣用http的方式,只要將地址改爲相應的http地址便可。瀏覽器

coding上建立一個新項目


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

同步本地hexo到coding上


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

本地打開 id_rsa.pub 文件,複製其中所有內容,填寫到SSH_RSA公鑰key下的一欄,公鑰名稱能夠隨意起名字。完成後點擊「添加」,而後輸入密碼或動態碼便可添加完成。 hexo

添加後,在git bash命令輸入:ssh

ssh -T 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獨立博客的小夥伴有幫助。下一篇研究下如何讓百度能收錄個人博客。


最後,厚顏無恥的求打賞..若是您認爲博主的教程幫助到了你~ 你懂的o(^▽^)o (/▽\=)  

相關文章
相關標籤/搜索