配置hexo博客,讓云服務(wù)器執(zhí)行它計算處理的使命

原文鏈接:https://www.bigademo.com/2017/03/28/%E9%85%8D%E7%BD%AEhexo%E5%8D%9A%E5%AE%A2%EF%BC%8C%E8%AE%A9%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%89%A7%E8%A1%8C%E5%AE%83%E8%AE%A1%E7%AE%97%E5%A4%84%E7%90%86%E7%9A%84%E4%BD%BF%E5%91%BD/index.html

由來:之前使用過一段時間的hexo,但是每回提交文章的時候,就在本地的電腦上執(zhí)行一段時間,雖然不多,但是挺煩的。
靈感:無意之中,看到了云主機(jī)和VPS的區(qū)別這類的文章,忽然想到既然我的云主機(jī)有計算的能力,那為何我非得自己的電腦執(zhí)行一堆云主機(jī)也可以執(zhí)行的命令了,云主機(jī)我也是花了真金白銀的。讓云主機(jī)老閑著,我都感覺對不起自己,于是乎我重新整理了我的博客,讓云主機(jī)開始干那么一點(diǎn)點(diǎn)活。

基礎(chǔ):

使用過hexo博客的人都知道,hexo博客要使用hexo clean && hexo g && hexo d的命令將本地的MarkDown文件生成html的靜態(tài)文件,然后使用hexo d的命令推送到服務(wù)器。這里推薦一篇不錯的博客,用于將hexo的博客部署到自己的云主機(jī)上。https://www.micronbot.com/blog/8.html。

條件:

  • 新建一個用戶用于Git的推送和克隆
  • Git服務(wù)端
  • nvm 用于安裝node環(huán)境
  • hexo
  • pm2 用于維護(hù)hexo的進(jìn)程

這里以CentOS的為例

Step1:新建一個用戶用于Git的推送和克?。◤?qiáng)烈建議第一步執(zhí)行這個)

useradd git
passwd git
//建立git這個用戶的密碼
su git //切換到git用戶,執(zhí)行后面的操作。

后面的命令一定要在git用戶下操作,要么會導(dǎo)致git權(quán)限不夠的問題

Step2:配置Git服務(wù)端

執(zhí)行一句命令即可

yum install git 

等待一段時間以后,可以使用如下命令查看是否安裝成功。

git --version

Step3:安裝nvm 用于安裝node環(huán)境

Node Version Manager 這個nvm在github的官網(wǎng)

用于如下命令安裝nvm,當(dāng)然官網(wǎng)也提供了wget的安裝方式,請大家到NVM的官網(wǎng)自己去看吧。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash

同樣,可是使用nvm --version的命令查看nvm的安裝情況。

Step4:安裝NodeJS 用于安裝hexo環(huán)境

使用如下命令會安裝嘴最新版本的Node,當(dāng)然也可以安裝指定的版本。

nvm install node

同樣,使用node --version的命令查看Node的安裝情況。

Step5: 安裝hexo環(huán)境

安裝好Node的同時,也安裝NPM的這個管理器,我們使用npm的命令安裝hexo。HEXO官網(wǎng)

npm install hexo-cli -g

Step6: 安裝PM2用于維護(hù)hexo的進(jìn)程

推薦一個PM2的介紹文章PM2 介紹
使用如下命令安裝PM2

npm install pm2 -g

這樣的話,準(zhǔn)備工作完成了,接下來開始配置,首先說一個流程

  1. 配置裸倉庫
  2. 建立hexo博客訪問的目錄
  3. 新建app.js ,用于PM2維護(hù)hexo
  4. 使用端口轉(zhuǎn)發(fā)的命令,讓hexo博客默認(rèn)的4000端口轉(zhuǎn)到80端口
  5. 新建hooks,每當(dāng)git更新的時候,用于更新博客
  6. 修改git權(quán)限,禁止ssh登錄。

我這里將倉庫和訪問目錄全部放在git這個用戶的家目錄里/home/git/。

Step1: 配置裸倉庫

這里說一下裸倉庫和普通倉庫的區(qū)別,裸倉庫沒有工作區(qū),而普通倉庫有。普通倉庫不能提交,而裸倉庫可以。

git init --bare hexo.git

使用上面的命令建立一個裸倉庫,現(xiàn)在我們可以在本地克隆這個倉庫,也可以提交,但是由于沒有工作區(qū)我們不能直觀的看到提交的東西。我們可以使用這個命令來查看

git clone /home/git/blog/hexo.git /home/git/blog/hexo/

上面的命令是將hexo.git 克隆到/home/git/blog/hexo/,其實(shí)和我們克隆服務(wù)端的git一樣。那么克隆成功以后,我們就可以在/home/git/blog/hexo/這個目錄里看到我們提交的文件了,一會我們會在hooks里配置這個命令的。

Step2:配置Hexo博客(在本地電腦執(zhí)行)

當(dāng)我們在本地克隆下hexo.git的倉庫后,會有一個hexo的文件夾。那么我們就在這個文件夾里初始化hexo,建立hexo博客,然后提交到服務(wù)端。

hexo init 

建立好hexo的博客以后,我們在source/posts這個文件夾里新建一個MarkDown的文件,然后我們提交到服務(wù)器上,使用上之前提到的命令可以看到我們提交的東西。

Step3:新建app.js ,放在本地hexo的文件夾里,用于PM2維護(hù)hexo

我這個是在網(wǎng)上復(fù)制的

var spawn = require('child_process').spawn;

free = spawn('hexo', ['server', '-p 4000']);/* 其實(shí)就是等于執(zhí)行hexo server -p 4000*/

free.stdout.on('data', function (data) {

    console.log('standard output:\n' + data);

});

free.stderr.on('data', function (data) {

    console.log('standard error output:\n' + data);

});

free.on('exit', function (code, signal) {

    console.log('child process eixt ,exit:' + code);

});

Step4: 使用端口轉(zhuǎn)發(fā)的命令,讓hexo博客默認(rèn)的4000端口轉(zhuǎn)到80端口

因?yàn)?0端口只有root權(quán)限的用戶才能使用,而我們使用git這個用戶無法使用80端口,那么我們使用端口轉(zhuǎn)發(fā)的功能。大家可以看這個文章配置iptables,把80端口轉(zhuǎn)到8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 4000

Step5:新建hooks,每當(dāng)git更新的時候,用于更新博客

新建一個名叫post-receive的文件,這個文件放在/home/git/blog/hexo.git/hooks/文件夾里。

#!/bin/bash -l
GIT_REPO=/home/git/blog/hexo.git
PUBLIC_WWW=/home/git/blog/hexo
rm -rf ${PUBLIC_WWW}
git clone $GIT_REPO $PUBLIC_WWW
cd $PUBLIC_WWW
hexo clean && hexo g
pm2 delete all
pm2 start app.js
if [[ $? == 0 ]]
then
    echo "Congratulations! Your blog has been correctly deployed"
else
    echo "Unfortunately your blog has not been deployed correctly"
fi

這里講一下這個Shell腳本,

  1. GIT_REPO這個是上面建立的裸倉庫。
  2. PUBLIC_WWW這個是用于展示的目錄。
  3. 刪除展示目錄
  4. 克隆
  5. 切換到展示目錄
  6. 清除緩存,并生成新的靜態(tài)博客。
  7. pm2刪除所有運(yùn)行的進(jìn)程(這個只是為了維護(hù)hexo的進(jìn)程,沒有其他的,如果有其他的進(jìn)程,那么根據(jù)進(jìn)程ID刪除
  8. 使用pm2維持hexo博客的進(jìn)程。

復(fù)制上面的代碼到post-receive這個文件里保存。這里需要注意的是,post-receive這個文件的權(quán)限應(yīng)該是git這個用戶的。如果不是,使用如下這個命令修改,這里講git家目錄下的文件夾和文件的權(quán)限的變成git這個用戶。

chown -R git:git  /home/git/blog/

再使用如下命令,為post-receive這個文件增加執(zhí)行的權(quán)限

chmod +x /home/git/blog/hexo.git/hooks/post-receive

Step6:修改git權(quán)限,禁止ssh登錄

打開/ect/passwd這個文件,找到git這個用戶,修改他的權(quán)限

git:x:1003:1003:,,,:/home/git:/bin/bash

改為

git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell

主要是修改后面的usr/bin/git-shell這個部分。

到此為止,就配置完了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容