go語言實現的一款簡單的網盤系統

druidcaesa發表於2022-06-13

專案說明

很早之前一直想寫一個自己的網盤系統,用來儲存自己工作和生活中的檔案和圖片等資料,但是因為

工作比較繁忙,一直沒有時間進行實施。最近這段時間正好換工作,中間留出來了一個星期左右的空檔,

就用這一週多的時間使用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/。

img.png

2、開啟go-module

set GO111MODULE=on //windows
export GO111MODULE=on //linux

3、goland無法下載包解決

img.png

三、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

七、效果展示

img.png

img.png

img.png

img.png

img.png

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

相關文章