go-fastdfs

go-fastdfs是一个基于http协议的分布式文件系统,它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性能、高可靠、无中心、免维护等优点。

使用文档

安装

  1. 查找镜像
docker search go-fastdfs
  1. 创建挂载目录
mkdir -p /opt/fastdfs_data
  1. 拉取镜像
docker pull sjqzhang/go-fastdfs
  1. 运行容器
docker run -d --restart=always --name gofastdfs01 -v /opt/fastdfs_data:/data -p 8080:8080 -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs
  1. 测试访问http://127.0.0.1:8080

    页面效果图如下:
    go-fastdfs_第1张图片

配置

配置信息在主服务器目录 /opt/fastdfs_data/conf/cfg.json 文件中,内容如下

{
	"绑定端号": "端口",
	"addr": ":8080",
	"是否开启https": "默认不开启,如需启开启,请在conf目录中增加证书文件 server.crt 私钥 文件 server.key",
	"enable_https": false,
	"PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
	"peer_id": "0",
	"本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
	"host": "http://172.17.0.3:8080",
	"集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
	"peers": ["http://172.17.0.3:8080"],
	"组号": "用于区别不同的集群(上传或下载)与support_group_manage配合使用,带在下载路径中",
	"group": "group1",
	"是否支持按组(集群)管理,主要用途是Nginx支持多集群": "默认支持,不支持时路径为http://10.1.5.4:8080/action,支持时为http://10.1.5.4:8080/group(配置中的group参数)/action,action为动作名,如status,delete,sync等",
	"support_group_manage": true,
	"是否合并小文件": "默认不合并,合并可以解决inode不够用的情况(当前对于小于1M文件)进行合并",
	"enable_merge_small_file": false,
    "允许后缀名": "允许可以上传的文件后缀名,如jpg,jpeg,png等。留空允许所有。",
	"extensions": [],
	"重试同步失败文件的时间": "单位秒",
	"refresh_interval": 1800,
	"是否自动重命名": "默认不自动重命名,使用原文件名",
	"rename_file": false,
	"是否支持web上传,方便调试": "默认支持web上传",
	"enable_web_upload": true,
	"是否支持非日期路径": "默认支持非日期路径,也即支持自定义路径,需要上传文件时指定path",
	"enable_custom_path": true,
	"下载域名": "用于外网下载文件的域名,不包含http://",
	"download_domain": "",
	"场景列表": "当设定后,用户指的场景必项在列表中,默认不做限制(注意:如果想开启场景认功能,格式如下:'场景名:googleauth_secret' 如 default:N7IET373HB2C5M6D ",
	"scenes": [],
	"默认场景": "默认default",
	"default_scene": "default",
	"是否显示目录": "默认显示,方便调试用,上线时请关闭",
	"show_dir": true,
	"邮件配置": "",
	"mail": {
		"user": "[email protected]",
		"password": "abc",
		"host": "smtp.163.com:25"
	},
	"告警接收邮件列表": "接收人数组",
	"alarm_receivers": [],
	"告警接收URL": "方法post,参数:subject,message",
	"alarm_url": "",
	"下载是否需带token": "真假",
	"download_use_token": false,
	"下载token过期时间": "单位秒",
	"download_token_expire": 600,
	"是否自动修复": "在超过1亿文件时出现性能问题,取消此选项,请手动按天同步,请查看FAQ",
	"auto_repair": true,
	"文件去重算法md5可能存在冲突,默认md5": "sha1|md5",
	"file_sum_arithmetic": "md5",
	"管理ip列表": "用于管理集的ip白名单,",
	"admin_ips": ["127.0.0.1"],
	"是否启用迁移": "默认不启用",
	"enable_migrate": false,
	"文件是否去重": "默认去重",
	"enable_distinct_file": true,
	"是否开启跨站访问": "默认开启",
	"enable_cross_origin": true,
	"是否开启Google认证,实现安全的上传、下载": "默认不开启",
	"enable_google_auth": false,
	"认证url": "当url不为空时生效,注意:普通上传中使用http参数 auth_token 作为认证参数, 在断点续传中通过HTTP头Upload-Metadata中的auth_token作为认证参数,认证流程参考认证架构图",
	"auth_url": "",
	"下载是否认证": "默认不认证(注意此选项是在auth_url不为空的情况下生效)",
	"enable_download_auth": false,
	"默认是否下载": "默认下载",
	"default_download": true,
	"本机是否只读": "默认可读可写",
	"read_only": false,
	"是否开启断点续传": "默认开启",
	"enable_tus": true,
	"同步单一文件超时时间(单位秒)": "默认为0,程序自动计算,在特殊情况下,自已设定",
	"sync_timeout": 0
}

单节点部署默认即可,按需修改相关内容。

集群配置

参考示例配置,不可将此内容copy至正式环境中(注释内容JSON无法读取)

{
	"绑定端号": "端口",
	"addr": ":8080",
	"是否开启https": "默认不开启,如需启开启,请在conf目录中增加证书文件 server.crt 私钥 文件 server.key",
	"enable_https": false,
	"PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
	#"peer_id": "0", 
	"本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
	#"host": "http://192.168.3.231:8080",
	"集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
	#"peers": ["http://192.168.3.231:8080","http://192.168.3.232:8080"],
	"组号": "用于区别不同的集群(上传或下载)与support_group_manage配合使用,带在下载路径中",
	#"group": "group1",
	"是否支持按组(集群)管理,主要用途是Nginx支持多集群": "默认支持,不支持时路径为http://10.1.5.4:8080/action,支持时为http://10.1.5.4:8080/group(配置中的group参数)/action,action为动作名,如status,delete,sync等",
	"support_group_manage": true,
	"是否合并小文件": "默认不合并,合并可以解决inode不够用的情况(当前对于小于1M文件)进行合并",
	"enable_merge_small_file": false,
    "允许后缀名": "允许可以上传的文件后缀名,如jpg,jpeg,png等。留空允许所有。",
	"extensions": [],
	"重试同步失败文件的时间": "单位秒",
	"refresh_interval": 1800,
	"是否自动重命名": "默认不自动重命名,使用原文件名",
	"rename_file": false,
	"是否支持web上传,方便调试": "默认支持web上传",
	"enable_web_upload": true,
	"是否支持非日期路径": "默认支持非日期路径,也即支持自定义路径,需要上传文件时指定path",
	"enable_custom_path": true,
	"下载域名": "用于外网下载文件的域名,不包含http://",
	"download_domain": "",
	"场景列表": "当设定后,用户指的场景必项在列表中,默认不做限制(注意:如果想开启场景认功能,格式如下:'场景名:googleauth_secret' 如 default:N7IET373HB2C5M6D ",
	"scenes": [],
	"默认场景": "默认default",
	"default_scene": "default",
	"是否显示目录": "默认显示,方便调试用,上线时请关闭",
	"show_dir": true,
	"邮件配置": "",
	"mail": {
		"user": "[email protected]",
		"password": "abc",
		"host": "smtp.163.com:25"
	},
	"告警接收邮件列表": "接收人数组",
	"alarm_receivers": [],
	"告警接收URL": "方法post,参数:subject,message",
	"alarm_url": "",
	"下载是否需带token": "真假",
	"download_use_token": false,
	"下载token过期时间": "单位秒",
	"download_token_expire": 600,
	"是否自动修复": "在超过1亿文件时出现性能问题,取消此选项,请手动按天同步,请查看FAQ",
	"auto_repair": true,
	"文件去重算法md5可能存在冲突,默认md5": "sha1|md5",
	"file_sum_arithmetic": "md5",
	"管理ip列表": "用于管理集的ip白名单,",
	#"admin_ips": ["127.0.0.1","192.168.3.231","192.168.3.232"],
	"是否启用迁移": "默认不启用",
	"enable_migrate": false,
	"文件是否去重": "默认去重",
	"enable_distinct_file": true,
	"是否开启跨站访问": "默认开启",
	"enable_cross_origin": true,
	"是否开启Google认证,实现安全的上传、下载": "默认不开启",
	"enable_google_auth": false,
	"认证url": "当url不为空时生效,注意:普通上传中使用http参数 auth_token 作为认证参数, 在断点续传中通过HTTP头Upload-Metadata中的auth_token作为认证参数,认证流程参考认证架构图",
	"auth_url": "",
	"下载是否认证": "默认不认证(注意此选项是在auth_url不为空的情况下生效)",
	"enable_download_auth": false,
	"默认是否下载": "默认下载",
	"default_download": true,
	"本机是否只读": "默认可读可写",
	"read_only": false,
	"是否开启断点续传": "默认开启",
	"enable_tus": true,
	"同步单一文件超时时间(单位秒)": "默认为0,程序自动计算,在特殊情况下,自已设定",
	"sync_timeout": 0
}

重启容器

# 查看运行中的容器
docker ps -a

# 重启容器
docker restart 容器ID

测试集群效果

1. 访问  http://192.168.3.231:8080/
	选择任意一张图片(文件都可)默认参数直接上传,获取到的返回信息如下
	
	{
  "data": {
    "domain": "http://192.168.3.231:8080",
    "md5": "336e2f1058fd004c20b6574e5d3d5d35",
    "mtime": 1610432741,
    "path": "/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png",
    "retcode": 0,
    "retmsg": "",
    "scene": "default",
    "scenes": "default",
    "size": 137846,
    "src": "/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png",
    "url": "http://192.168.3.231:8080/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png?name=vlcsnap-2021-01-10-22h09m25s629.png\u0026download=1"
  },
  "message": "",
  "status": "ok"
}

2. 访问url链接下载文件,将\u0026 转义 &
http://192.168.3.231:8080/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png?name=vlcsnap-2021-01-10-22h09m25s629.png&download=1
	可正常下载文件信息
	
3. 将链接中IP改为集群中另一台服务器IP
http://192.168.3.232:8080/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png?name=vlcsnap-2021-01-10-22h09m25s629.png&download=1
	同样可以正常访问
	

注:如果上传文件为图片格式,download 参数设为 0 即可在浏览器中预览
	设置width & height可设置预览图片大小
http://192.168.3.232:8080/group1/default/20210112/14/25/1/vlcsnap-2021-01-10-22h09m25s629.png?name=vlcsnap-2021-01-10-22h09m25s629.png&download=0&width=100&height=300

go-fastdfs-web

Go-Fastdfs web管理平台

go-fastdfs-web地址

安装

  1. 查找镜像
docker search fastdfsweb
  1. 拉取镜像
docker pull perfree/fastdfsweb
  1. 运行容器
docker run --name fastdfsweb -d -p 8088:8088 perfree/fastdfsweb

配置

测试访问http://127.0.0.1:8088

效果图

go-fastdfs_第2张图片

你可能感兴趣的:(中间件,docker,go-fastdfs)