博客使用靜態網站生成技術生成,靜態網站生成是指靜態生成網站的過程,即生成HTML文件,例如,在本地計算機中,而後將網站文件上載到服務器,該服務器在被請求時向用戶提供服務。相比動態網站,有如下優勢:html
目前網上主流的靜態站點生成器有三個,分別爲Jekyll、Hugo、Hexo。linux
其中Jekyll由Github用Ruby語言構建,您能夠無償使用Github Pages來託管您的靜態網站,並使用CNAME文件輕鬆將其與您的自定義頂級域名連接。 它的主要弱點爲隨着網站內容的增加,構建過程變得很是慢。nginx
另外,Hugo是一個用Go構建的靜態站點生成器。它被宣傳爲「世界上最快的網站構建框架」。它最近與Jekyll相比,但在人氣方面迅速增加。 它的主要缺點爲可擴展性差和插件少。git
而Hexo是基於Node的開源靜態生成器,可在MIT許可下使用。藉助Node.js平臺,Hexo容許您在幾秒鐘內生成數百個靜態文件。 主要有如下優勢:github
並且它的缺點是:Hexo有一個相對較大的社區,但大多數是非英語人士(來自中國),這個缺點從咱們的角度來看就是優勢啊。web
根據以上分析,我採用的整體方案爲:採用Hexo進行博客建立,其中使用Next主題進行配置,將生成的博客靜態網站部署在本身搭建的vps服務器上,最後採用dnspot對域名進行解析。具體細節見下文。數據庫
安裝 參照https://hexo.io/zh-cn/docs/ 網站,主要包括Node.js、Hexo和Git安裝,Node.js、Git能夠直接下載安裝包安裝,Hexo能夠在Git Bash命令行裏面安裝:npm
$ npm install -g hexo-cli
複製代碼
建站 環境搭建好後就能夠開始建站了,一樣在Git Bash裏面輸入命令行進行:json
$ hexo init <folder>
$ cd <folder>
$ npm install hexo --save
複製代碼
其中folder爲你要創建的博客的文件夾。vim
相關命令 站點創建好後,就能夠開始寫文章了,可使用sublime編輯軟件打開剛剛建好的folder博客文件夾,找到source/_posts目錄即爲要寫的文章地址。 涉及到的一些命令以下:
#新建文章
$ hexo new [layout] <title>
#生成靜態文件
$ hexo generate
#啓動服務器
$ hexo server
#部署網站
$ hexo deploy
#生成完成後部署
hexo g -d
#清除緩存文件 (db.json) 和已生成的靜態文件 (public)
$ hexo clean
複製代碼
下載使用 進入以前建好的博客文件夾根目錄,打開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
複製代碼
配置使用 關於Next主題的配置使用,直接看官網就好。
主題配置 打開站點配置文件_config.yml,位於跟目錄下,能夠選擇使用Next做爲主題,參照官網進行配置就好。
部署配置 部署其實就是怎麼把生成的靜態網站上傳到服務器端,把部署方式和地址說明一下,我這裏採用的是本身搭建的git服務器,也能夠是github(那就要在github上新建 blogname-github-io 倉庫)
deploy:
type: git
repo: git@你的服務器IP:/home/git/blog.git
branch: master
複製代碼
做爲本身搭建服務器來講,這部分是重點了。
什麼是vps? VPS(Virtual Private Server 虛擬專用服務器)技術,將一臺服務器分割成多個虛擬專享服務器的優質服務。好比搬瓦工VPS是一款性價比較高的便宜VPS主機,且適合入門級網友學習Linux、建站和軟件調試用途。搬瓦工VPS目前有洛杉磯MC、洛杉磯QN、鳳凰城、佛羅里達、荷蘭這8個數據中心,對中文速度較好的是洛杉磯和鳳凰城。
基本原理 在服務器上搭建一個Git倉庫。在本地Hexo執行deploy後,博客文件會被push到這個Git倉庫,而後這個倉庫又會經過一個git-hooks的功能把文件同步到VPS的網站根目錄,通過Nginx代理服務把網站展示給用戶。參考下圖
Git服務器設置 在.git/hooks文件夾中建立一個鉤子文件:post-receive,注意沒有後綴.sample,這樣每當git倉庫接收到內容的時候,就會自動調用這個鉤子,把內容同步到網站根目錄。須要修改post-receive權限使其可執行,chown git:git -R post-update/chmod +x post-update。
debug須要注意的地方,實際問題經過git push origin master返回log查看便可。Nginx設置 web服務器選擇Nginx,Nginx與Apache比較,有以下優勢:
常見命令:
#安裝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
複製代碼
這樣配置好後就能夠經過 http://vps服務器地址:端口號 來訪問站點了。
最後一步,也是最難理解的一步,將服務器地址解析到域名。首先得買一個域名,經過一些相關的設定後,之後直接經過訪問域名來訪問站點了。
概念解讀 須要瞭解一些常識,什麼叫DNS? DNS(域名系統)是一個龐大的服務器網絡,包含地球上最大的數字數據庫。該數據庫由多個互聯網機構維護,管理和監管,包括IANA(互聯網號碼分配機構)和ICANN(互聯網名稱與數字地址分配機構)。 DNS是互聯網的中央數據庫,若是沒有它,互聯網將不會像如今同樣存在。 它通常處理的數據包括:
基本處理原理見下圖,下面會結合具體例子進行解讀:
另外處理數據裏面包含的NS指的是什麼呢?它是名稱服務器,是安裝有DNS軟件的Web服務器,特別是由Web主機管理的服務器,該主機專門用於管理與全部主機提供商的賬戶關聯的域名。
dnspot設置 使用dnspos進行設定,註冊帳號就能夠,這就是一個dns服務器,在國內,解析的比較快,設定以下:
因爲我是用godaddy購買的域名,還要在godaddy裏面告訴它我使用了第三方的dns服務器,不使用dodaddy自帶的了,由於自帶的服務器在國外,解析確定會慢些。深扒dns 可能你仍是不理解什麼叫dns,它是怎麼工做的?咱們使用dig工具來深刻解讀一下域名nephen.cn是怎麼解析出它具體的服務器地址的? 若是你使用的是linux系統,自己就自帶了dig命令,若是是windows系統,使用網頁版工具diggui就行了。 輸入以下:
得出輸出結果: 再一一解讀一下:23.106.149.209
若是使用的是nephen.github.io託管網頁,那這裏會回答爲CNAME爲nephen.github.io,從新進行遞歸查找真正的地址固然windows也有自帶的nslookup能夠查詢,直接就能查出解析後的地址,其中208.67.222.222爲手動選擇的遞歸服務器,跟上面例子中的8.8.8.8是一個性質的。
還可使用一些別的網絡工具,隨便推薦幾個:
以上就是建站的整個過程,夾雜了一些對問題的思考,但願對你有所啓發,每個技術問題背後其實有不少東西須要弄明白的,當咱們搞清楚之後內心纔會以爲更加踏實,從另外一個層面來說,弄清楚了底層的技術原理,對出現問題也能更加快速的定位,對出現新的技術也能舉一反三。