博客搭建過(guò)程

建站過(guò)程

選型

  1. 本人積累了4年左右的技術(shù)文檔
  2. 苦于無(wú)處管理
  3. 原先想在開源中國(guó)上創(chuàng)建博客寫寫文章,并且也付之行動(dòng)
  4. 后來(lái)發(fā)現(xiàn)將這么多文檔轉(zhuǎn)移到開源中國(guó)上得工作量實(shí)在太大了
  5. N久之前想學(xué)習(xí)Node.JS
  6. 在同事的推薦下,知道了Hexo這個(gè)東西
  7. 而且有很多theme可以使用,有哪些好看的 Hexo 主題? - GitHub - 知乎
  8. 而且所有的文檔都是用markdown去寫的
  9. markdown的語(yǔ)法很簡(jiǎn)單,很容易入門上手.Markdown 語(yǔ)法說(shuō)明(簡(jiǎn)體中文版)
  10. 遂,選之.
    PS: 文本文檔轉(zhuǎn)markdown的代價(jià)也大,但是值得!

環(huán)境搭建過(guò)程

  1. 首先在本地搭建Node.JS開發(fā)環(huán)境
    • 去Node.JS官網(wǎng)下載最新版本Node.JS,下載地址
    • 這個(gè)是免安裝版本,解壓后配置環(huán)境變量即可
      vim ~/.bash_profile
      export NODE_JS_HOME=/Users/sunhao/Documents/tools/node-v5.6.0
      export PATH=$NODE_JS_HOME:$PATH
    • 然后執(zhí)行:source ~/.bash_profile
    • 測(cè)試是否安裝成功: node -v
      sunhaodeMacBook-Pro:~ sunhao$ node -v
      v5.6.0
      sunhaodeMacBook-Pro:~ sunhao$
  2. npm相關(guān)
    • 很久以前的Node.JS安裝后需要單獨(dú)安裝npm的
    • 現(xiàn)在不需要了,可以直接使用了
    • 由于我大天朝強(qiáng)大的GFW,npm的源在天朝局域網(wǎng)訪問(wèn)很不理想
    • 所以,阿里的大神們給大伙提供了一個(gè)npm registry鏡像
    • 配置阿里npm鏡像
      npm config set registry https://registry.npm.taobao.org
      npm config set disturl https://npm.taobao.org/dist
    • 這下npm的速度妥妥的
    • 參考文檔:
  3. hexo相關(guān)
    • 前戲都做好了,我們就進(jìn)入正事吧
    • 由于hexo是經(jīng)常使用的,所以需要全局安裝
      npm install hexo -g
    • 測(cè)試是否安裝成功


      測(cè)試是否安裝成功.png

開始搭建博客

  1. 選擇一個(gè)目錄
  2. 進(jìn)入之后執(zhí)行hexo init
  3. 等待步驟2下載一堆依賴后,即創(chuàng)建好基于Hexo的博客基本目錄結(jié)構(gòu)


    基本目錄結(jié)構(gòu).png
  4. 簡(jiǎn)單應(yīng)用
    • 直接在本機(jī)運(yùn)行博客
      sunhaodeMacBook-Pro:test sunhao$ hexo serve
      INFO Start processing
      INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop.
      這樣在本機(jī)瀏覽器上直接訪問(wèn)http://localhost:4000即可以訪問(wèn)最簡(jiǎn)單的博客
    • hexo構(gòu)建靜態(tài)文件,可以放入nginx中直接訪問(wèn)(本人就是這種方式)
      hexo generate
      生成的文件放在public文件夾下
  5. 自定義一些配置
  6. 自定義主題
  7. 我的主題是基于yelee添加了一些修改,后面會(huì)把這個(gè)修改后的主題放到git上
    • 原生的yelee: yelee
    • 我修改后的yelee: 敬請(qǐng)期待

如何進(jìn)行更新博客

  1. 將博客整個(gè)項(xiàng)目文件托管到Github或者Git@OSC中
  2. 利用git的push鉤子進(jìn)行更新
  3. 利用Node.JS在服務(wù)器的后臺(tái)啟用一個(gè)服務(wù),去接收git鉤子的請(qǐng)求,從而進(jìn)行更新
  4. 我就是采用這個(gè)方法的,所以我買了一個(gè)域名和一個(gè)阿里云服務(wù)器并且將域名備案了
  5. 搭建過(guò)程
    • 將項(xiàng)目托管到git上,我選擇的是Git@OSC,畢竟是天朝局域網(wǎng)直接互相訪問(wèn),速度快


      Git@OSC.png
    • 配置git的push鉤子


      鉤子.png
    • 在服務(wù)器上將Node.JS+Npm+Hexo的環(huán)境搭建好

    • 在服務(wù)器上將git上得博客pull下來(lái),路徑如:/opt/blog

    • 在服務(wù)器上利用Node.JS起一個(gè)服務(wù)
      var express = require('express');
      var app = express();
      var exec = require('child_process').exec;

        app.post('/hexo', function(req, res){
            // 打開目錄,先執(zhí)行g(shù)it pull
            // 再執(zhí)行hexo clean
            // 再重新生成public文件
            exec('cd /opt/blog/ && git pull && hexo clean && hexo generate', function (error, stdout, stderr) {
                console.log('stdout: ' + stdout);
                console.log('stderr: ' + stderr);
                if (error !== null) {
                    console.log('exec error: ' + error);
                }
            });
        
            res.send('ok');
        });
        
        // 在3000端口啟動(dòng)監(jiān)聽服務(wù)
        var server = app.listen(3000, function() {
            console.log('Listening on port %d', server.address().port);
        });
      
    • 注意,要寫一個(gè)package.json文件,寫明此服務(wù)所以來(lái)的組件
      {
      "name": "gitlab-hexo-webhook",
      "version": "1.0.0",
      "description": "gitlab鉤子",
      "main": "hexo-webhook.js",
      "dependencies": {
      "debug": "^2.0.0",
      "express": "^3.0.6"
      },
      "devDependencies": {},
      "scripts": {
      "test": "echo "Error: no test specified" && exit 1"
      },
      "author": "sunhao",
      "license": "ISC"
      }

    • 利用Node.JS的forever在后臺(tái)啟動(dòng)此服務(wù)
      forever -a start /opt/shell/gitlab-hexo-webhook/hexo-webhook.js

    • 這樣每次在本地用markdown寫好博客后push到git上,push鉤子就會(huì)執(zhí)行,去請(qǐng)求服務(wù)器上的這個(gè)服務(wù),這個(gè)服務(wù)就會(huì)將博客更新后,重新generate新的public

部署到nginx上

  1. 在服務(wù)器上安裝nginx

  2. 進(jìn)行配置
    server {
    listen 80;
    # 您的域名
    server_name blog.izufang.me;

         location / {
             // 您的博客public文件夾絕對(duì)路徑
             root   /opt/blog/public;
             index  index.html;
             try_files $uri $uri/ /index.html;
             expires -1;
         }
     }
    
  3. 在您的域名提供商設(shè)置域名解析即可

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

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

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