hexo搭建博客以及域名解析分析

博客使用靜態網站生成技術生成,靜態網站生成是指靜態生成網站的過程,即生成HTML文件,例如,在本地計算機中,而後將網站文件上載到服務器,該服務器在被請求時向用戶提供服務。相比動態網站,有如下優勢:html

  • 內容存儲爲平面文件,所以不須要數據庫
  • 靜態網站不須要動態服務器端處理
  • 靜態網站比動態網站超快,由於它們不須要服務器端處理或數據庫訪問
  • 靜態網站比任何動態網站都更安全,由於能夠利用的安全漏洞更少
  • 緩存靜態文件比緩存動態頁面更有效

目前網上主流的靜態站點生成器有三個,分別爲Jekyll、Hugo、Hexo。linux

其中Jekyll由Github用Ruby語言構建,您能夠無償使用Github Pages來託管您的靜態網站,並使用CNAME文件輕鬆將其與您的自定義頂級域名連接。 它的主要弱點爲隨着網站內容的增加,構建過程變得很是慢。nginx

另外,Hugo是一個用Go構建的靜態站點生成器。它被宣傳爲「世界上最快的網站構建框架」。它最近與Jekyll相比,但在人氣方面迅速增加。 它的主要缺點爲可擴展性差和插件少。git

而Hexo是基於Node的開源靜態生成器,可在MIT許可下使用。藉助Node.js平臺,Hexo容許您在幾秒鐘內生成數百個靜態文件。 主要有如下優勢:github

  • 快速而使人難以置信的速度
  • 使用一個部署命令部署到Github頁面或任何其餘主機
  • 強大的Markdown支持
  • 高度可擴展
  • 可用的免費和開源主題
  • 可用的免費插件

並且它的缺點是:Hexo有一個相對較大的社區,但大多數是非英語人士(來自中國),這個缺點從咱們的角度來看就是優勢啊。web

根據以上分析,我採用的整體方案爲:採用Hexo進行博客建立,其中使用Next主題進行配置,將生成的博客靜態網站部署在本身搭建的vps服務器上,最後採用dnspot對域名進行解析。具體細節見下文。數據庫

Hexo環境搭建

  1. 安裝 參照https://hexo.io/zh-cn/docs/ 網站,主要包括Node.js、Hexo和Git安裝,Node.js、Git能夠直接下載安裝包安裝,Hexo能夠在Git Bash命令行裏面安裝:npm

    $ npm install -g hexo-cli
    複製代碼
  2. 建站 環境搭建好後就能夠開始建站了,一樣在Git Bash裏面輸入命令行進行:json

    $ hexo init <folder>
    $ cd <folder>
    $ npm install hexo --save
    複製代碼

    其中folder爲你要創建的博客的文件夾。vim

  3. 相關命令 站點創建好後,就能夠開始寫文章了,可使用sublime編輯軟件打開剛剛建好的folder博客文件夾,找到source/_posts目錄即爲要寫的文章地址。 涉及到的一些命令以下:

    #新建文章
    $ hexo new [layout] <title>
    #生成靜態文件
    $ hexo generate
    #啓動服務器
    $ hexo server
    #部署網站
    $ hexo deploy
    #生成完成後部署
    hexo g -d
    #清除緩存文件 (db.json) 和已生成的靜態文件 (public)
    $ hexo clean
    複製代碼

Next主題

  1. 下載使用 進入以前建好的博客文件夾根目錄,打開Git Bash,使用git命令進行Next源代碼下載:

    $ git clone https://github.com/iissnan/hexo-theme-next themes/next
    複製代碼

    Git怎麼使用子模塊? 經過在 git submodule add 命令後面加上想要跟蹤的項目 URL 來添加新的子模塊:

    git submodule add https://github.com/iissnan/hexo-theme-next themes/next
    #查看
    cat .gitmodules
    #保持更新
    git submodule update --init --recursive
    複製代碼
  2. 配置使用 關於Next主題的配置使用,直接看官網就好。

Hexo本地配置

  1. 主題配置 打開站點配置文件_config.yml,位於跟目錄下,能夠選擇使用Next做爲主題,參照官網進行配置就好。

  2. 部署配置 部署其實就是怎麼把生成的靜態網站上傳到服務器端,把部署方式和地址說明一下,我這裏採用的是本身搭建的git服務器,也能夠是github(那就要在github上新建 blogname-github-io 倉庫)

    deploy: 
    type: git
    repo: git@你的服務器IP:/home/git/blog.git
    branch: master
    複製代碼

VPS搭建Hexo博客

做爲本身搭建服務器來講,這部分是重點了。

  1. 什麼是vps? VPS(Virtual Private Server 虛擬專用服務器)技術,將一臺服務器分割成多個虛擬專享服務器的優質服務。好比搬瓦工VPS是一款性價比較高的便宜VPS主機,且適合入門級網友學習Linux、建站和軟件調試用途。搬瓦工VPS目前有洛杉磯MC、洛杉磯QN、鳳凰城、佛羅里達、荷蘭這8個數據中心,對中文速度較好的是洛杉磯和鳳凰城。

  2. 基本原理 在服務器上搭建一個Git倉庫。在本地Hexo執行deploy後,博客文件會被push到這個Git倉庫,而後這個倉庫又會經過一個git-hooks的功能把文件同步到VPS的網站根目錄,通過Nginx代理服務把網站展示給用戶。參考下圖

    image

  3. Git服務器設置 在.git/hooks文件夾中建立一個鉤子文件:post-receive,注意沒有後綴.sample,這樣每當git倉庫接收到內容的時候,就會自動調用這個鉤子,把內容同步到網站根目錄。須要修改post-receive權限使其可執行,chown git:git -R post-update/chmod +x post-update。

    image
    debug須要注意的地方,實際問題經過git push origin master返回log查看便可。

  4. Nginx設置 web服務器選擇Nginx,Nginx與Apache比較,有以下優勢:

    • Nginx輕量級,佔用資源少,負載均衡,高併發處理強,靜態內容處理高效。
    • Apache擁有豐富的模塊組件支持,穩定性強,BUG少,動態內容處理強。

    常見命令:

    #安裝Nginx
    yum install -y nginx
    #啓動Nginx服務
    service nginx start
    #測試Nginx配置文件
    nginx -t
    複製代碼

    重點說一下Nginx的配置部分

    #配置以前備份一下
    cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
    #修改默認端口號
    vi /etc/nginx/conf.d/default.conf
    #修改配置文件
    vim /etc/nginx/nginx.conf
    複製代碼

    image

    這樣配置好後就能夠經過 http://vps服務器地址:端口號 來訪問站點了。

域名解析

最後一步,也是最難理解的一步,將服務器地址解析到域名。首先得買一個域名,經過一些相關的設定後,之後直接經過訪問域名來訪問站點了。

  1. 概念解讀 須要瞭解一些常識,什麼叫DNS? DNS(域名系統)是一個龐大的服務器網絡,包含地球上最大的數字數據庫。該數據庫由多個互聯網機構維護,管理和監管,包括IANA(互聯網號碼分配機構)和ICANN(互聯網名稱與數字地址分配機構)。 DNS是互聯網的中央數據庫,若是沒有它,互聯網將不會像如今同樣存在。 它通常處理的數據包括:

    • 名字(name):指的是域名
    • 資源(resource):包括A(主機地址,通常就是主機的IP)、NS(域名服務器記錄(Name Server),返回保存下一級域名信息的服務器地址。該記錄只能設置爲域名,不能設置爲IP地址。)、CNAME(規範名稱記錄(Canonical Name),返回另外一個域名,即當前查詢的域名是另外一個域名的跳轉)、MX(郵件記錄(Mail eXchange),返回接收電子郵件的服務器地址)、TXT(任意字符串)等等。

    基本處理原理見下圖,下面會結合具體例子進行解讀:

    image

    另外處理數據裏面包含的NS指的是什麼呢?它是名稱服務器,是安裝有DNS軟件的Web服務器,特別是由Web主機管理的服務器,該主機專門用於管理與全部主機提供商的賬戶關聯的域名。

  2. dnspot設置 使用dnspos進行設定,註冊帳號就能夠,這就是一個dns服務器,在國內,解析的比較快,設定以下:

    image
    因爲我是用godaddy購買的域名,還要在godaddy裏面告訴它我使用了第三方的dns服務器,不使用dodaddy自帶的了,由於自帶的服務器在國外,解析確定會慢些。
    image

  3. 深扒dns 可能你仍是不理解什麼叫dns,它是怎麼工做的?咱們使用dig工具來深刻解讀一下域名nephen.cn是怎麼解析出它具體的服務器地址的? 若是你使用的是linux系統,自己就自帶了dig命令,若是是windows系統,使用網頁版工具diggui就行了。 輸入以下:

    image
    得出輸出結果:
    image
    再一一解讀一下:

  • 計算機查找相應IP地址的第一個位置是其本地DNS緩存,該緩存存儲計算機最近檢索到的信息,若是沒有則進行DNS檢索查詢。
  • dig問8.8.8.8:根區域的名稱服務器是什麼? 8.8.8.8回覆:名稱服務器爲a.root-servers.net... dig隨機挑選了k.root-servers.net並解析爲193.0.14.129,端口號爲53
  • dig問193.0.14.129:nephen.cn的地址是多少? 193.0.14.129回覆:我不知道,你能夠問下cn.名稱服務器,他們是a.dns.cn. ... f.dns.cn. dig隨機選擇了e.dns.cn,解析地址爲203.119.29.1,端口號爲53
  • dig問203.119.29.1:nephen.cn的地址是多少? 203.119.29.1回覆:我不知道,能夠問下nephen.cn名稱服務器,他們是f1g1ns1.dnspod.net.,f1g1ns2.dnspod.net. dig隨機選擇了f1g1ns1.dnspod.net,解析地址爲58.247.212.36,端口號爲53
  • dig問58.247.212.36:nephen.cn的地址是多少? 58.247.212.36回覆:23.106.149.209 若是使用的是nephen.github.io託管網頁,那這裏會回答爲CNAME爲nephen.github.io,從新進行遞歸查找真正的地址
  • 遞歸服務器8.8.8.8從權威名稱服務器檢索dyn.com的A記錄,並將記錄存儲在其本地緩存中,緩存TTL時間更新一次。 若是有其餘人請求nephen.cn的主機記錄,遞歸服務器將已經有了答案,不須要再次進行查找過程 DNS解析器在查詢DNS服務器以前始終檢查本地緩存,包括當前DNS解析器緩存內容和從Hosts文件預加載的條目 相關命令:C:> ipconfig /displaydns、C:> ipconfig /flushdns
  • 遞歸服務器會將A記錄返回給您的計算機。您的計算機將記錄存儲在其緩存中,從記錄中讀取IP地址,而後將此信息傳遞給您的瀏覽器。

固然windows也有自帶的nslookup能夠查詢,直接就能查出解析後的地址,其中208.67.222.222爲手動選擇的遞歸服務器,跟上面例子中的8.8.8.8是一個性質的。

image

還可使用一些別的網絡工具,隨便推薦幾個:

以上就是建站的整個過程,夾雜了一些對問題的思考,但願對你有所啓發,每個技術問題背後其實有不少東西須要弄明白的,當咱們搞清楚之後內心纔會以爲更加踏實,從另外一個層面來說,弄清楚了底層的技術原理,對出現問題也能更加快速的定位,對出現新的技術也能舉一反三。

相關文章
相關標籤/搜索