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級列表的文字描述
- 3級列表a
-
單選框
用 “- [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語法模板準備的差不多了,更高階的語法,以後再去查。