如何優雅地發佈Hexo博客

次優雅的發佈hexo博客方式,爲何說是次優雅,由於它是目前我本身所知道的比較優雅的發佈方式,可能存在其餘更好的方式,歡迎指教~
轉載請註明出處: http://blog.lzoro.com,謝謝~

前言

就目前而言,我所知道的發佈Hexo的博客有以下幾種:
一、原始方式,也就是在服務器上編寫md文件,而後利用hexo g來生成;
二、利用github+hook來管理,小鍋這裏有一篇教程
三、其餘(hexo-admin or other plugins);
我所用的這個方式就屬於第三種,略微改進版。也許你已經看過[那麼能夠概覽以後忽略],也許你沒看過,那麼請耐心看完,反正都點進來了,也許有福利呢,who knows...
html

環境說明

格子這裏所使用的環境以下:node

一、阿里雲 Linux 3.10.0-514.6.2.el7.x86_64
二、NodeJs 6.10.3
三、Hexo-cli: 1.0.2
四、Hexo 3.3.7
五、Hexo-admin 
六、Nginx1.9.9

本篇博客的重點在於Hexo博客的優雅發佈,因此其餘必需環境的安裝大部分會簡短帶過。若是還未安裝過相關環境或者不會安裝相關環境的請自行百度,網上有特別豐富的教程資料,這裏只給出部分連接供參考。nginx

重要說明:格子未直接使用hexo server啓動hexo服務來對外提供博客的訪問,而是經過nginx做爲web服務器對外提供服務。git

NodeJs

下載地址github

http://nodejs.cn/download/

安裝
請參考這裏,注意本身選擇的安裝包。web

Hexo

官網shell

https://hexo.io/

安裝
請參考這裏。須要注意的是,格子這裏是將環境搭建在阿里雲機器上,並非經過GitHub託管,畢竟用GitHub的子域名感受不夠高大上,畢竟裝(chui)比(niu)要裝一整套的。因此我就花重金買了域名,買了雲主機,買了oss,這樣裝備齊全以後,感受逼格都提升了。

另:安裝完博客以後,有不少主題可供挑選,點擊這裏,找到本身喜歡的主題,並給hexo換上,舒舒服服地來一發吧。npm

Hexo-admin

主角登場了,前面也有提到過,管理Hexo博客,我所知道的有幾種方式。用手動管理的方式未免顯得太過於原始人,即使你用本地的Markdown編輯器洋洋灑灑地寫完了一篇博客,仍是得屁顛屁顛地鏈接到服務器,而後將文件上傳到博客服務器,再而後諂媚地告訴服務器,乖,幫我執行一下hexo g,命令執行完,靜態頁面生成後一篇博客才叫告一段落。
也許你不嫌麻煩,以爲這樣也挺好的,沒那麼多屁事兒折騰,那麼就堅持本身的作法也何嘗不可。
可是,若是你跟我同樣嫌(tai)麻(lan)煩(le)的話,那麼利用Hexo-admin插件,加上本身部分diy,也許一個本身比較滿意的Hexo博客發佈方式就到手了,豈不是一大爽事。swift

就是這個feel~倍兒爽

反正我就是懶,不要拉我,讓我懶。其實有時候這種「懶」每每能促令人進步,若是不嫌麻煩甘於重複勞動,雖然會少掉不少折騰,但也會少掉不少發現和進步。
好了,雞湯喝完,該說正事兒了。vim

hexo-admin官網
https://jaredforsyth.com/hexo...

step 1

安裝必要環境,請參照上面

step 2

初始化博客,通常到這裏你應該是已經初始化本身的博客了,若是尚未的話,請看下面

cd /usr/local/
hexo init yourblog
cd yourblog
npm install

step 3

安裝hexo-admin插件,而且啓動hexo服務,打開瀏覽器訪問能看到基本的界面

npm install --save hexo-admin
hexo server -d
open http://localhost:4000/admin/

登陸界面

到這裏,沒進行配置的小夥伴可能還沒法登陸,請接着往下看。

step 4

在hexo的_config.yml配置hexo-admin

admin:
   username: zoro
   password_hash:be121740bf988b2225a313fa1f107ca1
   secret: hey hexo
   deployCommand: './admin_script/hexo-generate.sh'
  # expire: 60*1


一、password_hash就是密碼,經過bcrypt hash,你能夠用盡你一切手段對本身的密碼作一個bcrypt加密,C/Java/Python均可以,作人嘛,重要的是嗨森;
二、secret用以cookies安全;
三、deployCommand就是一個關鍵點,不要着急,下面給出說明;

主頁

  • Post:博客文章列表,包括已經發布的和還在草稿箱等待寵幸的;
  • Pages:就是諸如標籤雲之類的頁面管理;
  • About:關於admin插件的說明
  • hexo-gen:這個原來是Deploy,被我修改了,關鍵節點;
  • Settings:配置;

step 5

先解釋一下上面配置的那個deployCommand的用處,目的在於頁面上你點擊了Deploy頁面下面的Deploy按鈕的時候,所執行的腳本,這裏格子拿它來做爲執行hexo g的載體。
說到這裏,可能有些人不是很理解爲何要這麼作,看官莫急,聽我細細道來。
其實,當你以hexo server -d啓動了hexo服務的時候,hexo-admin插件在你修改了 某篇博已發佈博客,或者新發布博客的時候,會在後臺幫你執行一系列操做,因此這個時候,你能夠經過http://localhost:4000訪問就能夠看到剛纔發佈到博客了,看到這裏,有讀者應該就要內心問候格子聲:那你是否是傻,爲何還要折騰?容我說一句,緣由只有一點:以hexo server啓動的hexo對外提供的服務,並非特別穩定,訪問略慢,畢竟不是專門的web服務容器,並且若是你不以nohup方式啓動的話,一旦關掉Xshell等操做界面的時候,就會被迫關掉,因此帶來了一系列使人不喜的體驗,這就是我折騰的惟一緣由。
所以,其實格子是以Nginx爲web服務容器對外提供博客服務,每次將新博客生成靜態Html放到Nginx配置的目錄下,速度不要太快;格子的雲主機只有1G內存 單核CPU,仍是能有不俗的訪問體驗,因此以爲還算沒白折騰。
有點走題,話說回來,大致的步驟是這樣:
一、Nginx提供web服務
二、hexo-admin提供博客管理
三、利用hexo-admin在瀏覽器實現博客編寫,或者本身本地md編輯器寫好以後粘貼到hexo-admin,後者可能更爲保險,防止丟失。
四、利用hexo-admin留下來的deploy按鈕,去執行咱們放在博客服務器上的腳本,來生成html頁面;

因此,重點來了,在_config.yml裏面填寫好deployCommand的存儲路徑以後,在該路徑下生成腳本;

touch hexo-generate.sh;
vim hexo-generate.sh;

輸入如下內容

#!/usr/bin/env sh
hexo g

保存退出,並賦予執行權限

執行Shift+:,輸入q,以下
:q
chmod +x hexo-generate.sh

step 6

驗證效果,這裏我沒有貼出Nginx的配置,稍等給出,能夠先行驗證是否有效果
一、啓動hexo server
二、訪問http://localhost:4000/admin並登錄
三、進入Posts頁面,新建博客並編寫發佈;
四、進入Deploy頁面(若是你還沒改掉更名稱的話),點擊下面的Deploy按鈕
五、進入博客目錄->public,查看相應的html是否有生成,若是有,那麼恭喜你成功了。

這裏有兩個問題:
①、hexo-admin的做者將hexo-admin的服務依賴於hexo來運行[hexo s],我的以爲有點浪費資源,但有礙於沒時間,只好暫時將就這樣。有興趣的人,能夠去閱讀源碼,而後將hexo-admin處理成獨立的服務。
②、Deploy頁面的功能其實被咱們diy成hexo generate的執行者了,因此有強迫症的小夥伴能夠將頁面內容改爲具體含義的,好比格子改爲了hexo-gen,修改路徑在hexo目錄下,node_modules/hexo-admin/www/bundle.js
差很少就是這樣,忽然以爲有點沒頭沒尾,由於沒有講Nginx部分,下面給出,這樣你們應該不會以爲特別亂;

Nginx

下載
http://nginx.org/en/download....
安裝
請搜索網上安裝教程,特別多,這裏不作重複勞動了。若是有什麼問題能夠留言指出。
配置

server {
        listen 80;
        #域名,多個用空格隔開
        server_name lzoro.com blog.lzoro.com;
        #配置hexo博客目錄
        root /usr/local/hexo/public;
        location / {
                index  index.html index.htm;
        }
        access_log /tmp/logs/nginx/hexo.access.log;
    }

啓動nginx,訪問本身的域名http://blog.lzoro.com,若是沒出問題的狀況下,會出現本身的博客,而後能夠看到各篇博客的狀況。

小結

發佈Hexo博客的方式有好幾種,每一個人的喜愛不同,因此也無關優劣。
格子這裏帶來的方式是利用Nginx做爲web容器,利用Hexo-admin做爲web後臺管理來管理hexo博客,而後經過hexo-admin留下來的腳本執行按鈕執行hexo g生成博客靜態頁面,至關於,你只須要一個瀏覽器,無需遠程鏈接博客服務器,就能夠輕鬆發佈本身的博客了。
若是文章對你幫助,無妨留個言讓格子知道唄。

相關文章
相關標籤/搜索