前言??? ? ? ? ? ??
各種編程語言均有其優(yōu)勢和生態(tài)凯楔,有興趣的朋友完全可以涉獵多門語言。在平常的工作之中,也可以嘗試選擇相對適合的編程語言來完成相關(guān)的工作蜡塌。
在團(tuán)隊技術(shù)文檔站搭建這塊蜜另,筆者嘗試了許多框架适室,最終還是選擇了Hexo,主要是由于其豐富的主題和插件举瑰,并且靈活和高度可定制化捣辆,改起來也非常方便。我們團(tuán)隊文檔站即使用Hexo來構(gòu)建此迅,并且基于容器配置了完整的代碼流水線:docs.xin-lai.com
如果對站點配置汽畴、主題、插件存在疑問耸序,可以加群溝通忍些。編程交流群<85318032> 產(chǎn)品交流群<897857351>?
?目錄
官方鏡像?
編寫一個簡單的Web服務(wù)器?
1.編碼?
2.編寫Dockerfile?
3.構(gòu)建并運行?
使用Hexo搭建團(tuán)隊技術(shù)文檔站?
1.安裝?
2.初始化?
3.配置站點信息?
4.生成靜態(tài)文件?
5.使用hexo-server進(jìn)行托管?
6.使用容器構(gòu)建和托管?
?Node.js 是一個基于 Chrome V8 引擎構(gòu)建的JavaScript運行環(huán)境,是一個讓JavaScript能夠運行在服務(wù)端的開發(fā)平臺坎怪。Node.js可以方便地搭建響應(yīng)速度快罢坝、易于擴(kuò)展的Web應(yīng)用。Node.js 使用事件驅(qū)動搅窿, 非阻塞I/O模型而得以輕量和高效炸客,非常適合在分布式設(shè)備上運行數(shù)據(jù)密集型的實時應(yīng)用。
Node.js的誕生給前端開發(fā)人員帶來了極大的驚喜戈钢,傳統(tǒng)的Web 開發(fā)者痹仙,前端使用JavaScript進(jìn)行編程,服務(wù)器端代碼得用另外一種語言殉了,比如Java开仰、.NET、PHP 等等。但是 Node.js 出現(xiàn)之后众弓,前端開發(fā)者使用JavaScript就可以前后端通吃了恩溅。
官方鏡像
官方鏡像地址:https://hub.docker.com/_/node
?編寫一個簡單的Web服務(wù)器
1.編碼
使用Node.js編寫一個簡單的Web服務(wù)器非常簡單,主要需要用到http模塊谓娃,http模塊主要用于搭建 HTTP 服務(wù)端和客戶端脚乡,全部代碼如下所示:
2.編寫Dockerfile
Dockerfile文件如下所示:
3.構(gòu)建并運行
構(gòu)建命令如下所示:
docker build --rm -f"dockerfile"-t nodetest1:latest .
運行:
docker run --rm -p4000:80nodetest1:latest
在日常開發(fā)中,一些簡單的腳本的編寫滨达,為了避免反復(fù)的構(gòu)建過程奶稠,大家同樣可以參考PHP一節(jié),然后直接運行Node.js的鏡像來執(zhí)行Node.js的腳本捡遍。
參考腳本如下所示:
使用Hexo搭建團(tuán)隊技術(shù)文檔站
Hexo 是一個快速锌订、簡潔且高效的博客(不僅僅是博客)框架,他可以使用 Markdown(或其他渲染引擎)解析文章画株,在幾秒內(nèi)辆飘,即可利用靚麗的主題生成靜態(tài)網(wǎng)頁。我們可以用其來搭建博客谓传、文檔站點或者其他官網(wǎng)蜈项。接下來,我們將使用Hexo來搭建團(tuán)隊技術(shù)文檔站续挟。之所以選擇Hexo战得,主要原因如下:
主題豐富
Hexo的主題很多,我們在官網(wǎng)就能找到很多可用的主題庸推,而且均已開源,如下所示:
插件豐富
在官網(wǎng)浇冰,我們就可以找到很多各種各樣的插件贬媒,比如搜索、字?jǐn)?shù)統(tǒng)計肘习、自動分類际乘、百度網(wǎng)址提交、靜態(tài)資源壓縮等等各種各樣的開源插件:
靈活可擴(kuò)展
無論是主題還是插件漂佩,均為開源脖含。相關(guān)主題的修改也非常簡單,您只要具備一定的JavaScript和Html的知識投蝉,就可以完成對主題和插件的修改养葵。
支持對Markdown進(jìn)行渲染
無論是搭建博客還是技術(shù)文檔站,使用Markdown進(jìn)行文章編寫都是需要優(yōu)先考慮的瘩缆。團(tuán)隊成員僅需提交Markdown关拒,就可以生成一個漂亮美觀的靜態(tài)站點,這是一件多么愜意的事情啊着绊!
接下來谐算,我們就演示如何一步一步的使用Hexo來構(gòu)建團(tuán)隊技術(shù)站點:
1.安裝
在安裝Hexo之前,我們先必須安裝好以下內(nèi)容:
Node.js(Node.js的版本不得小于6.9)
接下來归露,我們僅需使用以下命令來安裝Hexo:
npm install -g hexo-cli
npm是Node.js的包管理工具洲脂,在安裝Node.js時會順帶安裝好,通過以上命令剧包,我們將使用npm全局安裝(安裝到全局目錄)hexo-cli恐锦。
2.初始化
接下來,我們可以開始使用Hexo建站了玄捕。首先我們需要進(jìn)行一些站點初始化的工作:
hexo init <folder>
目錄為選填踩蔚,不填則默認(rèn)當(dāng)前目錄。
初始化完成之后枚粘,就可以看到目標(biāo)目錄下多了很多內(nèi)容:
接下來馅闽,我們使用npm管理工具進(jìn)行安裝相關(guān)包:
npm install
3.配置站點信息
在根目錄下,我們可以找到“_config.yml”文件馍迄,通過修改該文件福也,我們可以在此配置大部分參數(shù):
具體配置信息見官網(wǎng)說明:https://hexo.io/zh-cn/docs/configuration
4.生成靜態(tài)文件
默認(rèn)情況下,Hexo進(jìn)行站點初始化時攀圈,已經(jīng)完成了默認(rèn)主題(landscape)和內(nèi)容(hello-world.md)的設(shè)置暴凑,我們可以直接執(zhí)行以下命令來生成靜態(tài)文件:
hexo generate
執(zhí)行之后,我們可以在“public”目錄看到以下靜態(tài)文件:
我們還可以使用命令“hexo deploy”來部署站點赘来,比如部署到GitHub然后使用GitHub進(jìn)行托管现喳。Hexo支持多種部署方式,具體見官網(wǎng):https://hexo.io/zh-cn/docs/deployment
5.使用hexo-server進(jìn)行托管
我們也可以使用官方組件hexo-server進(jìn)行托管我們的靜態(tài)站點犬辰,在使用之前嗦篱,我們得先進(jìn)行安裝:
npm install hexo-server –save
安裝完成后,就可以使用以下命令來啟動web服務(wù)器來進(jìn)行查看了:
hexo server -p 5000
-p參數(shù)用于指定端口幌缝,默認(rèn)端口為4000:
接下來灸促,我們就可以用瀏覽器直接打開這個地址進(jìn)行訪問了:
至此,一個簡單的靜態(tài)站點就搭建好了涵卵。我們可以配置導(dǎo)航鏈接浴栽,或者使用主題和插件來支持各種自定義的功能。例如如下所示的站點:
6.使用容器構(gòu)建和托管
初步了解Hexo之后轿偎,我們可以使用Docker來構(gòu)建和托管我們的站點典鸡。主體參考流程如下所示:
以上流程僅供參考,TeamCity的配置請參考DevOps相關(guān)章節(jié)坏晦。
Dockerfile文件如下所示:
FROM node:10.15.3-alpine
# 設(shè)置標(biāo)簽
LABEL author=雪雁 email=xinlai@xin-lai.com site=https://docs.xin-lai.com# 設(shè)置容器內(nèi)端口
EXPOSE 8000# 添加目錄
ADD . /app
# 設(shè)置當(dāng)前工作目錄
WORKDIR /app
# 復(fù)制文件
COPY . .
# 設(shè)置npm并且使用npm安裝hexo以及相關(guān)插件椿每,然后生成靜態(tài)頁并且安裝hexo-server
RUN npm config setunsafe-permtrue&& \
npm config setregistry 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
# 設(shè)置工作目錄
WORKDIR src
# 使用hexo-server托管靜態(tài)文件
ENTRYPOINT ["hexo","server","-p","8000"]