推薦一款使用go開發的文件管理系統

奕鵬發表於2020-08-09

文章簡介

一直想開發或者找一個開源的軟體,功能就類似看雲一樣,用來搭建屬於一套自己的文件管理系統,將自己平常的東西集中化管理,形成一個手冊。於是找到了mindoc這樣一款不錯的文件管理系統軟體。本文大致介紹一下如何安裝,基本的功能介紹。

搭建環境

mindoc支援Linux和Windows系統環境,我這裡使用的是Linux系統。系統的配置資訊如下:
Centos7.4;
MySQL5.7;
MySQL屬於獨立搭建的,如果不會的可以參考一下個人之前分享的一篇文章Linux搭建MySQL環境 ,其他的東西也沒了,屬於一個純淨的Linux系統。

搭建步驟

拉取原始碼

原始碼地址

解壓並配置環境

tar -zxvf mindoc_linux_amd64.zip

找到config目錄下面的app.config檔案,如果不存在該檔案,應該有一個app.config.example檔案,將該檔案複製一分,命名為app.conf即可.

cp app.conf.example app.conf
#支援MySQL和sqlite3兩種資料庫,如果是sqlite3 則 db_database 標識資料庫的物理目錄
db_adapter="${MINDOC_DB_ADAPTER||mysql}"
db_host="${MINDOC_DB_HOST||127.0.0.1}"
db_port="${MINDOC_DB_PORT||3306}"
db_database="${MINDOC_DB_DATABASE||mindoc}"
db_username="${MINDOC_DB_USERNAME||root}"
db_password="${MINDOC_DB_PASSWORD||}"

我這裡使用的MySQL,因此將adapter改為mysql即可。下面的一些資訊改成MySQL實際的配置資訊即可。其他的配置資訊就根據自己實際需要來做修改即可。

配置MySQL資訊

# 建立mysql資料庫
create database mindoc;
# 建立mysql使用者
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
# 授權給新建的mysql使用者
grant all ON databasename.tablename TO 'username'@'host';
# 重新整理全新啊
flush privileges;

注意事項

  1. username:建立的MySQL使用者名稱稱。
  2. host: MySQL使用者授權地址,如果新建的MySQL使用者只能本地登入,則使用127.0.0.1即可。如果需要允許該使用者遠端登入,則使用使用%。
  3. password:MySQL使用者的密碼
  4. databasename:新建MySQL使用者授權對應的資料庫。這裡直接寫新建的資料庫mindoc即可。如果是授權所有資料庫,則使用*表示。
  5. tablename:授權資料庫對應的資料表,如果只是授權新建MySQL操作部分表,直接寫表名,一般都是授權所有表,直接寫*即可。
  6. grant all:這裡指的給新建的MySQL使用者,授予所有的許可權。如果只是部分授權,例如增刪改查,則使用insert,delete,update,select 代替,每一個許可權之間用”,”隔開。

安裝啟動

初始化資料
進入mindoc解壓的根目錄,會發現有一個mindoc_linux_amd64檔案,該檔案為啟動檔案。執行下面的命令:

./mindoc_linux_amd64 install

該命令的作用時初始化一些資料到MySQL中。就類似PHP很多軟體,通過介面來安裝應用。

啟動服務

./mindoc_linux_amd64

問題出現,在啟動的過程中可能會出現如下的情況:

OperationalError: (_mysql_exceptions.OperationalError) (1055, "Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column 
'db.table.create_time' which is not functionally dependent on columns in 
GROUP BY clause; this is incompatible with sql_mode=only_full_group_by") [SQL: 
u'SELECT table.create_time AS table_create_time, table.count AS 
table_count \nFROM table \nWHERE table.cluster_id = %s AND 
table.create_time > %s GROUP BY table.count'] [parameters: (1, 
datetime.datetime(2000, 1, 1, 0, 0))]

在實際的過程中錯誤的語言不是這樣的,在安裝時忘記記錄了,不過大致的錯誤資訊是這樣的。只要關注下面這一段錯誤碼,就行了。1055, “Expression #1 of
SELECT list is not in GROUP BY clause and contains nonaggregated column
‘db.table.create_time’ which is not functionally dependent on columns in
GROUP BY clause; this is incompatible with sql_mode=only_full_group_by”

解決問題。

mysql> show variables like 'sql_mode';
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                                     |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

執行下面的命令,將該sql_mode的配置資訊改外其他的模式:

set @@sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

此時,再來查詢該環境變數的值,就是如下的值了:

mysql> show variables like 'sql_mode';
+---------------+------------------------------------------------------------------------------------------------------------------------+
| Variable_name | Value                                                                                                                  |
+---------------+------------------------------------------------------------------------------------------------------------------------+
| sql_mode      | STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+---------------+------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

記得修改配置之後,一定的重啟MySQL服務,否則是不會生效的。

重啟mindoc服務。

./mindoc_linux_amd64

如果需要將該服務以守護程式的方式啟動,則在後面加一個 &即可。

使用mindoc

上面正常將服務啟動並安裝,接下來使用下面的連結即可訪問:

# ip為你伺服器ip地址,如果是本地則使用localhost,或者127.0.0.1
ip:8181

下面是幾張頁面的截圖,由於功能很好上手使用,這裡就不單獨介紹如何使用功能了。


本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章