于是,開搞!
期間踩了無數坑,百度和谷歌了無數次,軟件裝了又卸,卸了又裝,連服務器系統都重裝3次搭建的事前準備
- 一個獨立域名
- 一臺linux計算機,不管是自己的還是別人的(服務器空間)
購買域名
購買域名的目的是人別人更好的記住你的博客,雖然Hexo靜態博客不綁定自己的域名也可以通過Github分配給你的永久連接訪問,個人建議還是買一個獨立域名,說不定別人就被你與(diao)眾(zha)不(tian)同的域名吸引了呢~
域名首選以.com為后綴的,國際通用,簡單好用,如何購買請自行百度或谷歌“域名購買”或“域名注冊”,網上有非常多非常詳細的教程,這里就不敘述了。
購買服務器空間
由于Hexo博客是部署在Github的倉庫上的,可以不使用服務器,但是我這里的小水管基本等同于沒有,更重要的在我瘋狂百度時領到了一張tx的代金券,so...就買了tx的云服務器,還送了個一年的域名所以,不想增加開銷的可以跳過這步,使用自己的電腦搭建,但是需要用到Node.js,所以
不要使用Windows!!!
不要使用Windows!!!
不要使用Windows!!!
Windows版的Node.js根本就是殘疾版,別問我什么知道...回歸正題,服務器空間有一般有以下幾種
- 虛擬主機
- VPS
- 云主機
- 獨立服務器
想要了解各個的優缺點及差異,可以看看下面的介紹
虛擬主機、VPS和云服務器的特點與差異性? ———— 知乎
全面解析:虛擬主機、獨立服務器、VPS及云主機 ———— 億恩IDC資訊
我買的就是屬于云主機,多虧是云主機,讓我省了不少事。
還有,構架在大陸的且用于網站服務器的空間是一定要備案的,不想麻煩的話可以購買香港或國外的空間。但是這里我們并不是用于網站的服務器作用,只是將markdown解析成靜態html頁面,然后再部署到github倉庫上,所以并不需要備案。
服務器空間的選擇實在是太多了,個人也沒什么推薦,只知道亞馬遜AWS可以免費使用一年,其他的可自行百度或谷歌。
正式開始
接下來就正開始我們的Hexo博客搭建。
服務器設置
有了服務器之后需要對服務器進行一系列設置。
首先,重裝系統,一個合適的系統會讓你的操作更加得心應手。
選擇合適自己的操作系統,我選了Debian 9,因為習慣了了Ubuntu,apt-get
命令實在是太方便了。重裝系統后,root的密碼是不變的,這點謹記。
設置安全組,讓必要的端口暴露出來。tx的云主機為了安全,設置了安全組,只有在安全組之內的端口才能夠使用。
關于更多安全組的信息,請參見 幫助與文檔 ———— 騰訊云
遠程登錄服務器空間
一般使用SSH遠程登錄到服務器,Winows下常用的遠程登錄軟件有PuTTY和Xshell,前者為自由軟件,后者為商業軟件,可以根據自己的喜好選擇,這里選用Xshell作為介紹,PuTTY也是大同小異。
打開Xshell,新建會話
確定之后就可以使用可以空間商給你提供的賬號和密碼登錄了。
創建新用戶
一般來說,不建議使用root用戶來搭建Hexo博客,很有可能會發現不可預料的錯誤,甚至是只有你才會發生的問題,別人都沒有,百度和谷歌都找不到解決辦法。為了避免這些問題,我們需要一個不是root用戶但是有管理員權限的用戶。
在root用戶下,新建git用戶(用戶名可以自己取,但是要好記)
adduser git
修改系統文件權限
chmod 740 /etc/sudoers
使用Vim編輯器打開
vim /etc/sudoers
找到
# User privilege specification
root ALL=(ALL:ALL) ALL
在這下面添加一行
git ALL=(ALL) ALL
保存后退出,更改回原來的權限
chmod 400 /etc/sudoers
然后為你的新用戶設置密碼
passwd git
好了,一個有權限的用戶就新建完成了。
Hexo環境配置
切換git用戶,后面的操作都在git下進行,遇到需要權限的只需要在前面加上 sudo
就行
su git
安裝 Node.js 8
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
安裝 Git
sudo apt-get install git-all
Hexo安裝及初始化
安裝完上面的必要軟件后就可以安裝Hexo了。使用npm命令安裝Hexo。
sudo npm install -g hexo-cli
選擇初始化Hexo的目錄,一般目錄都會選擇自己的家目錄下。進入家目錄
cd ~
初始化Hexo,Hexo將會在指定目錄下新建所需要的文件,<folder>
即目錄名。
Hexo init <folder>
cd <folder>
sudo npm install
一般都會用 blog 作為目錄名,所以
Hexo init blog
cd blog
sudo npm install
新建完成后,blog的目錄結構如下
.
├── _config.yml
├── package.json
├── scaffolds
├── source
| ├── _drafts
| └── _posts
└── themes
如果你的目錄結構和上面示例的一樣,說明正確初始化了,如果發現目錄或文件不全,說明Hexo沒正確初始化,請刪除整個blog目錄重新初始化。
Hexo 博客預覽
要想本地預覽Hexo博客,必須安裝本地服務器。Hexo 3.0 把服務器獨立成了個別模塊,必須先安裝 hexo-server
才能使用。
cd blog
npm install hexo-server --save
注意,不加 --save
會安裝失敗!
啟動Hexo本地服務
hexo server
如果發現不能啟動服務,請返回上面仔細檢查安全組內是否有4000
端口,或者檢查端口是否打開了,或者檢查端口是否被其他程序占用!
啟動服務之后可以使用 http://localhost:4000 訪問你的Hexo靜態博客了。由于我們是在服務器空間上,所以把 localhost
換成 你空間的公網IP
就可以了。例如:http://192.168.0.1:4000
寫第一篇博文
博客已經成型,來寫第一篇自己的博文吧。使用下面的命令創建新的文章,這會生成一個Markdown文件,默認在 blog/sources/_posts
目錄下
hexo new "你好,Hexo"
使用Vim編輯它
vim /sources/_posts/你好,Hexo.md
然后使用下面的命令生成靜態文件
hexo generate
當然,是可以簡寫的
hexo g
啟動服務
hexo server
在瀏覽器輸入地址,就可以看到自己寫的文章啦~
配置Github
接下來,要將Hexo部署到Guthub倉庫上,讓別人也可以訪問你的博客,成為一個真正的網站。首先,需要進行配置。
- 注冊Github賬號
打開Github,申請一個賬號,有賬號的就可以跳過啦~
- 新建倉庫
注冊完成后登錄Github,點擊右上角的"+",d點擊"New repository"
進去后,填寫格式如下,把 yourusername
替換成的你用戶名。
注意:格式一定是要是 yourusername.github.io
不然后面的步驟會報錯!!!
- 告訴Git你是誰
要想部署到Github,Git必須先知道你是誰。
git config --global user.name"你的Github用戶名"
git config --global user.email"你注冊Github時填的郵箱"
- 設置部署路徑
進入blog目錄,編輯配置文件_config.yml
cd blog
vim _config.yml
拉到最后,找到 deploy:
,修改如下,把 youruesername
替換成你的Githu用戶名
deploy:
type: git
repo: https://github.com/yourusername/yourusername.github.io.git
branch: master
注意:配置文件中的內容,":"后面都有個空格,不能省略,不然會報錯!!!
部署到Github
開始正式將Hexo部署到Github,完成這一步,一個真正的博客網站就搭建好了。
清除緩存文件和已生成的靜態文件
hexo clean
生成靜態文件
hexo generate
部署到Github
hexo deploy
合并簡寫
hexo d -g
或者
hexo g -d
這兩個命令都是可以的。然后會提示你輸入你的Github賬號和密碼,輸入后沒有任何報錯,就證明部署好了。接下來在瀏覽器輸入Github給你供的永久連接http://yourusername.github.io就能進入你的博客啦~~這個連接除非Github服務器出問題了,不然是永久有效的。
不容易啊!快要淚流滿面的對不對?我當初建好的時候可是大叫了出來,旁邊的人看我眼神都不對了(瑪德,zz!)域名綁定
雖然可以通過上面的永久鏈接訪問你的博客,但是這一點都不個性化,也很繁瑣,讓你的博客有個自己獨立的域名,是十分必要的。
域名解析
進入你購買的域名的域名管理,選擇解析
然后點擊"添加記錄",會有提示
這里要說下,這里記錄類型有人填"A",也有人填"CNAME"。A類型就是填你的永久鏈接指向的IP地址,CANME類型就是直接填你的永久鏈接。但是,Github分配給你的IP地址有可能會改變,但是鏈接是不會變!個人建議還是填CNAME類型。這里就把兩種都敘述下。
- A 類型
使用 ping
命令獲得Github分配給你的ip地址
ping yourusername.github.io
例如:
我這里獲得的ip就是 151.101.77.147
添加兩條記錄,一條主機類型為"@",一條主機類型為"www"
- CNAME 類型
直接添加兩條記錄,同樣也是一條主機類型為"@",一條主機類型為"www"
好了,這樣記錄就添加完成。
然后修改DNS服務器,將DNS1,DNS2分別修改為
f1g1ns1.dnspod.net
f1g1ns2.dnspod.net
域名解析就完成了,解析的域名會在10分鐘甚至更長的時間內生效,請稍安勿躁。在等待的時候可先進行下面的操作。
添加CANME
如果,你的域名解析完成,這時候你在瀏覽器輸入你的域名想看看自己的博客,然而你會發現
并不能進入自己的博客。這時候還需要進行一步操作。
在blog/source
目錄下,新建一個文件CNAME
文件,注意:文件名大寫,沒有后綴!
cd blog/source/
vim CNAME
內容就是你的域名,注意:不用加 www
!
例如,我的域名
newkami.cn
然后更新到Gitub
hexo clean
hexo g -d
如果你的域名解析正常,就可以看的你的博客啦~如果顯示無法訪問此網站,則是你的域名還沒解析完成,請耐心等待,如果顯示的是Github 404界面,則是你的CNAME或其他的問題,請仔細檢查上面的步驟!
博客性能優化
作為一個強迫癥患者,看著自家的網站用著http協議被瀏覽器標識為"不安全",簡直不能再不爽了。想著我也去搞了個SSL證書,讓自己的博客支持HTTPS協議。突然發現tx竟然能免費申請SSL證書!大喜!
經過4-5天漫長的等待,證書終于審核好了
然后我就急忙著去配置了,結果提示
誒?咋就這么麻煩呢?!要接入那咱就接入吧,心想著,結果,來了這么一出
奈何Github倉庫并不能備案,這條路也就徹底斷了。在我快把百度和谷歌查爛的時候,發現了Cloudflare。
Cloudflare以向客戶提供網站安全管理、性能優化及相關的技術支持為主要業務。通過基于反向代理的內容傳遞網絡(ContentDeliveryNetwork,CDN)及分布式域名解析服務(DistributedDomainNameServer),Cloudflare可以幫助受保護站點抵御包括拒絕服務攻擊(DenialofService)在內的大多數網絡攻擊,確保該網站長期在線,同時提升網站的性能、訪問速度以改善訪客體驗。
以上摘自百度百科。
于是,我就著手把域名接入了Cloudflare。
- 注冊Cloudflare
進入Cloudflare,注冊一個賬號
- 解析域名
注冊完成后,填寫你的域名,讓Cloudflare去解析
- 跟改DNS服務器
然后,Cloudflare會要求你修改DNS,讓你的網站的請求流至Cloudflare。進入你的域名管理,把DNS服務器修改成Cloudflare提供的DNS,當看到
你的域名就成功接入Cloudflare了。
- 開啟https
在上面的功能區里,選擇"加密"
將"總是使用HTTPS"設為開啟
至此,你的網站就成功開啟了https了,進入你的網站瀏覽器是這樣顯示的
怎么樣?看見有個小綠鎖是不是有種安心的感覺呢?
寫在后面
從開始寫到現在,過了好幾天了,期間因為其他的事,寫寫停停,總算寫完了。如果這篇文章哪怕有幫到你一點點,也算有意義了。
第一次寫教程,如有錯誤,請斧正!
參考資料
通過包管理器安裝Node.js
入門 - 安裝Git
Hexo文檔
博客從WordPress遷移到Hexo
歡迎轉載,轉載請注明出處:https://newkami.cn/2017/09/13/re-build-blog/