11# book-web
22
3+ * [ gitlab] ( https://gitlab.com/king011/book-web )
4+ * [ github] ( https://github.com/zuiwuchang/book-web )
5+
36book-web 是一個在線的 個人資料整理 web 以書爲單位 每種類型的 資料 作爲一本書 使用 markdown 進行編寫 以html 呈現內容
47
58[ book.king011.com] ( https://book.king011.com ) 是我使用此項目 部署的一個 在線web 你可以在此查看 book-web 的 一些效果
69[ https://gitlab.com/king011/book ] ( https://gitlab.com/king011/book ) 是book.king011.com上數據 的開源 git項目地址
710
811# v1
912
10- v1 是完全重構的一個版本 其後端和前端都將被完成重寫 但會保持數據和配置的兼容 離線情況下 你只需要更新 可執行的 和 前端view即可完成升級 不會破壞任何 已有數據和配置檔案
11-
12- v1 目前處理開發的 不穩定狀態 請不要使用
13+ v1 是完全重構的一個版本 其後端和前端都將被完成重寫 但會保持數據和配置的兼容 離線情況下 你只需要更新 可執行的 和 前端view即可完成升級 不會破壞任何 已有數據
1314
1415# Why
1516
@@ -23,93 +24,111 @@ v1 目前處理開發的 不穩定狀態 請不要使用
2324* 以 markdown 編寫 文檔 支持 上傳圖片和附件
2425* 所有數據都以 文檔 保存到根目錄下 方便使用git
2526* 支持在網頁操作 簡單的 git 指令 commit push ...
26- * 對於支持 IndexedDB 的瀏覽器 所有 文檔數據都建立了lru 緩存(可在頁面關閉) 向服務器請求數據時傳入 緩存md5 如果服務器數據未變化則 返回緩存命中 瀏覽器直接以緩存顯示 從而減少數據流量
27+ * 支持 http http2 協議
2728
2829# Install
2930
3031對於 linux-amd64 和 windows-amd64 的用戶 你可以直接下載 編譯好的項目 或者參照Build的說明自行編譯 對於 其它平臺 只能參照 Build 自行編譯
3132
3233下文以 linux-amd64 進行說明
33- 1 . 下載 最新的 Releases 版本 得到 book-web.tar.gz
34- 2 . 解壓 mkdir book-web && tar -zxvf book-web.tar.gz -C book-web
35- 4 . 執行 book-web/run.sh 運行項目 * (windows 需要運行 book-web/run.sh) *
34+ 1 . 下載 最新的 Releases 版本 得到 linux.windows.7z
35+ 2 . 解壓 linux.windows.7z
36+ 4 . 執行 book-web daemon 運行項目
3637
3738# Build
3839
39- 此項目 網頁 由 angular2 編寫 後端服務 用 golang revel 編寫 故需要分別 編譯
40+ 此項目 網頁 由 angular2 編寫 後端服務 用 golang gin 編寫 需要先編譯前端 再編譯後端
4041
4142## 編譯 前端網頁
42431 . 自行安裝好 node 環境 和 angular2 框架
43442 . 下載 源碼 git clone git@gitlab.com : king011 /book-web.git && cd book-web/src/view && npm install
44- 3 . 運行 編譯 腳本 ./build-zh-Hant .sh
45+ 3 . 運行 編譯 腳本 ./build.sh
4546
4647## 編譯 後端服務器
47- 1 . 自行配置好 golang環境 和 revel 框架
48+ 1 . 自行配置好 golang環境
48492 . 下載 源碼 git clone git@gitlab.com : king011 /book-web.git
49- 3 . 配置 環境 變量 export GOPATH=$GOPATH:\` pwd\` /book-web
50- 4 . 編譯 revel package book-web prod 得到 book-web.tar.gz
50+ 3 . 編譯資源 ./build.sh s
51+ 4 . 編譯可執行程序 ./build.sh l
52+
53+ > 若要編譯 windows 程式 執行 ./build.sh w
54+ >
55+ > 若要編譯 mac 程式 執行 ./build.sh m
5156
5257
5358# Configure
54- ## app.conf
55- book-web/src/book-web/conf/app.conf 是revel 的框架 配置 檔案 用來指定 http 如何工作 請自行參考 [ revel 官網說明] ( https://revel.github.io/manual/appconf.html )
5659
57- ## app.jsonnet
58- book-web/src/book-web/conf/app.jsonnet 是 book-web 項目一些定義 如下
60+ book-web.jsonnet 是 book-web 項目的配置檔案
5961``` jsonnet
62+ local Millisecond = 1;
63+ local Second = 1000 * Millisecond;
64+ local Minute = 60 * Second;
65+ local Hour = 60 * Minute;
66+ local Day = 24 * Hour;
67+ local KB=1024;
68+ local MB=KB * 1024;
69+ local GB=MB * 1024;
6070{
61- // 檔案夾定義
62- FileRoot:"fileroot",
63- // 管理員定義
64- Root:{
65- // 登入 用戶名
66- Name:"king",
67- // 顯示昵稱
68- Nickname:"king",
69- // 密碼
70- //Password:"cerberus is an idea",
71- // 密碼是否爲hash值
72- //PasswordSha512:false,
73- // 密碼
74- Password:"6ef9fa16dc05ed44ca6f2890c61b9caacbb97f48ee7006d10d5151a5183bf54c08b1c4fe227e36f3cd01512643953d16753f63e92fd5698ef4af51a1651c70cb",
75- // 密碼是否爲hash值
76- PasswordSha512:true,
77- },
78- // 默認語言
79- DefaultLocale:"zh-Hant",
80- // 定義支持的語言
81- Locale:[
82- {
83- // 語言 id 和 angular 檔案夾名 對應
84- ID:"zh-Hant",
85- // 正則規則 匹配成功的 全部作爲 此語言顯示
86- Rules:[
87- ".*"
88- ],
89- },
90- ],
91- // 日誌 配置
92- Logger:{
93- // 日誌 http 如果爲空 則不啓動 http
94- //HTTP:"localhost:20800",
95- // 日誌 檔案名 如果爲空 則輸出到控制檯
96- //Filename:"logs/kc-cims.log",
97- // 單個日誌檔案 大小上限 MB
98- //MaxSize: 100,
99- // 保存 多少個 日誌 檔案
100- //MaxBackups: 3,
101- // 保存 多少天內的 日誌
102- //MaxAge: 28,
103- // 要 保存的 日誌 等級 debug info warn error dpanic panic fatal
104- Level :"debug",
105- // 是否要 輸出 代碼位置
106- //Caller:true,
71+ // 檔案夾定義
72+ FileRoot: "fileroot",
73+ // HTTP 服務器訂閱
74+ HTTP: {
75+ // 服務器監聽地址
76+ Addr: ":9000",
77+ // 是否使用 http2 協議
78+ // H2: true,
79+ // // http 證書 如果配置了證書 將使用 https協議
80+ // CertFile: "test.pem",
81+ // KeyFile: "test.key",
82+ // 設定 http 請求 body 最大尺寸
83+ // 如果 == 0 使用默認值 32 KB
84+ // 如果 < 0 不限制
85+ MaxBytesReader: 5 * MB,
86+ },
87+ // 管理員定義
88+ Root: {
89+ // 登入 用戶名
90+ Name: "king",
91+ // 顯示昵稱
92+ Nickname: "皇帝",
93+ // 密碼
94+ //Password: "cerberus is an idea",
95+ // 密碼
96+ Password: "6ef9fa16dc05ed44ca6f2890c61b9caacbb97f48ee7006d10d5151a5183bf54c08b1c4fe227e36f3cd01512643953d16753f63e92fd5698ef4af51a1651c70cb",
97+ // 密碼是否爲hash值
98+ PasswordSha512: true,
99+ },
100+ Cookie: {
101+ // Filename:"securecookie.json"
102+ MaxAge:Day*14,
103+ },
104+ // google服務 配置
105+ Google: {
106+ // analytics id 如果爲空則不啓用
107+ Analytics:"",
108+ // AdSense data-ad-client 如果爲空則不啓用
109+ AdSense:"",
110+ },
111+ Logger: {
112+ // zap http
113+ //HTTP: "localhost:20000",
114+ // log name
115+ //Filename: "logs/book-web.log",
116+ // MB
117+ MaxSize: 100,
118+ // number of files
119+ MaxBackups: 3,
120+ // day
121+ MaxAge: 28,
122+ // level : debug info warn error dpanic panic fatal
123+ Level: "debug",
124+ // 是否要 輸出 代碼位置
125+ Caller: true,
107126 },
108127}
109128```
110129
111130通常你 只需要 設置 FileRoot 指定 編輯文檔的 儲存位置 以及 Root.Name Root.Password 指定 管理員 用戶名 密碼 即可正常工作
112- FileRoot 如果不是全路徑 則 檔案會被 保存到 book-web/src/book-web/ + FileRoot
131+ FileRoot 如果不是全路徑 則 檔案會被 保存到 可執行程序路徑 + FileRoot
113132
114133# 檔案儲存
115134所有的數據 都以 markdown 形式儲存爲檔案
@@ -129,33 +148,3 @@ FileRoot 如果不是全路徑 則 檔案會被 保存到 book-web/src/book-web/
129148章節檔案夾下會有
130149* README.md 檔案 儲存了 章節正文
131150* assets 檔案夾 裏面儲存了 上傳到此章節的 附件 和圖片等資源
132-
133- # 啓用 google analytics
134-
135- 要啓用 google analytics 需要 自行編譯 view 項目 並在其中填入 你自己的 analytics id
136-
137- 1 . 編輯 ** src/view/src/index.html** 加入 gtag.js
138-
139- ``` html
140- <!-- Global site tag (gtag.js) - Google Analytics -->
141- <script async src =" https://www.googletagmanager.com/gtag/js?id=XXX" ></script >
142- <script >
143- window .dataLayer = window .dataLayer || [];
144- function gtag () { dataLayer .push (arguments ); }
145- gtag (' js' , new Date ());
146- </script >
147- ```
148-
149- > XXX 改成你的 analytics id
150-
151- 1. 編輯 **src/view/src/environments/environment.prod.ts**
152-
153- ```typescript
154- export const environment = {
155- production: true,
156- gtag: "XXX"
157- };
158- ```
159-
160- > XXX 改成你的 analytics id
161-
0 commit comments