1. 程式人生 > >install Hexo on debian9.6

install Hexo on debian9.6

前言

自從上次,被同事責備了一次寫部落格(將思路帶出來了)的事情,馬上就有動手搭本地部落格的念頭. 那樣,技術筆記隨時隨地都可以寫,都可以歸檔了,自己查閱技術筆記的效果也符合平時看資料的習慣。

雖然現在公網上的部落格平臺,都有私密部落格這個設定,但是部落格裡面帶的附件(圖片 )和demo工程都是沒法私密的。e.g. csdn 人家現在下載頻道的下載權都是要賣錢的,怎麼會新增私密附件這種功能呢。

想在本地伺服器上搭建一個輕量(不要裝資料庫的那種,以後好遷移本地部落格資料到其他新硬碟或備份資料),私人化(不需要自動釋出到公網, 不需要買公網伺服器,不需要託管到第三方),安裝部署簡單的部落格,去網上查資料,看來看去,還是Hexo符合需求。

實驗

環境

本地伺服器 : dell t430 + debian9.6

官方文件

https://hexo.io/zh-cn/docs/

安裝nodejs

apt-get update
[email protected]:~# apt search nodejs | grep nodejs

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

  Pluggable transport to circumvent IP address blocking - nodejs proxy
  unobtrusive notification system for nodejs
nodejs/stable 4.8.2~dfsg-1 amd64
nodejs-dbg/stable 4.8.2~dfsg-1 amd64
nodejs-dev/stable 4.8.2~dfsg-1 amd64
nodejs-legacy/stable 4.8.2~dfsg-1 all
apt-get install nodejs

安裝git

apt-get install git

驗證git是否已經安裝


[email protected]:~# git --version
git version 2.11.0

安裝nvm

cd /home/soft_install
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
...
=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

檢視nvm啟動的指令碼

[email protected]:~# cat /root/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.

# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022

# You may uncomment the following lines if you want `ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "`dircolors`"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

安裝nodejs

重新克隆一個終端,用root身份登入,就可以使用nvm命令了

nvm install stable
如果上面這句下載時,卡住了,殺死再來一次。可以另外開一個控制檯,執行 wget https://nodejs.org/dist/v11.4.0/node-v11.4.0-linux-x64.tar.xz 看看是不是網路問題。

驗證nodejs是否已經安裝

[email protected]:/home/lostspeed/my_blog# node -v
v11.4.0

使用 npm 安裝 Hexo

安裝hexo命令列介面

npm install -g hexo-cli

初始化本地部落格

cd /home/lostspeed/my_blog
hexo init /home/lostspeed/my_blog

[email protected]:/home/lostspeed/my_blog# ls -l
總用量 168
-rw-r--r--   1 root root   1765 12月 15 22:44 _config.yml // 配置檔案
drwxr-xr-x 286 root root  12288 12月 15 22:46 node_modules
-rw-r--r--   1 root root    443 12月 15 22:44 package.json // 應用程式資訊
-rw-r--r--   1 root root 137055 12月 15 22:46 package-lock.json
drwxr-xr-x   2 root root   4096 12月 15 22:44 scaffolds // 模板目錄
drwxr-xr-x   3 root root   4096 12月 15 22:44 source // 使用者資源
drwxr-xr-x   3 root root   4096 12月 15 22:44 themes // 主題

安裝其他依賴包

有可能初始化部落格目錄時,有錯誤發生,需要進入部落格目錄,再安裝其他依賴包.

cd /home/lostspeed/my_blog
npm install

生成部落格本地站點

hexo g

生成/home/lostspeed/my_blog/public
public目錄是生成的本地部落格網站資料

啟動部落格服務

啟動部落格服務後,就可以在區域網內的其他開發機上,訪問剛剛建立的新本地部落格。

[email protected]:/home/lostspeed/my_blog# hexo s
INFO  Start processing
INFO  Hexo is running at http://localhost:4000 . Press Ctrl+C to stop.

服務啟動後,指出部落格埠為4000

這個部落格服務在控制檯上啟動時是前臺的,關了SecureCRT控制檯就沒有了。要保持控制檯開著,可以新啟動控制檯去做其他任務。

從其他計算機的瀏覽器上訪問自己的本地部落格

在瀏覽器上輸入網址 http://192.168.2.222:4000/
可以看到本地部落格可以訪問了,後續寫新部落格的說明,在本地部落格站點上也有說明.

在這裡插入圖片描述

配置檔案

配置檔名 = _config.yml
不同資源都有配置檔案,在不同的資源目錄裡面

[email protected]:/home/lostspeed/my_blog# pwd
/home/lostspeed/my_blog
[email protected]:/home/lostspeed/my_blog# find . -name _config.yml 
./node_modules/hexo/node_modules/hexo-cli/assets/themes/landscape/_config.yml
./node_modules/hexo/node_modules/hexo-cli/assets/_config.yml
./themes/landscape/_config.yml
./_config.yml

寫新本地部落格文章

命令

hexo new "新部落格文章標題"

e.g.

[email protected]:/home/lostspeed/my_blog# hexo new "my first local blog test"
INFO  Created: /home/lostspeed/my_blog/source/_posts/my-first-local-blog-test.md

編輯文章

直接編譯md檔案,這步,可以用winscp將.md下載下來,在windows上用圖形化的md工具來編輯,e.g. Visual Studio Code, 寫完再回傳到伺服器的文章位置。hexo g, hexo s, http://192.168.2.222:4000/, 就能看到更新的部落格內容了

markdown模板


title: my first local blog test by hexo
date: 2018-12-16 15:13:00
categories:
- markdown
tags:
- markdown
- template

確認被hexo編譯的markdown語法是否正確或被支援
hexo g
如果markdown語法不對, 會報錯。如果語法不被支援(但是為標準的markdown語法,不報錯)

這是大標題

如果是控制標記, e.g. —, #, *, 都要在第0列來寫, 寫完後要空一格,才能寫內容

中文行不行? 可以

/home/lostspeed/my_blog/ 是本地部落格站點的根目錄
/home/lostspeed/my_blog/source/my_img 作為影象目錄,路徑為/my_img
就是說影象的相對位置是先對於/home/lostspeed/my_blog/source/ 的

在部落格中要顯示圖片時,指定的圖片位置為/my_img/x.png

部落格中引起相對路徑的影象
部落格中引起相對路徑的影象
如果連結前有!, 說明這個連線是影象,要顯示出來
如果連結前沒有!, 說明這個連結只是一個普通的連結

插入連結: [連線的名稱](real url)
e.g. csdn主站

這是2級標題

是幾級標題就加幾個#開頭, 空1格,標題名稱 e.g. ##### 這是5級標題

清除無用tag和categories

這是指令碼程式碼
` 這個標記好奇怪,鍵盤上找不到...
hexo clean
hexo d -g

標記程式碼塊用成對的 來標記 標記時,第一個空1格,後面為程式碼塊的種類 e.g. c, c++, java, asm

這是c程式碼
int main(int argc, char** argv)
{
    return EXIT_SUCCESS;
}
這是c++程式碼
class cls_test
{
    public:
        cls_test() {}
        virtual ~cls_test() {}

        void inc_cnt() {m_cnt++;}
        int get_cnt() {return m_cnt;}

    private:
        int m_cnt; // 計數
}
這是java程式碼
private int bit4_to_hex_char(int in)
    {
    	if ((in >= 0) && (in <= 9)) {
    		in += '0';
    	} else if ((in >= 10) && (in <= 15)) {
    		in -= 0x0a;
    		in += 'A';
    	} else {
    		in = '.';
    	}
    	return in;
    }
這是彙編程式碼
    mov ecx, eax
    inc eax

如果要對程式碼塊顯示行數,在程式碼塊型別之後,加上 {.line-numbers}

這是c++程式碼
class cls_test
{
    public:
        cls_test() {}
        virtual ~cls_test() {}

        void inc_cnt() {m_cnt++;}
        int get_cnt() {return m_cnt;}

    private:
        int m_cnt; // 計數
}

列表以*打頭, 以tab鍵作為列表的層級縮排

  • 1級列表
    這是屬於1級列表的文字描述

    • 2級列表a
      這是屬於2級列表的文字描述

    • 2級列表b
      這是屬於2級列表的文字描述

      • 3級列表a
        這是屬於2級列表的文字描述

單選框
用 “- [x] 內容” 或 “- [ ] 內容” 表示

  • this is a complete item
  • this is an incomplete item

行內容的不同顯示效果, 成對的~~, *, **來圍住文字,符號和內容跟之間不能有空格
這是被刪除的文字
這是斜體的文字
這是粗體的文字

表格
表格有行合併和列合併的符號, 簡單用一下就好
列前後用|分隔,向上合併用^, 向右合併用>
hexo對錶格支援不好

列1 列2 列3
c1_1
c2_2
> c3_2
> c5_2
^

備註

在csdn上寫部落格,用到的markdown語法模板準備的差不多了,更高階的語法,以後再去查。