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

本文基于go-fastdfs开源项目,搭建分布式文件系统。
前言:做了一个爬虫项目需要处理大量图片,之前的方案是爬取到图片后上传oss,
但是有天突然发现oss图片读取会出现图片损坏的情况,于是准备搭建内部的文件系统,找了一些开源项目最后选择了go语言写的go-fastdfs。
相关介绍:https://sjqzhang.github.io/go-fastdfs/#character

一、安装

1.linux版本

打开项目地址https://github.com/sjqzhang/go-fastdfs查看版本,替换下方下载版本号
在这里插入图片描述

#查看系统盘
df -h

在这里插入图片描述

#进入磁盘空间较大的目录
cd /var
# 创建文件夹
mkdir fastdfs && cd fastdfs
#替换下载版本号
wget --no-check-certificate  https://github.com/sjqzhang/go-fastdfs/releases/download/v1.3.9/fileserver -O fileserver && chmod +x fileserver && ./fileserver

下载完毕,启动正常。退出,查看文件目录,至此下载安装完成。
基于go-fastdfs搭建分布式文件系统_第1张图片

2.windows版本

下载地址
点击下载exe
基于go-fastdfs搭建分布式文件系统_第2张图片
直接运行exe生成相关文件

二、防火墙配置

#查看服务器端口是否开启
firewall-cmd --query-port=8080/tcp
#开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
#重启防火墙,检查端口是否开启
firewall-cmd --reload && firewall-cmd --query-port=8080/tcp
#启动go-fastdfs
./fileserver

访问
http://192.168.0.199:8080/
基于go-fastdfs搭建分布式文件系统_第3张图片

三、配置

#编辑配置文件
vim conf/cfg.json
#默认配置如下,原作者写的相当详细
{
        "绑定端号": "端口",
        "addr": ":8080",
        "是否开启https": "默认不开启,如需启开启,请在conf目录中增加证书文件 server.crt 私钥 文件 server.key",
        "enable_https": false,
        "PeerID": "集群内唯一,请使用0-9的单字符,默认自动生成",
        "peer_id": "2",
        "本主机地址": "本机http地址,默认自动生成(注意端口必须与addr中的端口一致),必段为内网,自动生成不为内网请自行修改,下同",
        "host": "http://192.168.0.199:8080",
        "集群": "集群列表,注意为了高可用,IP必须不能是同一个,同一不会自动备份,且不能为127.0.0.1,且必须为内网IP,默认自动生成",
        "peers": ["http://192.168.0.199: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
}

四、扩展之web页面

GitHub地址
基于go-fastdfs搭建分布式文件系统_第4张图片
在这里插入图片描述
下载获取大礼包
基于go-fastdfs搭建分布式文件系统_第5张图片

mkdir web && cd web
#上传文件
rz -y 
#解压
unzip go-fastdfs-web-linux-jre.zip 
#相关指令
#运行
./goFastDfsWeb.sh start
#查看运行状态
./goFastDfsWeb.sh status
#重新启动
./goFastDfsWeb.sh restart
#停止
./goFastDfsWeb.sh stop

cd go-fastdfs-web/
chmod +x goFastDfsWeb.sh
./goFastDfsWeb.sh start
#查看服务器端口是否开启
firewall-cmd --query-port=8088/tcp
#开启端口
firewall-cmd --zone=public --add-port=8088/tcp --permanent
#重启防火墙,检查端口是否开启
firewall-cmd --reload && firewall-cmd --query-port=8088/tcp

五、扩展之https

#编辑conf下的配置
vim cfg.json 
#"是否开启https": "默认不开启,如需启开启,请在conf目录中增加证书文件 server.crt 私钥 文件 server.key"
"enable_https": true,
#请参考文档https://sjqzhang.github.io/go-fastdfs/ca.html

未完待续。。。

你可能感兴趣的:(linux,linux,centos,nginx,运维)