centos7上单机安装fastdfs6.0.9

墨蓝 2024-04-03 09:28 128阅读 0赞

文章目录

  • 1、背景
  • 2、fastdfs的一些知识
    • 2.1 fastdfs的特点
    • 2.2 架构图
      • 2.2.1 client 介绍
      • 2.2.2 tracker-server 介绍
      • 2.2.3 storage-server 介绍
    • 2.3 fastdfs需要安装的软件
    • 2.4 为什么需要fastdfs-nginx-module
    • 2.5 fastdfs的一些资料
  • 3、fastdfs软件安装
    • 3.1 前置条件
      • 3.1.1 依赖库安装
      • 3.1.2 fastdfs源码所在目录
      • 3.1.3 tracker 和 storage server
    • 3.2 安装基础库-libfatscommon
    • 3.3 安装基础库-libserverframe
    • 3.4 安装fastdfs
      • 3.4.1 默认配置文件位置
      • 3.4.2 默认命令工具
      • 3.4.3 fastdfs默认启动脚本
    • 3.5 创建fastdfs数据根目录
    • 3.6 配置tracker server
      • 3.6.1 修改配置文件
      • 3.6.2 防火墙放行端口
      • 3.6.3 启动tracker server
    • 3.7 配置storage server
      • 3.7.1 修改配置文件
      • 3.6.2 防火墙放行端口
      • 3.6.3 启动storage server
    • 3.8 查看storage和tracker是否在通讯
    • 3.9 文件上传测试
      • 3.9.1 修改配置文件
      • 3.9.2 上传文件
    • 3.10 storage服务安装nginx
    • 3.11 安装fastdfs-nginx-module
      • 3.11.1 安装
      • 3.11.2 复制mod_fastdfs.conf文件
      • 3.11.3 编辑mod_fastdfs.conf文件
      • 3.11.5 拷贝mime.types和http.conf文件
      • 3.11.4 编辑nginx配置文件
      • 3.11.5 启动nginx
      • 3.11.6 访问之前上传的文件

1、背景

最近由于某些原因接触到了分布式存储,而像阿里云的OSS等都是需要付费的,那么有没有免费的呢?fastdfs就是一个免费的,此处记录一下如何搭建一个单机版的 fastdfs 环境。

2、fastdfs的一些知识

2.1 fastdfs的特点

  1. 分组存储,灵活简洁
  2. 对等结构,不存在单点
  3. 文件ID由FastDFS生成,作为文件访问凭证。FastDFS不需要传统的name server
  4. 和流行的web server无缝衔接,FastDFS已提供apache和nginx扩展模块
  5. 大、中、小文件均可以很好支持,支持海量小文件存储
  6. 支持多块磁盘,支持单盘数据恢复
  7. 支持相同文件内容只保存一份,节省存储空间
  8. 存储服务器上可以保存文件附加属性
  9. 下载文件支持多线程方式,支持断点续传

2.2 架构图

fastdfs架构图

2.2.1 client 介绍

客户端,即文件上传或下载的服务器,也就是我们自己项目部署的服务器。

2.2.2 tracker-server 介绍

  1. tracker-server是跟踪服务器,主要起调度作用。负责管理所有 storage server的元数据信息,比如:storage ip、port、group等信息。每个storage server在启动的时候,会向tracker server连接,上报自己的元数据信息,并与之保持周期性的心跳。
  2. tracker-server之间通常不会相互通讯

2.2.3 storage-server 介绍

  1. storage-server是存储服务器,主要用来存储各种文件。
  2. storage-server是以Group为单位,每个Group内可以有多台storage server,同一个组内多个storage server为互为备份关系。
  3. 每个Group中的机器的存储建议配置成一样大,否则以这个Group内容量最小的storage为准。
  4. storage server主动向tracker server报告状态信息

2.3 fastdfs需要安装的软件






























依赖库 备注
libfatscommon 基础库-fastdfs分离出来的公共函数
libserverframe 基础库-网络框架库
FastDFS fastdfs本地
fastdfs-nginx-module fastdfs与nginx整合模块
nginx nginx

2.4 为什么需要fastdfs-nginx-module

其实这个主要是因为,同一个group中存在多个storage server,而多个storage server之间会存在文件同步,那么可能就会出现 同步延迟 问题。
比如:
我们存在2台storage server,分别是 storageA 和 storageB。

FastDFS通过Tracker服务器,将文件放入到了storageA服务器存储。上传成功后将 文件ID 返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储storageB,在文件还没有复制完成的情况下,客户端如果用这个文件ID在storageB上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于同步延迟导致的文件无法访问错误。

2.5 fastdfs的一些资料

  1. fastdfs 源码地址 https://github.com/happyfish100/
  2. fastdfs官方论坛 http://bbs.chinaunix.net/forum.php?mod=forumdisplay&fid=240&filter=typeid&typeid=424
  3. fastdfs 配置文件解释 http://bbs.chinaunix.net/thread-1941456-1-1.html
  4. fastdfs ppt介绍 http://bbs.chinaunix.net/thread-1958475-1-1.html
  5. fastdfs faq http://bbs.chinaunix.net/thread-1920470-1-1.html

3、fastdfs软件安装

3.1 前置条件

3.1.1 依赖库安装

  1. yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel -y

3.1.2 fastdfs源码所在目录

  1. [root@fastdfs fastdfs]# pwd
  2. /opt/fastdfs
  3. [root@fastdfs fastdfs]# ls
  4. fastdfs-6.09.tar.gz fastdfs-nginx-module-1.23.tar.gz libfastcommon-1.0.61.tar.gz libserverframe-1.1.20.tar.gz nginx-1.22.0.tar.gz
  5. [root@fastdfs fastdfs]#

3.1.3 tracker 和 storage server

此处因为是fastdfs单机安装,因此 tracker server 和 storage server 安装到同一台机器上。

3.2 安装基础库-libfatscommon

  1. [root@fastdfs fastdfs]# cd /opt/fastdfs
  2. [root@fastdfs fastdfs]# tar -zxvf libfastcommon-1.0.61.tar.gz
  3. [root@fastdfs fastdfs]# cd libfastcommon-1.0.61
  4. [root@fastdfs libfastcommon-1.0.61]# ./make.sh && ./make.sh install
  5. [root@fastdfs fdfs]# ls /usr/lib64 | grep libfastcommon.so
  6. libfastcommon.so
  7. [root@fastdfs fdfs]# ls /usr/lib | grep libfastcommon.so
  8. libfastcommon.so

3.3 安装基础库-libserverframe

  1. [root@fastdfs fastdfs]# cd /opt/fastdfs
  2. [root@fastdfs fastdfs]# tar -zxvf libserverframe-1.1.20.tar.gz
  3. [root@fastdfs fastdfs]# cd libserverframe-1.1.20
  4. [root@fastdfs libfastcommon-1.0.61]# ./make.sh && ./make.sh install
  5. [root@fastdfs fdfs]# ls /usr/lib | grep libserverframe.so
  6. libserverframe.so
  7. [root@fastdfs fdfs]# ls /usr/lib64 | grep libserverframe.so
  8. libserverframe.so

3.4 安装fastdfs

  1. [root@fastdfs fastdfs]# cd /opt/fastdfs
  2. [root@fastdfs fastdfs]# tar -zxvf fastdfs-6.09.tar.gz
  3. [root@fastdfs fastdfs]# cd fastdfs-6.09
  4. [root@fastdfs fastdfs-6.09]# ./make.sh && ./make.sh install

3.4.1 默认配置文件位置

  1. [root@fastdfs fdfs]# cd /etc/fdfs/
  2. [root@fastdfs fdfs]# ll
  3. total 32
  4. -rw-r--r--. 1 root root 1909 Oct 6 22:30 client.conf
  5. -rw-r--r--. 1 root root 10246 Oct 6 22:30 storage.conf
  6. -rw-r--r--. 1 root root 620 Oct 6 22:30 storage_ids.conf
  7. -rw-r--r--. 1 root root 9138 Oct 6 22:30 tracker.conf
  8. [root@fastdfs fdfs]#

3.4.2 默认命令工具

  1. [root@fastdfs bin]# cd /usr/bin/ && ll | grep fdfs
  2. -rwxr-xr-x. 1 root root 438264 Oct 6 22:30 fdfs_appender_test
  3. -rwxr-xr-x. 1 root root 438048 Oct 6 22:30 fdfs_appender_test1
  4. -rwxr-xr-x. 1 root root 429064 Oct 6 22:30 fdfs_append_file
  5. -rwxr-xr-x. 1 root root 427736 Oct 6 22:30 fdfs_crc32
  6. -rwxr-xr-x. 1 root root 429088 Oct 6 22:30 fdfs_delete_file
  7. -rwxr-xr-x. 1 root root 429816 Oct 6 22:30 fdfs_download_file
  8. -rwxr-xr-x. 1 root root 429848 Oct 6 22:30 fdfs_file_info
  9. -rwxr-xr-x. 1 root root 440816 Oct 6 22:30 fdfs_monitor
  10. -rwxr-xr-x. 1 root root 429344 Oct 6 22:30 fdfs_regenerate_filename
  11. -rwxr-xr-x. 1 root root 1364800 Oct 6 22:30 fdfs_storaged
  12. -rwxr-xr-x. 1 root root 444152 Oct 6 22:30 fdfs_test
  13. -rwxr-xr-x. 1 root root 443336 Oct 6 22:30 fdfs_test1
  14. -rwxr-xr-x. 1 root root 571736 Oct 6 22:30 fdfs_trackerd
  15. -rwxr-xr-x. 1 root root 430048 Oct 6 22:30 fdfs_upload_appender
  16. -rwxr-xr-x. 1 root root 431080 Oct 6 22:30 fdfs_upload_file
  17. [root@fastdfs bin]#

3.4.3 fastdfs默认启动脚本

  1. [root@fastdfs init.d]# cd /opt/fastdfs/fastdfs-6.09/init.d/ && ll
  2. total 8
  3. -rwxrwxr-x. 1 root root 961 Sep 14 16:33 fdfs_storaged
  4. -rwxrwxr-x. 1 root root 963 Sep 14 16:33 fdfs_trackerd
  5. [root@fastdfs init.d]#

3.5 创建fastdfs数据根目录

  1. mkdir -p /data/fastdfs
  2. mkdir -p /data/fastdfs/tracker
  3. mkdir -p /data/fastdfs/storage
  4. mkdir -p /data/fastdfs/client

3.6 配置tracker server

3.6.1 修改配置文件

vim /etc/fdfs/tracker.conf

  1. # 配置文件是否不生效 false为生效
  2. disabled = false
  3. # tracker 服务的端口
  4. port = 22122
  5. # tracker 存储数据和日志文件的根目录,根目录需要提前创建好
  6. base_path = /data/fastdfs/tracker

3.6.2 防火墙放行端口

  1. [root@fastdfs fdfs]# firewall-cmd --zone=public --add-port=22122/tcp --permanent
  2. success
  3. [root@fastdfs fdfs]# firewall-cmd --reload
  4. success
  5. [root@fastdfs fdfs]#

3.6.3 启动tracker server

1、复制启动脚本

  1. [root@fastdfs logs]# cp /opt/fastdfs/fastdfs-6.09/init.d/fdfs_trackerd /etc/init.d/

2、启动tracker server

  1. [root@fastdfs logs]# systemctl start fdfs_trackerd
  2. `或者`
  3. [root@fastdfs logs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

3、检测tracker server 是否启动

  1. [root@fastdfs logs]# ps aux | grep fd
  2. root 6686 0.0 0.3 79556 5900 ? Sl 05:38 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
  3. root 6694 0.0 0.1 106180 1892 pts/0 R+ 05:39 0:00 grep --color=auto fd

4、检测22122端口是否被监听

  1. [root@fastdfs logs]# netstat -anp | grep 22122
  2. tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 6686/fdfs_trackerd

5、关闭tracker server

  1. [root@fastdfs logs]# /etc/init.d/fdfs_trackerd stop
  2. Stopping fdfs_trackerd (via systemctl): [ OK ]

3.7 配置storage server

3.7.1 修改配置文件

/etc/fdfs/storage.conf

  1. # 配置文件是否不生效,false 为生效
  2. disabled=false
  3. # 指定此 storage server 所在 组
  4. group_name=group1
  5. # storage server 服务的端口
  6. port=23000
  7. # Storage 数据和日志目录地址,根目录必须提前创建好
  8. base_path=/data/fastdfs/storage
  9. # 文件存储路径的个数。
  10. store_path_count=1
  11. # 配置 store_path_count 个路径,索引号从 0 开始。
  12. # 如果不配置 store_path0,那它就和 base_path 的路径一样。
  13. store_path0=/data/fastdfs/storage
  14. # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。
  15. # tracker_server 的列表 ,会主动连接 tracker_server
  16. # 当存在多个 tracker server 时,每个 tracker server 写一行
  17. tracker_server=192.168.121.137:22122
  18. # 此存储服务器上web服务器的端口
  19. http.server_port=8888

3.6.2 防火墙放行端口

  1. [root@fastdfs fdfs]# firewall-cmd --zone=public --add-port=23000/tcp --permanent
  2. success
  3. [root@fastdfs fdfs]# firewall-cmd --zone=public --add-port=8888/tcp --permanent
  4. success
  5. [root@fastdfs fdfs]# firewall-cmd --reload
  6. success
  7. [root@fastdfs fdfs]#

3.6.3 启动storage server

1、复制启动脚本

  1. [root@fastdfs logs]# cp /opt/fastdfs/fastdfs-6.09/init.d/fdfs_storaged /etc/init.d/

2、启动storage server

  1. [root@fastdfs logs]# systemctl start fdfs_storaged
  2. `或者`
  3. [root@fastdfs logs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start

3、检测storage server 是否启动

  1. [root@fastdfs logs]# ps aux | grep fd
  2. ps aux | grep fd
  3. root 6723 0.0 0.6 145092 8980 ? Sl 05:55 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
  4. root 6774 1.8 4.5 139948 68364 ? Sl 06:12 0:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
  5. root 6785 0.0 0.1 106180 1864 pts/0 R+ 06:12 0:00 grep --color=auto fd

4、检测23000端口是否被监听

  1. [root@fastdfs logs]# netstat -anp | grep 23000
  2. tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 6686/fdfs_trackerd

5、关闭storage server

  1. [root@fastdfs logs]# /etc/init.d/fdfs_storaged stop
  2. Stopping fdfs_trackerd (via systemctl): [ OK ]

3.8 查看storage和tracker是否在通讯

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
查看storage和tracker是否在通讯

3.9 文件上传测试

3.9.1 修改配置文件

vim /etc/fdfs/client.conf

  1. # 存储client的日志文件
  2. base_path = /data/fastdfs/client
  3. # tracker服务器的地址,多个写多行
  4. tracker_server = 192.168.121.137:22122

3.9.2 上传文件

  1. [root@fastdfs fastdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/fastdfs/小红帽.jpg
  2. group1/M00/00/00/wKh5iWM_VlCAUwAtAAAwWD4VeAg204.jpg
  3. [root@fastdfs fastdfs]#
  4. [root@fastdfs 00]# pwd
  5. /data/fastdfs/storage/data/00/00
  6. [root@fastdfs 00]# ls
  7. wKh5iWM_VlCAUwAtAAAwWD4VeAg204.jpg
  8. [root@fastdfs 00]#

文件id解释
文件id解释

3.10 storage服务安装nginx

  1. [root@fastdfs fastdfs]# tar -zxf nginx-1.22.0.tar.gz
  2. [root@fastdfs fastdfs]# cd nginx-1.22.0
  3. [root@fastdfs fastdfs]# ./configure
  4. [root@fastdfs fastdfs]# make
  5. [root@fastdfs fastdfs]# make install
  6. [root@fastdfs sbin]# /usr/local/nginx/sbin/nginx -v
  7. nginx version: nginx/1.22.0

1、启动nginx

  1. [root@fastdfs sbin]# /usr/local/nginx/sbin/nginx
  2. [root@fastdfs sbin]# ps aux | grep nginx
  3. root 9460 0.0 0.1 4436 1528 ? Ss 06:40 0:00 nginx: master process /usr/local/nginx/sbin/nginx
  4. nobody 9461 0.0 0.1 4880 2260 ? S 06:40 0:00 nginx: worker process
  5. root 9463 0.0 0.1 106180 1884 pts/0 R+ 06:40 0:00 grep --color=auto nginx

2、停止nginx

  1. [root@fastdfs sbin]# /usr/local/nginx/sbin/nginx -s stop
  2. [root@fastdfs sbin]# ps aux | grep nginx
  3. root 9466 0.0 0.1 106180 1860 pts/0 R+ 06:41 0:00 grep --color=auto nginx

3.11 安装fastdfs-nginx-module

3.11.1 安装

  1. [root@fastdfs sbin]# /usr/local/nginx/sbin/nginx -s stop
  2. [root@fastdfs sbin]# cd /opt/fastdfs/
  3. [root@fastdfs sbin]# tar -zxf fastdfs-nginx-module-1.23.tar.gz
  4. [root@fastdfs sbin]# cd /opt/fastdfs/nginx-1.22.0
  5. [root@fastdfs sbin]# ./configure --add-module=../fastdfs-nginx-module-1.23/src/
  6. [root@fastdfs sbin]# make && make install
  7. [root@fastdfs nginx-1.22.0]# /usr/local/nginx/sbin/nginx -V
  8. nginx version: nginx/1.22.0
  9. built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
  10. configure arguments: --add-module=../fastdfs-nginx-module-1.23/src/

3.11.2 复制mod_fastdfs.conf文件

复制 fastdfs-nginx-module-1.23 源码中的配置文件到/etc/fdfs 目录

cp /opt/fastdfs/fastdfs-nginx-module-1.23/src/mod_fastdfs.conf /etc/fdfs/

3.11.3 编辑mod_fastdfs.conf文件

vim /etc/fdfs/mod_fastdfs.conf

  1. # tracker server 的地址,多个写多行
  2. tracker_server=192.168.121.137:22122
  3. # storage server的端口
  4. storage_server_port=23000
  5. # storage server的组名
  6. group_name=group1
  7. # url上是否有组名
  8. url_have_group_name = true
  9. # 和 storage.conf配置文件中配置的一样
  10. store_path_count=1
  11. # 和 storage.conf配置文件中配置的一样
  12. store_path0=/data/fastdfs/storage

3.11.5 拷贝mime.types和http.conf文件

  1. [root@fastdfs nginx-1.22.0]# cp /opt/fastdfs/fastdfs-6.09/conf/mime.types /etc/fdfs/
  2. [root@fastdfs nginx-1.22.0]# cp /opt/fastdfs/fastdfs-6.09/conf/http.conf /etc/fdfs/

不拷贝的话,可能文件不能访问

3.11.4 编辑nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

  1. server {
  2. listen 8888;
  3. server_name 192.168.121.137;
  4. location ~/group([0-9])/ {
  5. ngx_fastdfs_module;
  6. }
  7. }

此处的8888/etc/fdfs/storage.conf中的http.server_port=8888值要一致。

3.11.5 启动nginx

  1. [root@fastdfs nginx-1.22.0]# /usr/local/nginx/sbin/nginx
  2. ngx_http_fastdfs_set pid=12113

3.11.6 访问之前上传的文件

访问fastdfs文件

发表评论

表情:
评论列表 (有 0 条评论,128人围观)

还没有评论,来说两句吧...

相关阅读