前言
各種程式語言均有其優勢和生態,有興趣的朋友完全可以涉獵多門語言。在平常的工作之中,也可以嘗試選擇相對適合的程式語言來完成相關的工作。
在團隊技術文件站搭建這塊,筆者嘗試了許多框架,最終還是選擇了Hexo,主要是由於其豐富的主題和外掛,並且靈活和高度可定製化,改起來也非常方便。我們團隊文件站即使用Hexo來構建,並且基於容器配置了完整的程式碼流水線:docs.xin-lai.com
如果對站點配置、主題、外掛存在疑問,可以加群溝通。
目錄
- 官方映象
- 編寫一個簡單的Web伺服器
- 編碼
- 編寫Dockerfile
- 構建並執行
- 使用Hexo搭建團隊技術文件站
- 安裝
- 初始化
- 配置站點資訊
- 生成靜態檔案
- 使用hexo-server進行託管
- 使用容器構建和託管
Node.js 是一個基於 Chrome V8 引擎構建的JavaScript執行環境,是一個讓JavaScript能夠執行在服務端的開發平臺。Node.js可以方便地搭建響應速度快、易於擴充套件的Web應用。Node.js 使用事件驅動, 非阻塞I/O模型而得以輕量和高效,非常適合在分散式裝置上執行資料密集型的實時應用。
Node.js的誕生給前端開發人員帶來了極大的驚喜,傳統的Web 開發者,前端使用JavaScript進行程式設計,伺服器端程式碼得用另外一種語言,比如Java、.NET、PHP 等等。但是 Node.js 出現之後,前端開發者使用JavaScript就可以前後端通吃了。
官方映象
官方映象地址:https://hub.docker.com/_/node
編寫一個簡單的Web伺服器
1.編碼
使用Node.js編寫一個簡單的Web伺服器非常簡單,主要需要用到http模組,http模組主要用於搭建 HTTP 服務端和客戶端,全部程式碼如下所示:
// 載入http模組 const http = require('http'); // 設定埠 const port = 80; // 建立Web伺服器 const server = http.createServer((req, res) => { // 設定響應的狀態碼 res.statusCode = 200; // 設定響應的請求頭 res.setHeader('Content-Type', 'text/plain'); // 設定響應輸出文字 res.end('Hello World !'); }); // 設定Web伺服器監聽埠 server.listen(port);
2.編寫Dockerfile
Dockerfile檔案如下所示:
#指定node映象的版本 FROM node:8.9-alpine #對外暴露的埠 EXPOSE 80 # 複製檔案 COPY . . # 執行 ENTRYPOINT ["node","app.js"]
3.構建並執行
構建命令如下所示:
docker build --rm -f "dockerfile" -t nodetest1:latest .
執行:
docker run --rm -p 4000:80 nodetest1:latest
在日常開發中,一些簡單的指令碼的編寫,為了避免反覆的構建過程,大家同樣可以參考PHP一節,然後直接執行Node.js的映象來執行Node.js的指令碼。
參考指令碼如下所示:
docker run -it --rm ` --name node-running-script ` -v D:\temp\node:/usr/src/myapp ` -w /usr/src/myapp ` node:8.9-alpine node app.js
使用Hexo搭建團隊技術文件站
Hexo 是一個快速、簡潔且高效的部落格(不僅僅是部落格)框架,他可以使用 Markdown(或其他渲染引擎)解析文章,在幾秒內,即可利用靚麗的主題生成靜態網頁。我們可以用其來搭建部落格、文件站點或者其他官網。接下來,我們將使用Hexo來搭建團隊技術文件站。之所以選擇Hexo,主要原因如下:
- 主題豐富
Hexo的主題很多,我們在官網就能找到很多可用的主題,而且均已開源,如下所示:
- 外掛豐富
在官網,我們就可以找到很多各種各樣的外掛,比如搜尋、字數統計、自動分類、百度網址提交、靜態資源壓縮等等各種各樣的開源外掛:
- 靈活可擴充套件
無論是主題還是外掛,均為開源。相關主題的修改也非常簡單,您只要具備一定的JavaScript和Html的知識,就可以完成對主題和外掛的修改。
- 支援對Markdown進行渲染
無論是搭建部落格還是技術文件站,使用Markdown進行文章編寫都是需要優先考慮的。團隊成員僅需提交Markdown,就可以生成一個漂亮美觀的靜態站點,這是一件多麼愜意的事情啊!
接下來,我們就演示如何一步一步的使用Hexo來構建團隊技術站點:
1.安裝
在安裝Hexo之前,我們先必須安裝好以下內容:
接下來,我們僅需使用以下命令來安裝Hexo:
npm install -g hexo-cli
npm是Node.js的包管理工具,在安裝Node.js時會順帶安裝好,通過以上命令,我們將使用npm全域性安裝(安裝到全域性目錄)hexo-cli。
2.初始化
接下來,我們可以開始使用Hexo建站了。首先我們需要進行一些站點初始化的工作:
hexo init <folder>
目錄為選填,不填則預設當前目錄。
初始化完成之後,就可以看到目標目錄下多了很多內容:
接下來,我們使用npm管理工具進行安裝相關包:
npm install
3.配置站點資訊
在根目錄下,我們可以找到“_config.yml”檔案,通過修改該檔案,我們可以在此配置大部分引數:
具體配置資訊見官網說明:https://hexo.io/zh-cn/docs/configuration
4.生成靜態檔案
預設情況下,Hexo進行站點初始化時,已經完成了預設主題(landscape)和內容(hello-world.md)的設定,我們可以直接執行以下命令來生成靜態檔案:
hexo generate
執行之後,我們可以在“public”目錄看到以下靜態檔案:
我們還可以使用命令“hexo deploy”來部署站點,比如部署到GitHub然後使用GitHub進行託管。Hexo支援多種部署方式,具體見官網:https://hexo.io/zh-cn/docs/deployment
5.使用hexo-server進行託管
我們也可以使用官方元件hexo-server進行託管我們的靜態站點,在使用之前,我們得先進行安裝:
npm install hexo-server –save
安裝完成後,就可以使用以下命令來啟動web伺服器來進行檢視了:
hexo server -p 5000
-p引數用於指定埠,預設埠為4000:
接下來,我們就可以用瀏覽器直接開啟這個地址進行訪問了:
至此,一個簡單的靜態站點就搭建好了。我們可以配置導航連結,或者使用主題和外掛來支援各種自定義的功能。例如如下所示的站點:
6.使用容器構建和託管
初步瞭解Hexo之後,我們可以使用Docker來構建和託管我們的站點。主體參考流程如下所示:
以上流程僅供參考,TeamCity的配置請參考DevOps相關章節。
Dockerfile檔案如下所示:
FROM node:10.15.3-alpine # 設定標籤 LABEL author=雪雁 email=xinlai@xin-lai.com site=https://docs.xin-lai.com # 設定容器內埠 EXPOSE 8000 # 新增目錄 ADD . /app # 設定當前工作目錄 WORKDIR /app # 複製檔案 COPY . . # 設定npm並且使用npm安裝hexo以及相關外掛,然後生成靜態頁並且安裝hexo-server RUN npm config set unsafe-perm true && \ npm config set registry https://registry.npm.taobao.org && \ npm install -g hexo-cli && \ # hexo clean && \ cd src && \ npm install hexo --save && \ npm install hexo-neat --save && \ npm install --save hexo-wordcount && \ npm i -S hexo-prism-plugin && \ npm install hexo-generator-search --save && \ npm i hexo-permalink-pinyin --save && \ hexo generate && \ npm install hexo-server --save # 設定工作目錄 WORKDIR src # 使用hexo-server託管靜態檔案 ENTRYPOINT ["hexo", "server","-p","8000"]