docker 搭建 gofastdfs

1、拉取镜像

docker pull sjqzhang/go-fastdfs

 

2、创建挂载目录

mkdir -p /home/dockerdata/gofastdfs/data

 

3、运行容器

docker run -d  --restart=always --name gofastdfs -v /home/dockerdata/gofastdfs/data:/data -p 9999:8080 -e GO_FASTDFS_DIR=/data sjqzhang/go-fastdfs

 

4、修改参数,绿色部分为关键需要修改的地方,我采用的是自定义认证

vi /home/dockerdata/gofastdfs/data/conf/cfg.json
{
"绑定端号": "端口", "addr": ":8080", "是否开启https": "默认不开启,如需启开启,请在conf目录中增加证书文件 server.crt 私钥 文件 server.key", "enable_https": false, "PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成", "peer_id": "2", "本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同", "host": "http://172.17.0.13:8080", "集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成", "peers": ["http://172.17.0.13: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": true, "是否支持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": "abc@163.com", "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","172.168.1.131"], "是否启用迁移": "默认不启用", "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": "http://test.xxxxx.com/api/gofastdfs-auth", "下载是否认证": "默认不认证(注意此选项是在auth_url不为空的情况下生效)", "enable_download_auth": false, "默认是否下载": "默认下载", "default_download": false, "本机是否只读": "默认可读可写", "read_only": false, "是否开启断点续传": "默认开启", "enable_tus": true, "同步单一文件超时时间(单位秒)": "默认为0,程序自动计算,在特殊情况下,自已设定", "sync_timeout": 0 }

 

 

5、自定义认证Java代码  ,因为是自己拆分的字符串,所以token中不能带有 = &两个特殊符号

    @ResponseBody
    @PostMapping(value = "gofastdfs-auth")
    public String gofastdfsAuth(HttpServletRequest request) {
        try {
            ServletInputStream inputStream = request.getInputStream();
            String copyToString = StreamUtils.copyToString(inputStream, Charset.defaultCharset());
            copyToString = URLDecoder.decode(copyToString, "UTF-8");
            String[] split = copyToString.split("&");
            Map<String, String> map = new HashMap<>();
            for (String params : split) {
                String[] split2 = params.split("=");
                map.put(split2[0], split2.length == 2 ? split2[1] : null);
            }
            return GofastdfsFileHandler.AUTH_TOKEN.equals(map.get("auth_token")) ? "ok" : "fail";
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "fail";
    }

 

 

分享一个淘宝、京东、拼多多、饿了么、美团、抖音等等买东西后真实返钱小技巧,

打车、外卖领券,充值话费95折好像也可以

使用教程用微信扫下方二维码查看详细说明

 

posted @ 2020-05-18 18:20  Binz  阅读(1339)  评论(0)    收藏  举报