go-fastdfs 分布式文件系统搭建

175 阅读4分钟

推荐博客:blog.csdn.net/Richardlygo…

官方网站:github.com/sjqzhang/go… 下载文件

image.png

1.上传到服务器

2.修改权限

root# chmod +x fileserver

3、生成配置文件

运行一下,然后杀死程序即可生成各种需要的配置文件,还是很人性化的 root# ./fileserver

4.配置

root# tree -L 2
.
├── conf
│   └── cfg.json
├── data
│   ├── 20190517
│   ├── 20190518
│   ├── 20190519
│   ├── 20190520
│   ├── 20190521
│   ├── 20190522
│   ├── 20190523
│   ├── fileserver.db
│   ├── log.db
│   └── stat.json
├── files
│   ├── _big
│   └── default
├── fileserver
├── log
│   ├── access.log
│   ├── fileserver.log
│   └── tusd.log
└── static
    └── uppy.html
 
16 directories, 7 files

需要修改 conf 目录下的 cfg.json 文件;

这里添加了两台机器,需要把两台机器的 IP 地址和端口号 添加到 peers 的组里面,这样才能做到相互备份;

其余地方根据自己需要修改,这里用默认配置;

当然,第二台机器也需要做同样的处理;

root# cat conf/cfg.json 
{
    "绑定端号": "端口",
    "addr": ":8080",
    "PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
    "peer_id": "2",
    "本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
    "host": "http://172.16.13.103:8080",
    "集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
    "peers": ["http://172.16.13.103:8080","http://172.16.13.104:8080"],
    "组号": "用于区别不同的集群(上传或下载)与support_group_upload配合使用,带在下载路径中",
    "group": "group1",
    "是否合并小文件": "默认不合并,合并可以解决inode不够用的情况(当前对于小于1M文件)进行合并",
    "enable_merge_small_file": false,
    "重试同步失败文件的时间": "单位秒",
    "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": "abc@163.com",
        "password": "abc",
        "host": "smtp.163.com:25"
    },
    "告警接收邮件列表": "接收人数组",
    "alram_receivers": [],
    "告警接收URL": "方法post,参数:subjet,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",
    "是否支持按组(集群)管理,主要用途是Nginx支持多集群": "默认不支持,不支持时路径为http://10.1.5.4:8080/action,支持时为http://10.1.5.4:8080/group(配置中的group参数)/action,action为动作名,如status,delete,sync等",
    "support_group_manage": false,
    "管理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
}

5启动

// 此处就直接运行了,当然也可以自己编写管理脚本
root# ./fileserver &   (如果不好用就 用  ./fileserver server &)
// 检查运行状态
root# ps -ef | grep fileserver 
ubuntu    38193  37927  0 May23 pts/0    00:01:00 ./fileserver

6使用

此时就可以正常使用了,打开浏览器,测试下 web 上传功能;

端口号默认为:8080,我的地址就是:172.16.13.103:8080

upload-web