前言
之前我們把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獨立博客的小伙伴有幫助。下一篇研究下如何讓百度能收錄我的博客。
如果對你有所幫助(●ˇ?ˇ●)點個喜歡
或者關注下
吧,沒準還能打賞下(/▽\=)。你的鼓勵將是博主繼續寫下去的動力,生活不易,且行且珍惜。遇到好文章就先點個贊,回頭再慢慢看。我都這么干的嘿