在腾讯云服务器上搭建fastdfs分布式文件存储服务器


在腾讯云服务器上搭建fastdfs分布式文件存储服务器,并整合nginx实现浏览器访问

系统环境:云服务器系统:CentOS 7.2 64位,连接工具:Xsell6

一. 下载所需压缩包

在这里插入图片描述

  1. Xshell连接系统后通过cd命令进入上传路径,使用rz命令将压缩包上传至该路径下。
[root@VM-0-11-centos ~]# cd /root/fastdfs

若fastdfs目录不存在,则可通过mkidr命令新建

[root@VM-0-11-centos ~]# mkdir fastdfs

进入fastdfs目录后通过rz命令上传文件

[root@VM-0-11-centos fastdfs]# rz

二. 安装

(1):libfastcommon是一款开源的C基础库,它是从FastDFS项目中剥离出来的C基础库,所以在安装libfastcommon之前需要安装gcc编译器

yum -y install gcc-c++

(2):libevent是FastDFS的依赖库

yum -y install libevent

(3):安装libfastcommon
将libfastcommon解压到当前目录

tar -zxvf libfastcommon.tar.gz

进入libfastcommon目录进行编译安装

./make.sh
./make.sh install

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的ibfastcommon.so文件拷贝至/usr/lib下,执行 cp /usr/lib64/libfastcommon.so /usr/lib/命令即可。

cp /usr/lib64/libfastcommon.so /usr/lib/

安装tracker(FastDFS跟踪器)

进入fastdfs目录

cd /root/fastdfs

将FastDFS_v5.05.tar.gz解压到当前目录

tar -zxvf FastDFS_v5.05.tar.gz

解压后可通过ls命令查看

[root@VM-0-11-centos fastdfs]# ls
FastDFS  fastdfs-nginx-module  fastdfs-nginx-module_v1.16.tar.gz  FastDFS_v5.05.tar.gz  libfastcommon-1.0.7  libfastcommon.tar.gz  nginx  nginx-1.12.0  nginx-1.12.0.tar.gz

进入FastDFS目录进行编译安装

cd FastDFS
./make.sh
./make.sh install

安装成功之后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

cd conf
cp  *  /etc/fdfs/

修改配置文件

vim  /etc/fdfs/tracker.conf

键盘i进入编辑模式,修改完之后Esc键,:wq保存退出,(:q!不保存强制退出)
在这里插入图片描述
创建fastdfs文件夹

mkdir  /opt/fastdfs

创建启动目录

mkdir  /usr/local/fdfs

拷贝安装目录/root/fastdfs/FastDFS下stop.sh 和restart.sh 到/usr/local/fdfs/

cp restart.sh  /usr/local/fdfs/
cp stop.sh  /usr/local/fdfs/

修改启动脚本

vim /etc/init.d/fdfs_trackerd

在这里插入图片描述
在这里插入图片描述
:wq保存退出后,注册服务

cd /etc/init.d/
chkconfig --add fdfs_trackerd

查看是否添加成功

chkconfig --list

在这里插入图片描述
启动测试,若失败会提示红色的failed字样,

service fdfs_trackerd start 

查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功,会在 /opt/fastdfs (配置的base_path)下创建 data、logs 两个目录。
在这里插入图片描述

安装storage存储服务

修改配置文件

vim /etc/fdfs/storage.conf

在这里插入图片描述
在这里插入图片描述

base_path设置storage数据文件和日志目录
store_path0实际文件存储路径
tracker_server=****:22122 tracker 服务器的IP地址和端口号(此处的ip是我的公网ip)

创建文件存储目录,后续上传的图片在此目录下

mkdir /opt/fastdfs/fdfs_storage

设置启动服务

vim  /etc/init.d/fdfs_storaged

在这里插入图片描述
在这里插入图片描述

启动配置

cd /etc/init.d/
chkconfig  - -add  fdfs_storaged
chkconfig --list

启动服务

service fdfs_storaged start 

查看Storage和Tracker是否在通信:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

在这里插入图片描述
修改/etc/fdfs/client.conf
base_path=/opt/fastdfs
tracker_server=IP:22122

vim /etc/fdfs/client.conf

测试图片上传

[root@VM-0-11-centos test]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/test/ludashi.jpg

在这里插入图片描述
返回上图url地址,代表上传成功,由于fastdfs不是一个web服务器,所以URL地址无法直接在浏览器访问。但是我们可以查看linux系统上的文件地址。

cd /opt/fastdfs/fdfs_storage/data/00/00

在这里插入图片描述

(6):配置fastdfs-nginx-module
进入上传目录解压

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

编辑配置文件

cd fastdfs-nginx-module
cd src
vim config

在这里插入图片描述
将FastDFS-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下

cp mod_fastdfs.conf /etc/fdfs/

修改mod_fastdfs.conf的内容

vim /etc/fdfs/mod_fastdfs.conf

在这里插入图片描述

在这里插入图片描述

将libfdfsclient.so拷贝至/usr/lib下

cp /usr/lib64/libfdfsclient.so /usr/lib/

安装nginx

1.C语言编译环境安装,前面已经安装过了,可以跳过

yum -y install gcc-c++

2.PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl 兼容的正则表达式库。Nginx的HTTP模块使用PCRE来解析正则表达式,所以需要在Linux上安装PCRE库。pcre-devel是使用PCRE开发的一个二次开发库。Nginx也需要这个库。

yum install -y pcre pcre-devel

zlib库提供了很多种压缩和解压缩的方式,Nginx使用zlib对HTTP包的内容进行gzip,所以需要在Linux上安装zlib库

yum install -y zlib zlib-devel

3.OpenSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库

yum install -y openssl openssl-devel

4.在上传目录下解压文件,解压完成会在当前目录下新增nginx目录

tar -zxvf nginx-1.12.2.tar.gz

创建nginx/client目录

mkdir -p /var/temp/nginx/client

configure自动配置nginx 的相关目录

configure: 自动配置nginx 的相关目录
./configure \
--prefix=/root/fastdfs/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/root/fastdfs/fastdfs-nginx-module/src

进入nginx的安装目录/root/fastdfs/nginx进行编译安装,(进入到make文件的目录./make.sh和./make.sh install亦可)

make
make install

修改配置文件,因为80端口被Tomcat占用,这里使用443端口

vim /root/fastdfs/nginx/conf/nginx.conf

在这里插入图片描述
启动nginx

/root/fastdfs/nginx/sbin/nginx

重启
/root/fastdfs/nginx/sbin/nginx -s reload
设置开机启动 – os7:需要独立设置
vim /etc/rc.d/rc.local
在这里插入图片描述
Esc,:wq保存退出

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/root/fastdfs/nginx/sbin/nginx

浏览器访问图片

开放服务器443端口后,在浏览器的地址栏输入刚刚上传返回的地址,因为浏览器默认访问80端口,使用需要再加上443端口号
在这里插入图片描述
查看nginx 日志可以看到访问记录

tail -f  -n 100 /var/log/nginx/access.log

附:Tracker和Storage的配置文件说明

tracker.conf 配置文件分析

//
配置tracker.conf这个配置文件是否生效,因为在启动fastdfs服务端进程时需要指定配置文件,所以需要使次配置文件生效。false是生效,true是屏蔽。
disabled=false

// 程序的监听地址,如果不设定则监听所有地址 bind_addr=

// tracker监听的端口 port=22122

// 链接超时设定 connect_timeout=30

// tracker在通过网络发送接收数据的超时时间 network_timeout=60

// 数据和日志的存放地点 base_path=/opt/fdfs

// 服务所支持的最大链接数 max_connections=256

// 工作线程数一般为cpu个数 work_threads=4

// 在存储文件时选择group的策略,0:轮训策略 1:指定某一个组 2:负载均衡,选择空闲空间最大的group
store_lookup=2

// 如果上面的store_lookup选择了1,则这里需要指定一个group // store_group=group2

//
在group中的哪台storage做主storage,当一个文件上传到主storage后,就由这台机器同步文件到group内的其他storage上,0:轮训策略
1:根据ip地址排序,第一个 2:根据优先级排序,第一个 store_server=0

// 选择那个storage作为主下载服务器,0:轮训策略 1:主上传storage作为主下载服务器 download_server=0

// 选择文件上传到storage中的哪个(目录/挂载点),storage可以有多个存放文件的base path 0:轮训策略
2:负载均衡,选择空闲空间最大的 store_path=0

// 系统预留空间,当一个group中的任何storage的剩余空间小于定义的值,整个group就不能上传文件了
reserved_storage_space = 4GB

// 日志信息级别 log_level=info

// 进程以那个用户/用户组运行,不指定默认是当前用户 run_by_group= run_by_user=

// 允许那些机器连接tracker默认是所有机器 allow_hosts=*

// 设置日志信息刷新到disk的频率,默认10s sync_log_buff_interval = 10

//
检测storage服务器的间隔时间,storage定期主动向tracker发送心跳,如果在指定的时间没收到信号,tracker人为storage故障,默认120s
check_active_interval = 120

// 线程栈的大小,最小64K thread_stack_size = 64KB

// storage的ip改变后服务端是否自动调整,storage进程重启时才自动调整
storage_ip_changed_auto_adjust = true

// storage之间同步文件的最大延迟,默认1天 storage_sync_file_max_delay = 86400

// 同步一个文件所花费的最大时间 storage_sync_file_max_time = 300

// 是否用一个trunk文件存储多个小文件 use_trunk_file = false

// 最小的solt大小,应该小于4KB,默认256bytes slot_min_size = 256

// 最大的solt大小,如果上传的文件小于默认值,则上传文件被放入trunk文件中 slot_max_size = 16MB

// trunk文件的默认大小,应该大于4M trunk_file_size = 64MB

// http服务是否生效,默认不生效 http.disabled=false

// http服务端口 http.server_port=8080

// 检测storage上http服务的时间间隔,<=0表示不检测 http.check_alive_interval=30

// 检测storage上http服务时所用请求的类型,tcp只检测是否可以连接,http必须返回200
http.check_alive_type=tcp

// 通过url检测storage http服务状态 http.check_alive_uri=/status.html

// if need find content type from file extension name
http.need_find_content_type=true

// 用include包含进http的其他设置 // include http.conf

storage.conf配置文件分析:

// 同tracker.conf disabled=false

// 这个storage服务器属于那个group group_name=group1

// 同tracker.conf bind_addr=

// 连接其他服务器时是否绑定地址,bind_addr配置时本参数才有效 client_bind=true

// 同tracker.conf port=23000 connect_timeout=30 network_timeout=60

// 主动向tracker发送心跳检测的时间间隔 heart_beat_interval=30

// 主动向tracker发送磁盘使用率的时间间隔 stat_report_interval=60

// 同tracker.conf base_path=/opt/fdfs max_connections=256

// 接收/发送数据的buff大小,必须大于8KB buff_size = 256KB

// 同tracker.conf work_threads=4

// 磁盘IO是否读写分离 disk_rw_separated = true

// 是否直接读写文件,默认关闭 disk_rw_direct = false

// 混合读写时的读写线程数 disk_reader_threads = 1 disk_writer_threads = 1

// 同步文件时如果binlog没有要同步的文件,则延迟多少毫秒后重新读取,0表示不延迟 sync_wait_msec=50

// 同步完一个文件后间隔多少毫秒同步下一个文件,0表示不休息直接同步 sync_interval=0

// 表示这段时间内同步文件 sync_start_time=00:00 sync_end_time=23:59

// 同步完多少文件后写mark标记 write_mark_file_freq=500

// storage在存储文件时支持多路径,默认只设置一个 store_path_count=1

// 配置多个store_path路径,从0开始,如果store_path0不存在,则base_path必须存在
store_path0=/opt/fdfs // store_path1=/opt/fastdfs2

// subdir_count * subdir_count个目录会在store_path下创建,采用两级存储
subdir_count_per_path=256

// 设置tracker_server tracker_server=x.x.x.x:22122

// 同tracker.conf log_level=info run_by_group= run_by_user=
allow_hosts=*

// 文件在数据目录下的存放策略,0:轮训 1:随机 file_distribute_path_mode=0

// 当问及是轮训存放时,一个目录下可存放的文件数目 file_distribute_rotate_count=100

// 写入多少字节后就开始同步,0表示不同步 fsync_after_written_bytes=0

// 刷新日志信息到disk的间隔 sync_log_buff_interval=10

// 同步storage的状态信息到disk的间隔 sync_stat_file_interval=300

// 线程栈大小 thread_stack_size=512KB

// 设置文件上传服务器的优先级,值越小越高 upload_priority=10

// 是否检测文件重复存在,1:检测 0:不检测 check_file_duplicate=0

// 当check_file_duplicate设置为1时,次值必须设置 key_namespace=FastDFS

// 与FastDHT建立连接的方式 0:短连接 1:长连接 keep_alive=0

// 同tracker.conf http.disabled=false http.domain_name=
http.server_port=8888 http.trunk_size=256KB
http.need_find_content_type=true // include http.conf

整合到javaWeb项目中待续……

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值