專案說明
很早之前一直想寫一個自己的網盤系統,用來儲存自己工作和生活中的檔案和圖片等資料,但是因為
工作比較繁忙,一直沒有時間進行實施。最近這段時間正好換工作,中間留出來了一個星期左右的空檔,
就用這一週多的時間使用go語言來開發了這個網盤系統,並且開源出來。
選擇golang開發而不用試java的原因,一是個人喜好問題,二就是自己家裡的有一個閒置的2G的樹莓派,
因為記憶體太小,若是執行動不動就幾百上G的java程式負擔比較大,而go打包下來才100M使用docker,
容器話部署,整體執行不到1G記憶體,所以最終選擇了Go來開發這個專案
一、架構
後端
開發語言:golang
框架:go-zero、xorm、jwt
儲存:minIO 物件儲存
前端
Vue2 + Electron +Element-UI
二、環境準備
1、golang 安裝
安裝包下載地址為:https://golang.org/dl/。
如果打不開可以使用這個地址:https://golang.google.cn/dl/。
2、開啟go-module
set GO111MODULE=on //windows
export GO111MODULE=on //linux
3、goland無法下載包解決
三、MinIO 物件儲存安裝
推薦使用docker進行部署,我使用的是docker-compose進行部署的
1、 docker-compose配置檔案附上
version: ‘3’
services:
minio:
image: minio/minio
container_name: minio
ports:
- 9000:9000
- 9991:9991
environment:
MINIO_ACCESS_KEY: admin #管理後臺使用者名稱
MINIO_SECRET_KEY: password #管理後臺密碼,最小8個字元
volumes: - /opt/app/minio/data:/data #對映當前目錄下的data目錄至容器內/data目錄
- /opt/app/minio/config:/root/.minio/ #對映配置目錄
command: server /data –console-address “:9991”
privileged: true
restart: always
2、docker和docker-compose安裝請自行百度或google
四、配置修改
1、修改引數常量
define->define.go
var Endpoint = “loaclhost:9000” //MinIo物件儲存的地址
var AccessKeyID = “cloud-disk” //MinIo AccessKey id
var SecretAccessKey = “cloud-disk” //MinIo SecretAccessKey
var BucketName = “cloud-disk” //MinIo 的桶名稱
var BucketLocation = “beijing” //MinIo 桶所在地,國內預設寫beijing即可
2、修改配置檔案資料庫配置
etc-> cloud-api.yaml
Name: cloud-api
Host: 0.0.0.0
Port: 8080
DataBase:
Type: “mysql”
Url: “root:password@tcp(mysql:3306)/cloud-disk?charset=utf8” #修改成自己的資料庫連結地址和密碼
MaxIdleConns: 10
MaxOpenConns: 20
#是否顯示sql語句
ShowSql: true
Redis:
Addr: “loaclhost:6379” #redis的連結地址和密碼
Password: “password”
PoolSize: 10
五、初始化資料庫
將doc->sql-cloud-disk.sql 匯入到資料庫中
六、後端執行
#執行程式
go run cloud.go -f etc/cloud-api.yaml
#API生成命令
goctl api go -api cloud-disk.api -dir . -style goZero
七、效果展示
本作品採用《CC 協議》,轉載必須註明作者和本文連結