日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hexo博客搭建时遇到的一些问题

發(fā)布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hexo博客搭建时遇到的一些问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前的WP博客荒廢了好久之后終于感覺該做點正事了,所以這幾天花了點時間重新弄了下hexo,畢竟是比較符合前端的一個博客框架。比起wp來說,hexo輕量級的多,而且易部署(指速度優(yōu)化方面),也不需要一個專門的服務(wù)器來放置(這個其實是我選擇hexo的最終原因。手里雖然有vps,但是因為跑著ss加上國內(nèi)ping值太高,最終肯定影響國內(nèi)速度,所以就一直沒用來放blog)當(dāng)然沒有后臺也就意味著不能隨時隨地寫了就發(fā),這個相對WP來說是弱勢,但我感覺還好,畢竟不會常常在外面跑,而且寫博客基本都是在電腦前,再不濟也可以先把MD文件寫完后拷回去發(fā)布。


先大概說下我目前blog的部署方式:

  • github和gitcafe雙線路部署,國內(nèi)線路解析到gitcafe,國外線路解析到github。

  • 自己的域名且未備案(個人博客不建議備案)

  • 域名解析采用dnspod國際版(這個很重要,后面會解釋

  • 使用QQ的自定義域名郵箱

  • 圖片采用七牛存儲分流

  • 多說評論有一定優(yōu)化(顯UA以及自定義樣式等)

然后下面說下我部署過程中遇到的部分問題以及相應(yīng)的解決方法,由于我自己是Windows 7環(huán)境,所以下面很多解決方法可能對*nix黨不適用,還請注意。問題的排列按照最基礎(chǔ)的node安裝,git配置,域名配置,hexo安裝,hexo優(yōu)化美化的順序來,不過會跳過很多可以直接百度到的內(nèi)容,所以建議參考Hexo常見問題解決方案以及hexo你的博客如果你遇到的問題我這里沒提到的話,你可以去這兩篇文章搜下解決方案。


npm安裝hexo速度過慢

由于某些大家都知道的緣故,npm官方源在國內(nèi)的下載速度極其慢,用官網(wǎng)的npm install hexo-cli -g速度非常感人,所以不推薦這種方式。這里我推薦用淘寶的npm分流——cnpm
安裝過程很簡單:
npm install -g cnpm --registry=https://registry.npm.taobao.org
然后等著裝完即可,之后的用法和npm一樣,無非是把npm install改成cnpm install,但是速度比之前快了不止一個數(shù)量級(不過下文為了方便理解,還是會用默認的npm安裝,如果你發(fā)現(xiàn)速度不好的話,請自行替換成'cnpm')

npm安裝tips

  • npm安裝的時候有時候會出各種錯,而最常見的無非是權(quán)限問題、網(wǎng)絡(luò)連接、包名輸錯。注意看cmd窗口的報錯信息即可。
    windows黨請注意安裝的時候?qū)md用管理員方式打開(這個是我見過報錯最多的),想必npm ERR! Please try running this command again as root/Administrator.各位也不是第一次見了

  • hexo插件安裝的時候先cd到blog根目錄,并且安裝參數(shù)不要帶-g。 (即不要全局安裝,因為全局安裝的時候插件會被裝到node的根目錄下去,而不是blog目錄),hexo的插件需要在blog目錄下才能工作

  • 有部分hexo插件用普通的install可能會出現(xiàn)安裝完的版本和最新版本有區(qū)別,而且怎么也升級不上去的情況(npm update無效),這種情況下請手動指定版本安裝:
    語法:
    npm install [@<scope>/]<name>@<version>
    例子:
    npm install hexo@3.1.1 --save

  • git多網(wǎng)站ssh部署方案

    因為是gitcafe和github多線路部署,加上不想每次更新的時候都輸帳號密碼,所以https傳輸肯定不行了,只能是ssh傳輸。不過大部分教程都是單網(wǎng)站部署。所以特地把這個單獨拿出來。建議參考gitcafe的這篇部署教程,一般人看完應(yīng)該就不需要看我這底下的內(nèi)容了,我這里步驟都復(fù)制以上教程,僅對部分地方加點我個人感覺比較重要的注釋
    git客戶端安裝的時候可以選擇要不要集成到cmd里,有些人可能和我一樣沒有集成,導(dǎo)致cmd對部分linux下的命令無法解析(比如~)
    強烈建議以下操作在git bash里進行。不要在cmd里敲git命令!
    強烈建議以下操作在git bash里進行。不要在cmd里敲git命令!x2
    強烈建議以下操作在git bash里進行。不要在cmd里敲git命令!x3
    因為很重要所以說三遍

  • 生成新的 SSH 秘鑰
    記得把以下命令中的 YOUR_EMAIL@YOUREMAIL.COM 改為你的 Email 地址
    ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/gitcafe

  • 上面最末尾的./ssh/gitcafe中的'gitcafe'即為存在本地的密鑰文件名,所以這里是可 以自定義的。
    密鑰文件本地存放路徑為git的home參數(shù)對應(yīng)路徑下的.ssh文件夾,一般是"C:/Users/[username]/.ssh",如果沒有找到的話到git bash里輸入$HOME回車然后自行 去對應(yīng)目錄查找即可

  • 生成過程中會出現(xiàn)以下信息,按屏幕提示操作,并記得輸入 passphrase 口令。

  • $ ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/gitcafe Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /c/Users/username/.ssh/gitcafe. Your public key has been saved in /c/Users/username/.ssh/gitcafe.pub. The key fingerprint is: 15:81:d2:7a:c6:6c:0f:ec:b0:b6:d4:18:b8:d1:41:48 YOUR_EMAIL@YOUREMAIL.COM

    這將在 ~/.ssh/ 目錄下生成 gitcafe 和 gitcafe.pub 文件,記住千萬不要把私鑰文件 gitcafe 透露給任何人。

    passphrase的作用是在密鑰傳輸?shù)倪^程中加一個解密鑰的過程,使得即使密鑰文件不小心泄露了,別人也不能直接利用密鑰操作你的git帳號,但是由于我個人處理不了ssh-agent自動填充的問題,導(dǎo)致每次更新git都要輸passphrase,所以我就沒加了,上面的過程里是直接兩次回車過去了。

  • 在 SSH 用戶配置文件 ~/.ssh/config 中指定對應(yīng)服務(wù)所使用的公秘鑰名稱,如果沒有 config 文件的話就新建一個,并輸入以下內(nèi)容:

  • Host gitcafe.com www.gitcafe.comIdentityFile ~/.ssh/gitcafe

    由于是gitcafe和github雙站,所以這里需要再參考上面的語法另外建立一個github的規(guī)則

  • 添加 gitcafe.pub 中的內(nèi)容到 GitCafe 網(wǎng)站。

    具體請參考[如何安裝和設(shè)置 Git](http://gitcafe.com/GitCafe/Help/wiki/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85%E5%92%8C%E8%AE%BE%E7%BD%AE%20Git)中的第三節(jié)。
  • 最后測試配置文件是否正常工作

  • ssh -T git@gitcafe.com 如果連接成功的話,會出現(xiàn)以下信息。 Hi USERNAME! You've successfully authenticated, but GitCafe does not provide shell access.

    對于這一步,我的建議是測試命令里再加個-v參數(shù),即

    ssh -vT git@gitcafe.com

    因為比起"ssh -T"返回的模糊信息相比,"-v"會把整個傳輸過程中的操作都顯示出來,哪一步出錯很明顯就可以看出來,利于出現(xiàn)問題的調(diào)試

  • 完成

    測試通過后,你就可以使用獨立的一套公秘鑰來使用 GitCafe 了。Enjoy!
  • 單域名多線路解析

    這個解決方法來自v2ex的"wy315700",感謝指點
    由于網(wǎng)站未備案,所以不能直接放在七牛上(不過如果全部放在七牛,也就失去了雙線路的部署意義,所以我個人感覺沒必要全站七牛)
    先科普一些域名相關(guān)的小知識:

  • 關(guān)于A解析和CNAME解析的區(qū)別:

  • A解析:只能填I(lǐng)P地址,IP地址如果換了的話就需要換解析記錄
    CNAME解析:解析到另一個域名,即使被指向的域名的ip發(fā)生變化,也不需要更改解析記錄。CNAME優(yōu)先級高于A解析(至少在DNSPOD是這樣的)

  • 域名的nameserver(一般簡稱"NS")

  • nameserver的作用是指定域名的dns解析服務(wù)商,比如同時在萬網(wǎng)和dnspod給"www.a.com"做了解析,那么哪個解析起作用,就是由NS來決定的。這個在域名注冊商的域名管理的里可以更改。NS記錄建議只寫一個dns解析商的,多NS可能會有問題,可以參考這篇文章

    DNSPOD國內(nèi)版本目前只對國內(nèi)線路做細分,沒有海外線路的選擇,所以不推薦,建議用dnspod的國際版

    操作流程:

  • 注冊dnspod國際帳號

  • 域名服務(wù)商那里更改ns記錄為dnspod國際版的nameserver,默認為

    a.dnspod.com. b.dnspod.com. c.dnspod.com.
  • 在dnspod添加域名解析:

    先加一條cname解析國內(nèi)線路給gitcafe,然后再加一條默認線路的cname給github即可完成雙線路解析
  • github自定義域名需要在項目根目錄下添加一個CNAME文件,文件內(nèi)容為自定義域名。CNAME文件創(chuàng)建完之后扔到blog/source目錄下即可 (不能直接扔到public下,理由見下文)
    gitcafe需要在項目做設(shè)置,具體參考官方wiki

  • 自定義域名郵箱

    比如i@chitanda.me這種郵箱,目前我用的QQ的域名郵箱,免費,不過我這邊會遇到有時候gmail丟件的問題,所以準(zhǔn)備看看過段時間轉(zhuǎn)zoho。
    具體實現(xiàn)很簡單,就是域名解析里加條mx記錄,不做詳細解釋,可以參考QQ域名郵箱的幫助(由于通配的mx記錄和cname會有語法沖突,有些dns解析商是不支持這種寫法的,但是dnspod對語法要求不嚴(yán)格,可以這么寫。所以這也是我推薦dnspod的另一個緣故)
    另外有些域名服務(wù)商可能免費送了mail服務(wù),也可以用自帶的那個。我由于域名注冊在name.com上,它們沒送,所以只能另外想辦法

    hexo部署相關(guān)問題

    首先需要明確一點,public目錄下的文件每次'hexo -g'的時候就會被重新生成,所以不要往這里面放任何東西,不然每次都要另外加。
    而blog/source和blog/theme/[theme-name]/source里的文件是不會被另外處理的,所以有些需要添加在網(wǎng)站根目錄的文件(如favicon,谷歌百度的站點認證文件之類的)可以直接扔到這兩個文件夾底下,具體選哪個路徑要視情況而定

    _config.yml編譯不通過

    yml語法極度嚴(yán)格,不通過往往是空格問題,記得所有設(shè)置參數(shù)屬性末尾都要加空格

    給網(wǎng)站添加favicon

    這個和主題有關(guān),默認可能沒有,瀏覽器打開后根據(jù)開發(fā)者工具里可以看到當(dāng)前主題下'favicon'的具體路徑和要求文件格式,對應(yīng)做一個就可以了。有時候是'png'但也有時候強制要求'.ico',可以去比特蟲d等網(wǎng)站在線制作。

    github和gitcafe雙線路解析

    安裝hexo-deployer-git的0.0.4版!
    安裝hexo-deployer-git的0.0.4版!
    安裝hexo-deployer-git的0.0.4版!
    很重要所以說三次。我之前安裝的時候默認都是0.0.3版,哪怕其實0.0.4已經(jīng)出來了。而即使是完全正常的配置,0.0.3版都會提示"fatal: Unable to create 'XXXXXX/.git/index.lock': File e
    xists."(固定版本安裝辦法可以看上文)
    查看當(dāng)前已安裝版本:

    npm ls hexo-deployer-git

    附正確配置:

    deploy:type: git message: "xxxxx"repo: github: git@github.com:chitanda/chitanda.github.io.git,mastergitcafe: git@gitcafe.com:chitanda/chitanda.git,gitcafe-pages

    跟在","后面的是分支名字。注意傳輸?shù)刂窇?yīng)該是ssh格式的,不要弄成了https的地址

    多說評論框自定義

    其實從評論質(zhì)量來說的話,disqus可能更好點(畢竟是gfw認證網(wǎng)站,相比多說門檻稍微高一點,可以過濾部分人群),不過拖累網(wǎng)頁加載速度,所以我就換成多說了。
    多說樣式可以后臺自定義css,本站的多說css來自Next.Mist主題制作者的樣式
    顯UA功能需要改多說的js,具體參考此文
    單說"Next"主題下改完embed.js后需要做的事情:
    "Next"主題內(nèi)嵌多說,所以需要更改主題文件:
    打開/themes/next/layout/_scripts/comments/duoshuo.swig,更改"embed.js"的文件路徑即可。這里我是把js扔到7牛上去了,你也可以直接放到主題里然后更新到gitpage上去。

    圖片資源利用七牛分流

    由于git-page自帶空間只有300M,看起來博客夠用了,但是總覺得憋得慌,對于全圖片直接扔上去這種事個人沒太大信心,所以決定圖片用七牛分流(雖然這樣某種意義上對雙線路部署的做法產(chǎn)生了消極影響,不過考慮到七牛的CDN速度以及資本主義國家的網(wǎng)速加上未雨綢繆的300M空間,最終還是決定圖片傳到七牛上去)

    我最初的辦法是用hexo的一個插件(hexo-qiniu-sync)

    但是后來發(fā)現(xiàn)這個插件效率不高,一開整個hexo的反應(yīng)都慢了,而且最主要一點是失去了MD文件的通用性,所以最終棄用該方法。
    另外采用了一個本地同步文件到七牛的插件:qiniu4blog,使用很簡單,具體可以看文檔。

    多PC的情況下blog備份問題

    ~~本來想用網(wǎng)盤的自動備份工具,但是考慮到blog的posts文件夾在寫文章時的更新頻率,我又放棄了這種做法。
    另外由于"_config.yml"里有七牛的密鑰數(shù)據(jù),所以整個blog文件扔到git上也是不可取的。個人建議還是打個包直接另一臺電腦解壓吧(一般來說拷貝source文件夾,theme文件夾,靜態(tài)資源文件夾以及站點配置文件即可)。~~
    上面刪除線內(nèi)的是我對備份的最初想法,然后實際使用后發(fā)現(xiàn)有至少兩個缺點:

  • 麻煩,每次另一臺電腦上都要從百度云下載更新文件夾手動覆蓋

  • hexo s開啟本地服務(wù)器狀態(tài)的時候,會對文件夾進行監(jiān)視,動態(tài)編譯生成的文件,而百度云的自動備份會在你每次保存文件的時候都生成一個.cfg文件,導(dǎo)致hexo編譯失敗,然后就會停止本地服務(wù)器解析,又要手動開啟一次(寫文章的時候隨時順手CTRL+S是個好習(xí)慣)

  • 以上兩個原因?qū)е铝?#34;百度云備份"這個方案被否決,所以最終還是回到了git備份的路子。由于blog全站備份,所以建議放私有倉庫,另外根目錄下_config.yml盡量不要放上去(有些插件比如我現(xiàn)在在用的"hexo-qiniu-sync"就有七牛的key,所以不建議同步到git上)
    這里寫起來篇幅可能比較長,所以我另外寫了一篇文章單獨來講同步:
    hexo博客多PC間同步解決方案

    可以參考。

    需要注意的事,不管這臺電腦上之前有沒有安裝過hexo,安裝完成后都是不需要hexo init的——這個操作會把config初始化。。
    直接在復(fù)制過來的blog文件里運行hexo的命令即可。不過hexo插件都需要重新安裝下。

    給github添加README

    眾所周知hexo會把文件夾內(nèi)的所有md文件解析成html,而github的readme只支持MD格式。(所以想在這里直接插html繞過限制的就只能說殘念了)
    網(wǎng)上之前很多方法,不過都沒有說到點子上,因為即使把README.MD文件放到source或者theme對應(yīng)的source文件夾下,再加上layout:false,hexo還是會把文件解析掉。
    另外有一種不怎么優(yōu)雅的解決方法是把'README.MD'的后綴去掉,改成'README',不過這樣的話github只能支持部分解析,不會當(dāng)做一個完整的MD文件來處理,樣式上和期待值有差別

    正確的解決方法其實很簡單:

    **把'README.MD'文件的后綴名改成"MDOWN"然后扔到blog/source文件夾下即可,這樣hexo不會解析,github也會將其作為MD文件解析

    效果可參考我這個github的主頁

    文章添加代碼塊有注釋時的高亮

    建議對應(yīng)代碼塊語法選擇相應(yīng)的注釋符號。比如html用<!-- -->,css用/* */,否則可能會出現(xiàn)代碼不高亮或者高亮有問題的情況。

    MarkDown里 table 的語法

    MD寫法:

    | 鏈接 | 結(jié)果 | 原因 | |:-----|:---:|----------:| |文本內(nèi)容| **`是`** |同協(xié)議同域名同端口| |文本內(nèi)容| **`是`** |同協(xié)議同域名同端口| |文本內(nèi)容| **`是`** |同協(xié)議同域名同端口|
  • 最上面一行是表格第一列的值。第二行的冒號位置決定表格內(nèi)文本的對齊方式。有水平居中、水平靠左對齊、水平靠右對齊三種.

  • 切記表格要與上面的文本內(nèi)容空一行。否則解析不出來

  • 每列的寬度是根據(jù)對應(yīng)列里最長的文本來決定的

  • 輸出結(jié)果:

    鏈接結(jié)果原因
    文本內(nèi)容同協(xié)議同域名同端口
    文本內(nèi)容同協(xié)議同域名同端口
    文本內(nèi)容同協(xié)議同域名同端口

    以上是之前我之前部署的時候有遇到過的一些問題,后面會視情況再不定時更新下。希望對看到這篇文章的人有所幫助

    總結(jié)

    以上是生活随笔為你收集整理的hexo博客搭建时遇到的一些问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。