212-fastDFS安装使用






fastDFS安装使用

fastDFS是用c语言编写的一款开源的分布式文件系统
fastDFS为互联网量身定制,考虑了
1.冗余备份
2.负载均衡
3.线性扩容
等机制
使用fastDFS很容易可以搭建一套高性能的文件服务器集群
来提供文件上传,下载等服务



优点:
FastDFS架构包括Tracker server和Storage server
客户端请求Tracker server进行文件上传,下载
通过Tracker server调度
最终由storage server完成文件的上传和下载

tracker server的作用是负载均衡和调度
通过tracker server在文件上传的时候
可以根据一些方法找到storage serer提供文件上传服务
可以将tracker称为追踪服务器或调度服务器

storage server作用是文件存储
客户端上传的文件最终存储在storage服务器上
storage server没有实现自己的文件系统 
而是利用操作系统的文件系统来管理文件
可以将storage称为存储服务器



服务端两个角色: 

Tracker:管理集群,tracker 也可以实现集群。每个 tracker 节点地位平等。收集 Storage 集群的状态。 

Storage:实际保存文件 

Storage 分为多个组,每个组之间保存的文件是不同的。每 个组内部可以有多个成员,组成员内部保存的内容是一样的,组成员的地位是一致的,没有 主从的概念。







##### 3.2.5FastDFS安装

###### 3.2.5.1安装FastDFS依赖包

1. 解压缩libfastcommon-master.zip
2. 进入到libfastcommon-master的目录中
3. 执行**./make.sh**
4. 执行**sudo ./make.sh install**

###### 3.2.5.2安装FastDFS

1. 解压缩fastdfs-master.zip
2. 进入到 fastdfs-master目录中
3. 执行 **./make.sh**
4. 执行 **sudo ./make.sh install**

###### 3.2.5.3配置跟踪服务器tracker

1. ```shell
   sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
   ```

2. 在/home/itcast/目录中创建目录 fastdfs/tracker      

   ```shell
   mkdir -p /home/itcast/fastdfs/tracker
   ```

3. 编辑/etc/fdfs/tracker.conf配置文件    sudo vim /etc/fdfs/tracker.conf

​        修改 base_path=/home/itcast/fastdfs/tracker

###### 3.2.5.4配置存储服务器storage 

1. ```
   sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
   ```

2. 在/home/itcast/fastdfs/ 目录中创建目录 storage

   ```shell
   mkdir –p /home/itcast/fastdfs/storage
   ```

3. 编辑/etc/fdfs/storage.conf配置文件  sudo vim /etc/fdfs/storage.conf

   修改内容:

   ```shell
   base_path=/home/itcast/fastdfs/storage
   store_path0=/home/itcast/fastdfs/storage
   tracker_server=自己ubuntu虚拟机的ip地址:22122
   ```

   

###### 3.2.5.5启动tracker和storage

进入到/etc/fdfs/下面执行以下两条指令

```shell
sudo  fdfs_trackerd  /etc/fdfs/tracker.conf
sudo fdfs_storaged  /etc/fdfs/storage.conf
```

###### 3.2.5.6测试是否安装成功

1. **sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf **
2. 编辑/etc/fdfs/client.conf配置文件  **sudo vim /etc/fdfs/client.conf**

修改内容:

```shell
base_path=/home/itcast/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
```

3. 上传文件测试(fastDHT)

   sudo fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件 

   如果返回类似**group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg **的文件id则说明文件上传成功

###### 3.2.5.7安装fastdfs-nginx-module 

1. 解压缩 nginx-1.8.1.tar.gz

2. 解压缩 fastdfs-nginx-module-master.zip

3. 进入nginx-1.8.1目录中

4. 执行

   ```shell
   sudo ./configure  --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src
   ```

   注意:**这时候会报一个错,说没有PCRE库**

   ![1538183542474](.\assets\1538183542474.png)

   下载缺少的库

   ```shell
   sudo apt-get install libpcre3 libpcre3-dev 
   ```

   + 首先你需要去更换源,因为ubuntu自带的源没有这个库

   + 更换下载源为阿里的源

   + 先把原来的源文件备份

     ```shell
     sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
     ```

   + 编辑源文件

     ```shell
     sudo vim /etc/apt/sources.list
     ```

     把原来的内容全部删掉,粘贴一下内容:

     ```shell
     deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
      
     deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
      
     deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
      
     deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
      
     deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
     deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
     ```

     更换完源之后执行

     ```shell
     sudo apt-get  update
     sudo apt-get install libpcre3 libpcre3-dev
     ```

     然后进入nginx-1.8.1目录中,再次执行:

     ```shell
     sudo ./configure  --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module-master解压后的目录的绝对路径/src
     ```

     这时候还会报一个错(错误还真多),错误原因是因为nginx编译的时候把警告当错误处理,事实上这个警告并不影响(程序员忽略警告):

     ![1538184263769](.\assets\1538184263769.png)

     解决方法:

     找到objs目录下的Makefile

     vim Makefile

     删掉里面的-Werror(**如果没有修改权限,修改一下这个文件的权限,`chmod 777 Makefile`**)

     ![1538185926173](.\assets\1538185926173.png)

     然后回到nginx-1.8.1目录中

     执行完成后执行**sudo make**

     执行**sudo make install** 

     

5. sudo cp fastdfs-nginx-module-master解压后的目录中src下mod_fastdfs.conf   /etc/fdfs/mod_fastdfs.conf

6. sudo vim /etc/fdfs/mod_fastdfs.conf

   修改内容:

   ```shell
   connect_timeout=10
   tracker_server=自己ubuntu虚拟机的ip地址:22122
   url_have_group_name=true
   store_path0=/home/python/fastdfs/storage
   ```

7. sudo cp 解压缩的fastdfs-master目录中的conf中的http.conf  /etc/fdfs/http.conf

8. sudo cp 解压缩的fastdfs-master目录中conf的mime.types /etc/fdfs/mime.types

9. sudo vim /usr/local/nginx/conf/nginx.conf

   在http部分中添加配置信息如下:

   ```shell
   server {
               listen       8888;
               server_name  localhost;
               location ~/group[0-9]/ {
                   ngx_fastdfs_module;
               }
               error_page   500 502 503 504  /50x.html;
               location = /50x.html {
               root   html;
               }
           }
   
   ```

10. 启动nginx

  sudo  /usr/local/nginx/sbin/nginx









先把上传图片的代码抽离出来

func UploadImage(this*beego.Controller,filePath string)string{
	//1.那数据
	//那标题
	f,h,err:=this.GetFile(filePath)

	defer f.Close()
	//上传文件处理
	//1.判断文件格式
	ext := path.Ext(h.Filename)
	if ext != ".jpg" && ext != ".png"&&ext != ".jpeg"{
		beego.Info("上传文件格式不正确")
		return ""
	}

	//2.文件大小
	if h.Size>5000000{
		beego.Info("文件太大,不允许上传")
		return ""
	}

	//3.不能重名
	fileName := time.Now().Format("2006-01-02 15:04:05")


	err2:=this.SaveToFile(filePath,"./static/img/"+fileName+ext)
	if err != nil{
		beego.Info("上传文件失败")
		return ""
	}

	if err2 != nil{
		beego.Info("上传文件失败",err2)
		return ""
	}
	return "/static/img/"+fileName+ext
}






 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
go-fastdfs是一个开源的分布式文件系统,被广泛应用于大规模文件存储和传输的场景中。然而,就像其他软件一样,go-fastdfs也存在一些潜在的漏洞。 首先,由于go-fastdfs的设计初衷是快速的文件上传和下载,因此可能在安全性方面存在一些弱点。例如,由于缺乏严格的访问控制机制,未经授权的用户可能能够访问和下载存储在go-fastdfs上的文件。这可能导致敏感信息泄露的风险。 其次,go-fastdfs的文件上传功能可能存在文件类型验证不严格的问题。攻击者可以通过伪装文件类型来上传恶意文件,从而危害系统安全。例如,攻击者可以将具有恶意程序的文件伪装成图片进行上传,一旦用户下载并打开这些文件,就可能被恶意程序攻击。 此外,还有可能存在go-fastdfs的路径遍历漏洞。攻击者可能通过构造特定的请求来绕过路径限制,访问系统中的敏感文件。这可能导致服务器的文件系统被恶意篡改,或者对系统的任意代码执行造成风险。 为了减少这些漏洞的风险,建议用户在使用go-fastdfs时采取以下措施: 1. 定期更新和维护go-fastdfs的最新版本,以确保修复了已知的漏洞和安全问题。 2. 配置严格的访问控制机制,限制用户对文件的访问权限,并禁止未经授权的访问。 3. 对上传的文件进行严格的文件类型验证,确保只有合法的文件类型被上传和下载。 4. 配置防火墙和入侵检测系统,以提高系统的安全性并及时检测到潜在的攻击。 5. 定期进行系统漏洞扫描和安全审计,及时发现并修复潜在的漏洞和安全风险。 总而言之,go-fastdfs作为一个分布式文件系统,虽然存在一些漏洞,但通过采取相应的安全措施,可以有效减少潜在的安全风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值