FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
Storage Server(仓库工人)定时向Tracker Server(老板)上传状态,如果客户端有请求来了,老板就会去检查当前是否有可用的storage,然后将情况反馈给客户(如果有可用的,则返回可用的storage),然后客户端进行图片上传,然后Storage Server将文件写入,然后返回文件在服务器上的相对路径给客户端,客户端将路径存入数据库进行后续操作即可。
百度云盘地址
这是我上传到云服务器的目录(可以自己指定目录的)
安装libevent库(可以直接在云盘下载资源上传到云服务器,这样就可以跳过这一步直接到解压那一步)
本来以为直接使用apt就可以下载了,结果发现找不到(E: Unable to locate package libevent),centos系统直接使用yum命令就可以下载了,后来只好去官网下载来编译了,本人下的是2.1.8版本,下载完成后用xftp工具上传到云服务器
libevent官网地址
tar -zxvf libevent-2.1.8-stable.tar.gz
进入解压后的文件夹
cd libevent-2.1.8-stable
配置目录
注意:可能会缺少gcc或cmake,缺少的话根据报错信息使用apt下载就行
./configure --prefix=/usr
编译
make
安装
make install
查看是否安装成功
ls -al /usr/lib | grep libevent
解压libfastcommon-master
unzip libfastcommon-master.zip
进入解压后的文件夹
cd libfastcommon-master
编译
./make.sh
安装
./make.sh install
复制/usr/lib64下的libfastcommon.so到/usr/lib/
cp /usr/lib64/libfastcommon.so /usr/lib/
解压fastdfs-5.11.tar-1.gz
tar -zxvf fastdfs-5.11.tar-1.gz
进入解压后的文件夹
cd fastdfs-5.11
编译
./make.sh
安装
./make.sh install
将fastdfs-5.11/conf文件夹下的所有文件复制到/etc/fdfs/
cd conf
cp * /etc/fdfs/
进到/etc/fdfs/,对tracker.conf进行修改
cd /etc/fdfs
vim tracker.conf
找到base_path,这是数据及日志的存储路径(自定义),将其修改为
base_path=/home/ubuntu/fastdfs/tracker
创建tracker目录
mkdir /home/ubuntu/fastdfs/tracker -p
此时tracker已经配置完毕,接下来启动即可
cd /usr/bin
fdfs_trackerd /etc/fdfs/tracker.conf
进到/etc/fdfs/,对storage.conf进行修改
cd /etc/fdfs/
vim storage.conf
找到base_path,这是文件存储的位置(自定义),修改为
base_path=/home/ubuntu/fastdfs/storage
修改group_name,这是访问时的前缀名
group_name=xxx
因为storage要定时向tracker汇报,所以要修改本地的tracker_server(修改为本机IP地址即可,端口号不需要改)
tracker_server=IP:22122
创建storage目录
mkdir /home/ubuntu/fastdfs/storage -p
storage配置完毕,进行启动
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
进到/etc/fdfs/,对client.conf进行修改
cd /etc/fdfs/
vim client.conf
将base_path改为
base_path=/home/ubuntu/fastdfs/client
将tracker_server改为本机IP地址
创建client目录
mkdir /home/ubuntu/fastdfs/client -p
进行文件上传测试
fdfs_test /etc/fdfs/client.conf upload 要上传的文件路径的路径
看到有文件url返回即为上传成功
fastdfs-nginx-module-master这个模块就是fastdfs与nginx之间沟通的桥梁,我们需要对它进行相应配置
解压fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-master.zip
进入解压后的src文件夹
cd fastdfs-nginx-module-master/src
修改config,将config里面的内容全删掉,然后换成下面的内容
ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
安装nginx前需要安装的依赖:
apt-get install g++
apt-get install openssl libssl-dev
apt-get install libpcre3 libpcre3-dev
apt-get install zlib1g-dev
解压nginx-1.12.0.tar.gz
tar -zxvf nginx-1.12.0.tar.gz
进入解压后的目录
cd nginx-1.12.0
在命令行直接输入下面的配置指令,然后回车
注意最后一行中的–add-module=后面的路径为你的fastdfs-nginx-module-master/src目录
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/ngnix/nginx.pid \
--lock-path=/var/lock/ngnix.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/ubuntu/fastdfs/fastdfs-nginx-module-master/src
编译
make
安装
make install
将/home/tar/fastdfs-nginx-module-master/src/mod_fastdfs.conf拷贝到/etc/fdfs/
cp /home/ubuntu/fastdfs/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
进入/etc/fdfs/对mod_fastdfs.conf进行修改
cd /etc/fdfs
vim mod_fastdfs.conf
将base_path修改为
base_path=/home/ubuntu/fastdfs/tmp
将tracker_server改为本机IP地址
将group_name改为与前面配置storage服务时一致的名字
将 url_have_group_name改为true
url_have_group_name = true
修改nginx配置文件,为其添加一个新的server配置
cd /usr/local/nginx/conf
vim nginx.conf
检测nginx是否配置完成
cd /usr/local/nginx/sbin
./nginx -t
发现报错提示少了一个文件夹,进行创建
mkdir /var/temp/nginx/client -p
启动nginx
./nginx
关闭防火墙
ufw disable
cd /etc/fdfs/
vim mod_fastdfs.conf
将store_path0改成store_path0=/home/ubuntu/fastdfs/storage
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
cd /usr/local/nginx/sbin/
./nginx -s reload