FastDFS是一款开源的轻量级分布式文件系统纯C实现,支持Linux、FreeBSD等UNIX系统类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性FastDFS可以看做是基于文件的key value pair存储系统,称作分布式文件存储服务更为合适。
FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。
存储节点存储文件,完成文件管理的所有功能,就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。
配置虚拟机上网
yum -y install wget
yum -y install gcc
yum -y install perl
查看IP地址
ip addr
启动关闭服务
systemctl start/stop/restart <服务名>
配置网卡
TYPE=Ethernet
BOOTPROTO=no
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=04d204f1-8831-42b4-8d64-c4fc7af133d9
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.2.138
GATEWAY=192.168.2.2
DNS1=114.114.114.114
下载libfastcommon
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.35.tar.gz
tar -zxvf V1.0.35.tar.gz
cd libfastcommon-1.0.35
./make.sh
./make.sh install
安装FastDFS
wget https://github.com/happyfish100/fastdfs/archive/V5.10.tar.gz
tar xvf V5.10.tar.gz
cd fastdfs-5.10
./make.sh
./make.sh install
如果出现编译错误
fastdfs-5.10/storage/fdfs_storaged.c:130: undefined reference to `g_exe_name
请重新./make.sh clean后再次编译
配置跟踪服务器(tracker server)
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
编辑tracker server配置文件tracker.conf
disabled=false
port=22122
base_path=/u01/data/fastdfs/tracker
编辑client端的配置文件client.conf
base_path=/u01/data/fastdfs/tracker
tracker_server=192.168.2.138:22122
创建tracker server数据目录
mkdir -p /u01/data/fastdfs/tracker
启动tracker server
/etc/init.d/fdfs_trackerd start
tracker server自动在/u01/data/fastdfs/tracker目录新建data和logs目录
配置存储服务器(storage server)
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
编辑storage server配置文件storage.conf
disabled=false
port=23000
base_path=/u01/data/fastdfs/storage
tracker_server=192.168.25.100:22122
store_path0=/u01/data/fastdfs/storage
http.server_port=81
创建storage server数据目录
mkdir -p /u01/data/fastdfs/storage
启动storage server
/etc/init.d/fdfs_storaged start
文件上传测试
[root@localhost conf.d]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf ./default.conf
group1/M00/00/00/wKgZZFxD2EqABE-RAAAFc0mlLyw60.conf
[root@localhost conf.d]#
文件下载测试
[root@localhost conf.d]# /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKgZZFxD2EqABE-RAAAFc0mlLyw60.conf
安装nginx
更新nginx安装库
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release- centos-7-0.el7.ngx.noarch.rpm
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum update
安装nginx
yum info nginx
yum install nginx
存储服务器(storage server)安装并配置nginx
1、安装fastdfs-nginx-module
fastdfs-nginx-module解决同组存储服务器之间文件复制不一致情况下,为客户端正确访问到文件提供支持。
wget http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS Nginx Module Source Code/fastdfs-nginx-module_v1.16.tar.gz
注意:可能会下载不下来,建议直接复制链接下载后,再传到Linux上
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src/
vi config
编辑config文件,执行如下命令进行批量替换并保存退出,修改/user/local为/user
:%s+/usr/local/+/usr/+g
2、拷贝fastdfs-nginx-module模块中配置文件到/etc/fdfs目录中并编辑
cp /u01/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改文件mod_fastdfs.conf
vi /etc/fdfs/mod_fastdfs.conf
connect_timeout=10
base_path=/tmp
tracker_server=192.168.2.138:22122
storage_server_port=23000
url_have_group_name = true
store_path0=/u01/data/fastdfs/storage
group_name=group1
#[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/u01/data/fastdfs/storage
3、nginx添加fastdfs-nginx-module模块
查看nginx版本
nginx -V
wget http://nginx.org/download/nginx-1.14.2.tar.gz
tar -zvxf nginx-1.12.1.tar.gz
yum -y install pcre
yum -y install openssl-devel
执行configure脚本
./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-
path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx
/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock
--http-client-body-temp-path=/var/cache/nginx/client_temp --http
-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-
temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=
/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/ngin
x/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio
--with-threads --with-http_addition_module --with-http_auth_request_
module --with-http_dav_module --with-http_flv_module --with-http_
gunzip_module --with-http_gzip_static_module --with-http_mp4_
module --with-http_random_index_module --with-http_realip_module
--with-http_secure_link_module --with-http_slice_module --with-http_
ssl_module --with-http_stub_status_module --with-http_sub_module
--with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_
ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_
SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=
4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,
-z,now -pie' --add-module=/u01/fastdfs-nginx-module/src
最后一行:–add-module=/u01/fastdfs-nginx-module/src
make
make install
4、拷贝FastDFS中的部分配置文件到/etc/fdfs目录中
cp /u01/fastdfs/fastdfs-5.10/conf/http.conf /etc/fdfs/
cp /u01/fastdfs/fastdfs-5.10/conf/mime.types /etc/fdfs/
5、修改Nginx配置文件
vi /etc/nginx/conf.d/default.conf,
如果你安装的Nginx不存在conf.d目录,直接在nginx.conf中修改如下内容
添加如下内容:
server {
listen 81;
server_name localhost;
location ~ /group1/M00 {
root /u01/data/fastdfs/storage;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
关闭防火墙并启动Nginx
systemctl stop firewalld.service
systemctl start firewalld.service
通过Nginx代理下载文件
http://192.168.25.100:81/group1/M00/00/00/wKgZZFxD3VKABeg-AAAFc0mlLyw93.conf