相信不少程序員喜歡用 GitBook 來寫電子書、教程或者博客,看了很多文章,貌似都缺乏說明如何將 GitBook 部署到版本庫,並自動在服務器上 build,而後將生成的靜態網站部署到雲服務器上。css
因此,今天就記錄下我是如何一步步將 GitBook 發佈到本身的雲服務器上的。node
首先須要藉助的工具備:nginx
不少教程都寫過如何在本地初始化 GitBook 開始寫文檔。這裏簡單描述。git
初始化 gitbook init
後,生成兩個文件:README.md
和 SUMMARY.md
,README.md
應該不陌生,就是說明文檔,而 SUMMARY.md
其實就是書的章節目錄。程序員
有了這兩個文件還不夠,咱們必需要初始化一些咱們本身的信息,這時候就須要建立文件:book.json
,看看個人配置文件:web
{ "language": "zh", "plugins": ["tbfed-pagefooter", "sitemap-general", "rss", "copy-code-button", "disqus", "donate", "custom-js-css", "highlight"], "pluginsConfig": { "custom-js-css": { "js": [ "./bootstrap4/js/bootstrap.bundle.min.js", "./bootstrap4/js/bootstrap.min.js" ], "css": [ "./bootstrap4/css/bootstrap-grid.min.css", "./bootstrap4/css/bootstrap-reboot.min.css", "./bootstrap4/css/bootstrap.min.css" ] }, "donate": { "wechat": "/images/wechat.jpeg", "alipay": "/images/alipay.jpeg", "title": "以爲不錯點個贊", "button": "點贊" }, "disqus": { "shortName": "coding" }, "rss": { "title": "coding01 自我量化", "description": "coding01 自我量化", "author": "葉梅樹", "feed_url": "https://ziwolianghua.coding01.cn/rss", "site_url": "https://ziwolianghua.coding01.cn/", "managingEditor": "yemeishu@126.com", "webMaster": "yemeishu@126.com", "categories": [ "ziwolianghua" ] }, "sitemap-general": { "prefix": "https://ziwolianghua.coding01.cn" }, "tbfed-pagefooter": { "copyright":"Copyright © coding01 2018", "modify_label": "該文件修訂時間:", "modify_format": "2019-11-3 21:20:20" } } }
這裏主要用到的插件有:docker
"tbfed-pagefooter", "sitemap-general", "rss", "copy-code-button", "disqus", "donate", "custom-js-css", "highlight"
這些插件徹底能夠根據本身的狀況而定,固然,咱們也選擇了一些自定義 js
和 css
,整個結構以下:shell
咱們能夠安裝插件看看執行效果了:npm
gitbook install && gitbook serve
接下來能夠寫兩個文件:簡介和開篇。json
看咱們的 SUMMARY.md
文件:
# Summary ## [介紹](README.md) ## 1. 理論 ### 1.1 開篇 * [1.1.1 前言](1.1.1.md)
也能夠看看 README.md
內容:
# 自動化自我量化 ## 關於系統 因爲我使用的是 iPhone + rMBP + Apple Watch ,因此本文的大部份內容是基於 Apple 生態下寫的,若是你是 Android 生態設備,能夠嘗試相似的工具和方法論。 ## 關於做者 > coding01 自由程序員 ## LICENSE ![知識共享許可協議 Figure: 知識共享許可協議](https://i.creativecommons.org/l/by-nc-nd/4.0/88x31.png) [知識共享許可協議 Figure: 知識共享許可協議](http://creativecommons.org/licenses/by-nc-nd/4.0/)
效果以下:
這裏我放了一篇我以前寫好的 「前言」,基本知足自定義的樣式效果:
到此,基本的 GitBook 本地製做完成,下一步就看如何部署到服務器上了。
因爲我本身有云服務器,因此推薦使用 GitLab 作代碼版本控制,而後把 GitBook 電子書靜態文件也部署到本身服務器上,配置自定義域名訪問。
這裏重點不是說如何部署 GitLab,而是說另外一個問題,由於 GitBook build 以後的其實是純靜態網站,能夠直接使用 Nginx 或其餘來配置域名直接訪問。
因此這裏的難點是,如何將代碼 commit
到 GitLab 後,直接 gitbook build
產生靜態網站內容,放置指定的路徑下,提供 Nginx 等解析。
這裏推薦使用「Gitlab Runner」。
若是咱們本身已經使用Gitlab docker 環境,或者看我以前的 blog,應該知道我是基於 Laradock,因此直接註冊一個 Gitlab Runner。
在註冊以前,須要拿到該 Gitlab 項目的 Gitlab Runner token:
而後註冊一個 Gitlab Runner:
dc exec gitlab-runner gitlab-runner register
注:同樣的,你也能夠直接進入 Gitlab Runner 容器,在配置文件中添加。
建立後,便可以在項目設置中看到:
這裏,咱們使用 docker
模式,建立 node
鏡像,供下文的 GitBook 編譯,生成靜態網站。
好了,接下來就是編寫 .gitlab-ci.yml
文件了:
image: node:latest build: stage: build artifacts: paths: - _book script: - npm install gitbook-cli -g - gitbook install - gitbook build tags: - build test: stage: test script: - echo "no tests." tags: - test deploy: stage: deploy script: - rm -rf /var/www/ziwolianghua/* - cd _book - cp -rf . /var/www/ziwolianghua - echo "發佈成功!" tags: - deploy only: - master
這裏配置了三個 tag:build、test 和 deploy,和 GitLab Runner 設置的 tags 配合使用。當知足 build、test 時,就會觸發咱們剛纔定義的 ziwolianghua_build_test
Runner,也就會執行咱們定義好的 build
和 test
jobs,編譯和測試咱們網站。
咱們將本地代碼 push 到 Gitlab 看看效果:
build 和 test 成功後,咱們接下來就須要把生成的靜態代碼部署到指定路徑上,這時候再也不是 docker
模式了,改成 shell
,由於咱們在相同的服務器部署網站,並且經過 docker 共享 volumn,將文件存放地方和 nginx 共享,這樣就能夠直接在 nginx 容器下配置訪問。
接下來,配置第二個 「Gitlab-Runner」:
好了,咱們再看看 jobs 運行結果
發佈成功。
這時候咱們只需配置 ngnix 去訪問這個路徑便可,這裏就再也不贅述了。
直接訪問連接 https://ziwolianghua.coding01.cn 看看效果:
從本地使用 GitBook init
開始寫 blog 和電子書,而後代碼託管到 GitLab 上,再利用 GitLab Runner 自動化編譯和部署網站,一鼓作氣。這樣作的好處是,只要寫好的 markdown 電子書扔到項目中,在目錄文件上添加路徑便可,咱們能夠隨時隨地更新和提交原始代碼,徹底不用考慮在本地部署 GitBook 環境了,而生成靜態文件的任務交給服務器自動完成。
「完」