基于騰訊云COS對(duì)象存儲(chǔ)部署hexo博客并實(shí)現(xiàn)一鍵部署

基于騰訊云COS對(duì)象存儲(chǔ)部署hexo博客并實(shí)現(xiàn)一鍵部署

本文首發(fā)自作者個(gè)人博客werty.cn , 轉(zhuǎn)載請(qǐng)注明出處, 原文:基于騰訊云COS對(duì)象存儲(chǔ)部署hexo博客并實(shí)現(xiàn)一鍵部署

前言

Hexo 是一個(gè)快速、簡(jiǎn)潔且高效的博客框架篡悟。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在幾秒內(nèi)斟赚,即可利用靚麗的主題生成靜態(tài)網(wǎng)頁(yè)镐侯〔蠹蹋基于Hexo 我們可以很快的將本地的markdown文件轉(zhuǎn)為炫酷的個(gè)人博客頁(yè)面呵燕,對(duì)于喜歡使用markdown記錄書寫的開發(fā)者來(lái)說(shuō)提供了極大的便利棠绘。mark一時(shí)爽,一直mark一直爽~~

靜態(tài)網(wǎng)站是指只包含靜態(tài)內(nèi)容(如 HTML)或客戶端腳本的網(wǎng)站再扭,而動(dòng)態(tài)網(wǎng)站的內(nèi)容包含諸如 PHP氧苍、JSP 或 ASP.NET 等服務(wù)器端腳本,依賴服務(wù)器端處理泛范。

目前主流的對(duì)象存儲(chǔ)服務(wù)如AWS S3,阿里云 OSS, 騰訊云COS等均支持部署靜態(tài)網(wǎng)站让虐,依托于對(duì)象存儲(chǔ)帶來(lái)的高可用和低成本,我們可以很容易的以較低的成本搭建出一個(gè)基于Serverless架構(gòu)的高可用的個(gè)人博客網(wǎng)站罢荡。對(duì)于一般訪問(wèn)量的個(gè)人博客而言澄干,在一些云服務(wù)商平臺(tái)甚至可以實(shí)現(xiàn)免費(fèi)基于對(duì)象存儲(chǔ)建站,當(dāng)然國(guó)內(nèi)提供免費(fèi)額度的供應(yīng)商還是相對(duì)較少柠傍,即使如此,花費(fèi)的成本相較于使用云主機(jī)而言也算的上物美價(jià)廉了辩稽。

簡(jiǎn)單計(jì)算一下使用騰訊云COS建站的費(fèi)用

以上海區(qū)域?yàn)槔?定價(jià)標(biāo)準(zhǔn)如下(僅列出部署靜態(tài)網(wǎng)站后會(huì)產(chǎn)生費(fèi)用的項(xiàng)目):

標(biāo)準(zhǔn)存儲(chǔ)費(fèi)用 0.13 元/GB/月

讀/寫請(qǐng)求費(fèi)用 0.01元/萬(wàn)次

外網(wǎng)下行流量 0.5元/GB

對(duì)一個(gè)一般的個(gè)人博客 我們假設(shè)網(wǎng)站空間大小為0.5GB 月PV為10萬(wàn)次 平均每次請(qǐng)求流量為50Kb 那么一個(gè)月的費(fèi)用為

0.5 × 0.13 + 0.01 × 10 + 0.5 × 100000 × 0.05 × 0.001 = 2.665

每個(gè)月不到3塊錢惧笛,事實(shí)上月請(qǐng)求量能夠達(dá)到10萬(wàn)的個(gè)人博客還是很少的,實(shí)際的成本可能更低逞泄,大家可能注意到患整,最大的費(fèi)用其實(shí)是流量費(fèi)用,因此我們?cè)谑褂脤?duì)象存儲(chǔ)建站的時(shí)候也要善于將公共請(qǐng)求分流到第三方喷众,如某些js擴(kuò)展各谚,選擇一個(gè)可靠的第三方CDN會(huì)為我們減少很多不必要的流量費(fèi)用,網(wǎng)站中的圖片也應(yīng)該進(jìn)行一定的壓縮優(yōu)化等

準(zhǔn)備

當(dāng)我們開始時(shí)我們需要做如下準(zhǔn)備:

  • 域名 (需要備案到千,不備案可臨時(shí)使用COS提供的臨時(shí)域名)
  • 本地部署好hexo環(huán)境 昌渤,參考文檔:https://hexo.io/zh-cn/docs/
  • 騰訊云賬號(hào) 開通COS服務(wù) (建議使用V5版本COS控制臺(tái),如為V4版本可提交工單讓后臺(tái)升級(jí)為V5版本)

開始

為hexo安裝一鍵部署到qcloud cos插件

進(jìn)入hexo項(xiàng)目目錄執(zhí)行下列命令安裝hexo-deployer-qcloud-cos部署器

npm install hexo-deployer-qcloud-cos --save

再hexo項(xiàng)目配置文件中添加下列參數(shù)

deploy:
    type: qcloud-cos
    cosRegion: <您的cos bucket所在區(qū)域代碼>
    cosSecretId: <您的cos accessKeyId>
    cosSecretKey: <您的cos accessKeySecret>
    cosBucket: <您的cos bucket名稱>
    cosAppid:  <您的騰訊云賬戶appid>
    remotePath: <您要部署的目錄,默認(rèn)為根目錄,默認(rèn)無(wú)需設(shè)置>

說(shuō)明:hexo-deployer-qcloud-cos插件為本文作者所開發(fā)憔四,使用中如果遇到插件問(wèn)題膀息,可以到作者github中反饋,如果覺得好用般眉,點(diǎn)個(gè)Star將是最大的支持!

獲取配置參數(shù)

首先我們需要在騰訊云控制臺(tái)獲取下列所需的配置參數(shù):

名稱 描述
APPID 開發(fā)者訪問(wèn) COS 服務(wù)時(shí)擁有的用戶維度唯一資源標(biāo)識(shí)潜支,用以標(biāo)識(shí)資源
SecretId 開發(fā)者擁有的項(xiàng)目身份識(shí)別 ID甸赃,用以身份認(rèn)證
SecretKey 開發(fā)者擁有的項(xiàng)目身份密鑰
Bucket COS 中用于存儲(chǔ)數(shù)據(jù)的容器名稱
Region Bucket所在的地域信息。

COS術(shù)語(yǔ)請(qǐng)參考 COS術(shù)語(yǔ)信息

獲取APPID

訪問(wèn)騰訊云控制臺(tái) 點(diǎn)擊右上角用戶名 > 賬戶信息 可以查看到APPID冗酿,寫入

image
image

獲取SecretId和SecretKey

點(diǎn)擊控制臺(tái)右上角用戶名 > 訪問(wèn)管理

說(shuō)明:此處為遵循云服務(wù)安全最佳實(shí)踐埠对,使用角色創(chuàng)建用戶。如果圖一時(shí)方便裁替,可以直接使用訪問(wèn)管理頁(yè)面的【訪問(wèn)密鑰】> 【API密鑰管理】創(chuàng)建密鑰后使用项玛,該密鑰擁有控制您騰訊云賬戶所有資源的能力,強(qiáng)烈建議不要這么做胯究!

image

進(jìn)入后點(diǎn)擊用戶 > 新建用戶

image

選擇自定義創(chuàng)建

image

輸入用戶名稱稍计,訪問(wèn)方式僅勾選編程訪問(wèn),點(diǎn)擊下一步

image

在策略搜索框中輸入QcloudCOSFullAccess 搜索后勾選該策略裕循,點(diǎn)擊下一步

image

確認(rèn)信息無(wú)誤后點(diǎn)擊完成

image

記錄該頁(yè)面中的SecretId和SecretKey臣嚣,寫入配置文件_config.yml 中

image

獲取bucket和region

首先從騰訊云可用地域代碼 中選擇距離自己較近或者自己喜歡的區(qū)域,記錄區(qū)域代碼和區(qū)域名稱

image

bucket是我們創(chuàng)建的對(duì)象存儲(chǔ)的空間名稱剥哑,這里我們有兩種方式可以創(chuàng)建bucket

  • 方法1 使用 hexo-deployer-qcloud-cos插件自動(dòng)創(chuàng)建

    將我們想要?jiǎng)?chuàng)建的bucket名稱寫入配置文件硅则,然后執(zhí)行hexo 部署命令 (部署命令參考文檔

    hexo d
    

    部署工具在部署前會(huì)檢測(cè)bucket是否存在,如果不存在株婴,會(huì)在命令行中出現(xiàn)自動(dòng)創(chuàng)建bucket確認(rèn)怎虫,如圖,輸入y確認(rèn)創(chuàng)建

    image

    創(chuàng)建成功后困介,將出現(xiàn)是否立即部署命令大审,輸入y可立即部署,此處我們直接立即部署座哩,便于后續(xù)測(cè)試

    image

    注意:bucket名稱在cos所有區(qū)域是唯一的

  • 方法2 使用騰訊云控制臺(tái)手動(dòng)創(chuàng)建

    使用騰訊云控制臺(tái)手動(dòng)創(chuàng)建bucket的流程此處不再演示徒扶,大家可以參照官方文檔 創(chuàng)建存儲(chǔ)桶

    注意:

    • 用于部署靜態(tài)網(wǎng)站的bucket訪問(wèn)權(quán)限必須設(shè)為public-read 即公共讀!否則即使設(shè)置對(duì)象文件權(quán)限為公開根穷,仍將會(huì)導(dǎo)致COS靜態(tài)網(wǎng)站的索引文檔功能失效
    • 控制臺(tái)創(chuàng)建的存儲(chǔ)桶名稱格式為<bucket>-<appid>格式姜骡,如newbucket-125000000在設(shè)置配置文件時(shí),bucket只需要輸入-前面的部分即可

修改存儲(chǔ)桶bucket設(shè)置

開啟靜態(tài)網(wǎng)站設(shè)置

進(jìn)入控制臺(tái)對(duì)象存儲(chǔ)管理頁(yè)面屿良,如進(jìn)入后不是V5控制臺(tái)圈澈,建議提交工單升級(jí)為V5版本

image

點(diǎn)擊剛剛創(chuàng)建的存儲(chǔ)桶名稱,進(jìn)入存儲(chǔ)桶詳情頁(yè)面尘惧,點(diǎn)擊基礎(chǔ)配置

image

頁(yè)面滑到底部康栈,找到靜態(tài)網(wǎng)站欄目,開啟靜態(tài)網(wǎng)站,索引文檔設(shè)置為index.html

image

設(shè)置自定義域名

點(diǎn)擊存儲(chǔ)桶詳情頁(yè)面的域名管理選項(xiàng)卡谅将,在自定義源站域名欄目下點(diǎn)擊添加域名漾狼,源站類型選擇【靜態(tài)網(wǎng)站源站】,在域名位置輸入博客要解析的域名饥臂,點(diǎn)擊保存逊躁,復(fù)制CNAME值,到域名服務(wù)商處設(shè)置解析隅熙,此處需要設(shè)置的域名必須時(shí)已經(jīng)備案過(guò)的域名稽煤,若域名尚未備案,則不能設(shè)置囚戚。

image

吐槽:說(shuō)到這里不得不吐槽騰訊云的“基礎(chǔ)設(shè)施即代碼”能力做的還是比較粗糙酵熙,自定義域名沒有提供任何API可供操作,提交工單也未能提供一個(gè)解決方案驰坊,在開發(fā)hexo-deployer-qclouod-cos部署器插件時(shí)匾二,最初的打算是自動(dòng)創(chuàng)建存儲(chǔ)桶后,自動(dòng)完成靜態(tài)網(wǎng)站和自定義域名相關(guān)的配置拳芙,然而現(xiàn)在只能是一個(gè)美麗的夢(mèng)想了察藐。。舟扎。分飞。。睹限。

解析域名

此處以騰訊云的控制臺(tái)為例譬猫,說(shuō)明如何添加cname解析

進(jìn)入域名管理控制臺(tái),點(diǎn)擊我的域名羡疗,全部域名 點(diǎn)擊解析

image

輸入主機(jī)記錄染服,記錄類型選CNAME,記錄值輸入上一步設(shè)置自定義域名時(shí)的靜態(tài)網(wǎng)站源站的CNAME值,點(diǎn)擊保存即可

然后訪問(wèn)demo.werty.cn

image

已經(jīng)可以正常訪問(wèn)了 至此使用COS搭建靜態(tài)網(wǎng)站的教程就此完結(jié)

補(bǔ)充:

如果添加解析后叨恨,常見錯(cuò)誤原因:

  • 訪問(wèn)域名提示NoSuchWebsiteConfiguration,請(qǐng)檢查靜態(tài)網(wǎng)站設(shè)置是否保存
image
  • 訪問(wèn)域名提示NoSuchKey肌索,請(qǐng)檢查是否未開啟靜態(tài)網(wǎng)站的索引文檔功能或存儲(chǔ)桶域名管理添加的域名是否為默認(rèn)源站,如果是【默認(rèn)源站】特碳,請(qǐng)修改為【靜態(tài)網(wǎng)站源站】,修改后晕换,一定注意點(diǎn)擊保存午乓!
image

<center>---完---</center>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市闸准,隨后出現(xiàn)的幾起案子益愈,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒸其,死亡現(xiàn)場(chǎng)離奇詭異敏释,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)摸袁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門钥顽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人靠汁,你說(shuō)我怎么就攤上這事蜂大。” “怎么了蝶怔?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵奶浦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我踢星,道長(zhǎng)澳叉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任沐悦,我火速辦了婚禮成洗,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘所踊。我一直安慰自己泌枪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布秕岛。 她就那樣靜靜地躺著碌燕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪继薛。 梳的紋絲不亂的頭發(fā)上修壕,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音遏考,去河邊找鬼慈鸠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灌具,可吹牛的內(nèi)容都是我干的青团。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼咖楣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼督笆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起诱贿,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤娃肿,失蹤者是張志新(化名)和其女友劉穎咕缎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體料扰,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凭豪,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晒杈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嫂伞。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖桐智,靈堂內(nèi)的尸體忽然破棺而出末早,到底是詐尸還是另有隱情,我是刑警寧澤说庭,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布然磷,位于F島的核電站,受9級(jí)特大地震影響刊驴,放射性物質(zhì)發(fā)生泄漏姿搜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一捆憎、第九天 我趴在偏房一處隱蔽的房頂上張望舅柜。 院中可真熱鬧,春花似錦躲惰、人聲如沸致份。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)氮块。三九已至,卻和暖如春诡宗,著一層夾襖步出監(jiān)牢的瞬間滔蝉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工塔沃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝠引,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓蛀柴,卻偏偏與公主長(zhǎng)得像螃概,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鸽疾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355