Linux上Seaweedfs文件服务搭建及访问控制权限配置

一、检查并安装go环境

1.1 查询宿主机是否有go环境

go version

1.2 没有则通过yum安装go

yum install golang -y

1.3 检查安装

go version

#输出类似则安装完成
#-> go version go1.15.5 linux/amd64

1.4 配置环境变量

#编辑环境变量
vi /etc/profile

# GOROOT go安装目录
export GOROOT=/usr/lib/golang

# GOPATH go工作目录,可自定义
export GOPATH=/home/go/path/

# GOPATH bin go bin
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

#重启使环境生效
source /etc/profile

二、下载安装Seaweedfs

2.1 进入安装目录,如没有请先创建(下面所有操作在/user/local/seaweedfs下进行)

cd /user/local/seaweedfs

2.2 去github下载linux_amd64.tar.gz压缩包并解压(https://github.com/chrislusf/seaweedfs/releases

tar -zxf linux_amd64.tar.gz
#解压后得到weed执行文件

2.3 ./weed -h 查看帮助指令

./weed -h

2.4 创建运行时需要的文件

mkdir master logs vol vol2 vol3

2.5 启动master服务 (ip根据自己实际情况指定)

nohup /usr/local/seaweedfs/weed master -mdir=/usr/local/seaweedfs/master -port=9333 -defaultReplication="001" -ip="1xx.xx.0.1" &>>/usr/local/seaweedfs/logs/master.log &

#查看master其它启动参数
./weed master -h

2.6 启动volume服务 (ip根据自己实际情况指定)

nohup /usr/local/seaweedfs/weed volume -dir=/usr/local/seaweedfs/vol1 -mserver="1xx.xx.0.1:9333" -port=9334 -ip="1xx.xx.0.1" &>> /usr/local/seaweedfs/logs/vol1.log &
nohup /usr/local/seaweedfs/weed volume -dir=/usr/local/seaweedfs/vol2 -mserver="1xx.xx.0.1:9333" -port=9335 -ip="1xx.xx.0.1" &>> /usr/local/seaweedfs/logs/vol2.log &
nohup /usr/local/seaweedfs/weed volume -dir=/usr/local/seaweedfs/vol3 -mserver="1xx.xx.0.1:9333" -port=9336 -ip="1xx.xx.0.1" &>> /usr/local/seaweedfs/logs/vol3.log &

#查看volume其它启动参数
./weed volume -h

三、如需文件访问控制权限,配置Security模块

3.1 通过./weed scaffold -config=security创建security.toml文件

#创建security.toml
touch security.toml

#生成配置信息,编辑security.toml文件,将生成的配置信息复制并保存
./weed scaffold -config=security

3.2 通过certstrap工具生成security.toml所需秘钥

#下载certstrap
git clone https://github.com/square/certstrap
#进入
cd certstrap/
#构建
go build

#生成秘钥
certstrap init --common-name "SeaweedFS CA"
certstrap request-cert --common-name volume01
certstrap request-cert --common-name master01
certstrap request-cert --common-name filer01
certstrap request-cert --common-name client01
certstrap sign --CA "SeaweedFS CA" volume01
certstrap sign --CA "SeaweedFS CA" master01
certstrap sign --CA "SeaweedFS CA" filer01
certstrap sign --CA "SeaweedFS CA" client01

3.3 将生成的秘钥文件路径配置到security.toml中
参考:

[jwt.signing]
key = "111"
expires_after_seconds = 300           # seconds

# jwt for read is only supported with master+volume setup. Filer does not support this mode.
[jwt.signing.read]
key = "222"
expires_after_seconds = 360           # seconds

# all grpc tls authentications are mutual
# the values for the following ca, cert, and key are paths to the PERM files.
# the host name is not checked, so the PERM files can be shared.
[grpc]
ca = "/usr/local/seaweedfs/certstrap/out/SeaweedFS_CA.crt"
# Set wildcard domain for enable TLS authentication by common names
allowed_wildcard_domain = "" # .mycompany.com

[grpc.volume]
cert ="/usr/local/seaweedfs/certstrap/out/volume01.crt"
key  ="/usr/local/seaweedfs/certstrap/out/volume01.key"
allowed_commonNames = ""        # comma-separated SSL certificate common names

[grpc.master]
cert ="/usr/local/seaweedfs/certstrap/out/master01.crt"
key  ="/usr/local/seaweedfs/certstrap/out/master01.key"
allowed_commonNames = ""        # comma-separated SSL certificate common names

[grpc.filer]
cert ="/usr/local/seaweedfs/certstrap/out/filer01.crt"
key  ="/usr/local/seaweedfs/certstrap/out/filer01.key"
allowed_commonNames = ""        # comma-separated SSL certificate common names

[grpc.msg_broker]
cert = ""
key  = ""
allowed_commonNames = ""        # comma-separated SSL certificate common names

# use this for any place needs a grpc client
# i.e., "weed backup|benchmark|filer.copy|filer.replicate|mount|s3|upload"
[grpc.client]
cert ="/usr/local/seaweedfs/certstrap/out/client01.crt"
key  ="/usr/local/seaweedfs/certstrap/out/client01.key"

# volume server https options
# Note: work in progress!
#     this does not work with other clients, e.g., "weed filer|mount" etc, yet.
[https.client]
enabled = true
[https.volume]
cert = ""
key  = ""

3.4 重启seaweedfs服务

#依次杀掉进程
ps -ef | grep weed
kill -9 进程id

#重启运行《2.5 启动master服务》以及《2.6 启动volume服务》
至此文件访问控制权限已经配置生效,后续通过http发送请求至文件服务器都会在请求头部中带上Authorization。

四、带权限使用案例

4.1 获取图片可上传位置


16225186963043.jpg

Response中Authorization


16225187847210.jpg

4.2上传图片


16225190450515.jpg

如果不带Authorization,则无权上传


16225190951806.jpg

4.3查询已上传的图片

获取查询图片权限


16225193115315.jpg

查询图片


16225194236942.jpg

五、以上使用案例基于http协议。如在项目中使用,请自行下载官方推荐的sdk并集成到项目中

seaweedfs官方地址
https://github.com/chrislusf/seaweedfs

各语言sdk下载地址
https://github.com/chrislusf/seaweedfs/wiki/Client-Libraries

seaweedfs Api地址
https://github.com/chrislusf/seaweedfs/wiki/Master-Server-API

----------------- 文章如有问题,请下方回复指出,感谢查阅😁 -----------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容