FastDfs的安装及使用
FastDfs
FastDFS使用c预研编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS安装
首先安装libevent依赖,如下:
> yum -y install libevent
解压libfastcommonV1.0.7.tar.gz并编译:
> tar -zxvf libfastcommonV1.0.7.tar.gz
> cd libfastcommon-1.0.7
> ./make.sh
如果安装的时候提示没有gcc,则需要安装gcc:
> yum install -y gcc
编译完成之后,就执行安装:
> ./make.sh install
安装完成后,可以发现最终安装到了/usr/lib64
下,进入这个目录:
> cd /usr/lib64
> ll libfast*
将libfastcommon.so
拷贝到/usr/lib
下:
> cp libfastcommon.so /usr/lib
安装tracker
解压FastDFS_v5.05.tar.gz并编译:
> tar -zxvf FastDFS_v5.05.tar.gz
> cd FastDFS
> ./make.sh
编译完成之后,就执行安装:
> ./make.sh install
安装完成后,可以看到,程序被安装到/usr/bin
下,配置文件在/etc/fdfs
下,通过以下命令查看:
> cd /usr/bin
> ll fdfs*
可以看到已经安装好的fdfs相关文件,再进入/etc/fdfs
,
> cd /etc/fdfs
该文件夹下有以下三个文件:
- client.conf.sample
- storage.conf.sample
- tracker.conf.sample
进入FastDFS/conf
文件夹下,将该文件夹下的所有文件拷贝到/etc/fdfs/
下,
> cp * /etc/fdfs/
再进入/etc/fdfs
下,并修改tracker.conf
文件,
> cd /etc/fdfs/
> vim tracker.conf
将tracker.conf
中的base_path
修改为/fastdfs/tracker
,
> base_path=/fastdfs/tracker
创建该目录:
> mkdir -p /fastdfs/tracker
在该目录下,再创建如下两个文件夹storage
和client
,
> cd /fastdfs
> mkdir storage
> mkdir client
启动tracker
> cd /usr/bin
> fdfs_trackerd /etc/fdfs/tracker.conf
查看fdfs_tracker启动状态,
> ps aux|grep fdfs
如果修改了tracker.conf配置,需要重启tracker,执行如下命令:
> fdfs_trackerd /etc/fdfs/tracker.conf restart
安装storage
修改storage配置文件,进入/etc/fdfs
下,修改storage.conf文件,
> cd /etc/fdfs
> vim storage.conf
- base_path=/fastdfs/storage
- group_name=trey(这个名字可以自定义)
- store_path0=/fastdfs/storage
- tracker_server=192.168.80.129:22122(ip为tracker_server的IP)
启动tracker
> cd /usr/bin
> fdfs_storaged /etc/fdfs/storage.conf
查看fdfs_tracker启动状态,
> ps aux|grep fdfs
发现有fdfs_trackerd
和fdfs_storage
两个服务。
重启fdfs_storage
的方法见fdfs_trackerd
的重启方法。
安装client测试工具
修改client配置文件,进入/etc/fdfs
下,client.conf文件,
> cd /etc/fdfs
> vim client.conf
- base_path=/fastdfs/client
- tracker_server=192.168.80.129:22122
进入/usr/bin
下,使用fdfs_test
客户端工具测试上传,
> cd /usr/bin
> fdfs_test /etc/fdfs/client.conf upload /home/images/cat.jpg
会打印以下日志,日志中显示了上传文件的一些信息:
This is FastDFS client test program v5.05
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2018-12-03 14:26:39] DEBUG - base_path=/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.80.129, port=23000
group_name=trey, ip_addr=192.168.80.129, port=23000
storage_upload_by_filename
group_name=trey, remote_filename=M00/00/00/wKhQgVwEzJ-Afll0AACDK0RJi1A093.jpg
source ip address: 192.168.80.129
file timestamp=2018-12-03 14:26:39
file size=33579
file crc32=1145670480
example file url: http://192.168.80.129/trey/M00/00/00/wKhQgVwEzJ-Afll0AACDK0RJi1A093.jpg
storage_upload_slave_by_filename
group_name=trey, remote_filename=M00/00/00/wKhQgVwEzJ-Afll0AACDK0RJi1A093_big.jpg
source ip address: 192.168.80.129
file timestamp=2018-12-03 14:26:39
file size=33579
file crc32=1145670480
example file url: http://192.168.80.129/trey/M00/00/00/wKhQgVwEzJ-Afll0AACDK0RJi1A093_big.jpg
文件存储的路径如下:
/fastdfs/storage/data/00/00
在这个路径下,可以发现刚才上传的文件。
但是无法通过网络路径访问,为了通过网络路径访问,我们需要配置nginx,将nginx和fastdfs结合起来。
配置fast-nginx
进入fastdfs-nginx-module,并修改config文件:
> cd src
> vim config
将该文件中包含local的路径,去掉local这一层级,并保存。
配置nginx
先需要安装相关nginx依赖库,如下:
> yum install -y gcc-c++
> yum install pcre pcre-devel
> yum install zlib zlib-devel
> yum install openssl openssl-devel
解压nginx安装包,解压完毕后,进入nginx根目录,执行如下命令:
./configure \
--prefix=/usr/local/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=/home/app/fastdfs-nginx-module/src
配置完成后,进行编译和安装:
> make
> make install
安装完成后,在/usr/local
可以查看到已经安装完成的nginx文件夹。
进入/home/app/fastdfs-nginx-module/src
文件夹,将该文件夹下的配置文件mod_fastdfs.conf
拷贝到/etc/fdfs/
下:
> cd /home/app/fastdfs-nginx-module/src
> cp mod_fastdfs.conf /etc/fdfs/
进入/etc/fdfs/
下,并修改mod_fastdfs.conf
文件:
base_path=/fastdfs/tmp
进入/fastdfs
,并在其下创建tmp
文件夹:
> mkdir tmp
进入/etc/fdfs
文件夹下:
> vim mod_fastdfs.conf
- tracker_server=192.168.80.129:22122
- group_name=trey
- url_have_group_name=true
- store_path0=/fastdfs/storage
修改nginx配置文件
进入nginx根目录下的conf文件夹,修改nginx.conf文件:
> vim nginx.conf
添加以下这段配置:
server {
listen 88;
server_name 192.168.80.129;
location /trey/M00 {
ngx_fastdfs_module;
}
}
保存之后,就可以启动nginx了,进入nginx根目录下的sbin文件夹,执行./nginx -t
,测试一下nginx启动环境是否正确。根据提示,作出相应的修改,如果没有问题,则可以直接启动nginx,使用如下命令:
> ./nginx
至此,nginx启动完毕,可以通过http://192.168.80.129:80
或者http://192.168.80.129:88
来访问,出现nginx欢迎页面,则说明启动成功。
访问刚才存储的图片的地址为:http://192.168.80.129:88/trey/M00/00/00/wKhQgVwEzJ-Afll0AACDK0RJi1A093_big.jpg
重新启动nginx的命令为:
> ./nginx -s reload