基本原理:
fastDFS是一个分布式文件存储系统,由tracker和storage两个服务组成.tracker负责查找文件存储的路径,storage负责存储文件.当一个文件请求到达fastDFS后,先找tracker服务查询文件存储的路径,然后根据路径请求storage服务访问文件资源.当文件上传的时候storage和tracker服务进行通信,将上传文件的位置信息通知给tracker.
由于fastDFS内部采用的通信协议是FTP,因此只安装fastDFS无法在浏览器地址栏通过http协议访问上传到fastDFS上的资源,因此需要借助强大nginx+fastdfs-nginx-module插件来实现浏览器http协议进行资源访问.
一、安装gcc
命令: yum install make cmake gcc gcc-c++
二、安装libfastcommon
1.上传:libfastcommon-1.0.38.tar.gz到文件目录下,进行解压:
命令:tar -xvf libfastcommon-1.0.38.tar.gz -c 解压到的目录
2.进入目录:cd /usr/local/解压目录/libfastcommon/
,进行编译安装:
编译:./make.sh
安装:./make.sh install
3.进行软件创建.由于fastDFS主程序设置的目录为/usr/local/lib/,所以我们需要创建/usr/lib64/下的一些核心执行程序的软链接文件到该目录下:
命令:mkdir /usr/local/lib/
命令:ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
命令:ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
三、安装fastDFS
1.进入到fastDFS.tar.gz目录下,解压;
命令:tar -zxvf fastdfs-5.09.tar.gz -c 解压到的目录
(这里用的5.09版本)
2.编译安装:
命令:cd /解压带到的目录/FastDFS
编译:./make.sh
安装:./make.sh install
- 注:如果编译时显示命令找不到,使用以下命令进行安装命令:
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
- 注: 如果编译过程中有错误,换个版本试一下,之前用的fastdfs-5.05.tar.gz编译时有问题,换成fastdfs-5.09.tar.gz后问题解决;
3.因为fastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在了/usr/bin/下,所以需要修改FastDFS配置文件的路径,也就是需要修改两个配置文件:
命令:vim /etc/init.d/fdfs_storaged
进行全局替换命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
进行全局替换命令:%s+/usr/local/bin+/usr/bin
四、配置tracker:
1.安装完fastDFS,配置文件默认在/etc/fdfs/目录下,进入/etc/fdfs目录,有三个.sample后缀的文件(自动生成的fdfs模板配置文件),通过cp命令拷贝tracker.conf.sample,删除.sample后缀作为正式文件;
2.编辑tracker.conf文件:
- base_path=自定义路径: tracker存储data和log的跟路径(目录必须存在)
- port=22122 #tracker默认22122
- http.server_port=8080 #请求资源时http端口(默认8080),nginx就是监听该端口拦截请求
注:无论是tracker单体,还是tracker集群,配置以上3项即可;
3.启动tracker(支持start|stop|restart):
启动命令:/etc/init.d/fdfs_trackerd start
停止命令: /etc/init.d/fdfs_trackerd stop
查看进程命令:ps -ef | grep fdfs 或者 netstat -tunpl | grep fdfs
查看启动日志:tail -f /base_path配置的路径/logs/trackerd.log
五、配置storage:
1.进入/etc/fdfs目录,用cp命令拷贝storage.conf.sample,删除.sample后缀作为正式文件;
2.使用命令:vi storage.conf
修改storage配置;
- group_name=group1: 第一组就是group1,第二组就是group2
- base_path=自定义路径: storage存储data和log的跟路径(目录必须存在)
- port=23000: storge默认端口,同一个组的storage端口号需一致
- store_path_count=1: 存储路径个数,需要和store_path个数匹配
- store_path0=文件存储路径: 如果为空,则使用base_path
- tracker_server=监听的tracker的ip:端口 (多个tracker可以添加多条来配置tracker集群)
- Http.server_port=8888: 对外开放的端口号
3.启动storage(支持start|stop|restart):
启动命令: /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
停止命令: /usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
六、通过monitor命令来查看storage信息:
命令: /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
七、测试fastDFS配置是否成功,测试文件上传(不需要测试时直接忽略)
1.进入/etc/fdfs/目录下,cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2.修改client.conf配置文件:
- base_path=自定义路径: client存储data和log的跟路径(目录必须存在)
- tracker_server=tracker的ip和端口
3.使用命令进行文件上传:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf 文件全路径名
返回文件存储路径即上传成功
八、安装Nginx和fastdfs-nginx-module模块
fastDFS上传文件可以直接上传,下载的时候考虑到用户量大,下载慢的问题,需要结合nginx进行负载均衡配置,nginx与fastDFS进行负载均衡时,安装需要配置fastdfs-nginx-module;
安装步骤:
1. 上传nginx-1.16.1.tar.gz到文件目录下,进行解压:
tar -xvf nginx-1.16.1.tar.gz
2.上传fastdfs-nginx-module-1.20.tar.gz到文件目录下,进行解压::
tar -xvf fastdfs-nginx-module-1.20.tar.gz
3.安装依赖的库(此步骤先跳过,先配置安装,有问题在根据需要安装)
apt-get update
apt-get install libpcre3 libpcre3-dev openssl libssl-dev libperl-dev
4.在nginx中配置fastdfs-nginx-module插件:
- 进入nginx解压后的目录执行配置命令:
./configure --prefix=/usr/local/nginx --add-module=fastdfs-nginx-module-master解压路径/src/
- –prefix=/usr/local/nginx:表示nginx需要安装到的目录;
- –add-module=fastdfs-nginx-module解压路径/src/:
安装nginx的时候添加fastDFS-nginx-module的配置,路径为解压路径+/src/;
5.进入nginx解压后的目录执行编译和安装命令:
make
make install
6.配置Nginx和fastdfs-nginx-module:
1)安装完后会在fastdfs-nginx-module-master解压路径/src/ 目录下生成mod_fastdfs.conf文件,将该文件拷贝到/etc/fastdfs/目录下;
2)使用vim
命令修改该配置文件:
- connect_timeout = 10;
- tracker_server = tracker的ip:端口号(22122)
- url_have_group_name = true;//表示访问fastDFS文件时url是否带组的信息,如:group0
- store_path0=fastDFS文件存储的目录(目录为storage的data目录的上级目录)
7.解压缩后的fastdfs解压目录conf目录中有个http.conf和mime.types文件,将这两个文件拷贝到/etc/fastdfs/目录下;
8.配置nginx的配置文件:
进入目录: cd /etc/local/nginx/conf/
修改配置文件:vim nginx.conf
为了让nginx能够提供fastDFS中的文件,需要进行如下配置:
server{
listen 8888;
server_name localhost;
location ~/group[0-9]{//当请求nginx路径中有group时去访问fastDFS
ngx_fastdfs module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
9.以上步骤配置完成后,确认端口为开放状态即可通过浏览器地址栏进行资源访问.