最近在搞一个分布式文件系统,考虑到是海量的中小文件,选择用fastdfs搭建。
系统环境 centOS 7.3 阿里云服务器,做demo用所以所有的配置都在单机上设置了,工程应用的时候再切分布式服务器。
安装基本依赖
yum -y install tcl lrzsz deltarpm zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
几个所需的安装包下载下来:(我的安装包目录放在了usr/local/FastDFS中)
fastdfs-5.11.tar.gz
fastdfs-nginx-module-1.20.tar.gz
libfastcommon-1.0.39.tar.gz
nginx-1.15.8.tar.gz
安装libfastcommon
tar -zxvf libfastcommon-1.0.39.tar.gz
cd libfastcommon-1.0.39 && ./make.sh && ./make.sh install
安装fastdfs
tar -zxvf fastdfs-5.11.tar.gz
cd fastdfs-5.11 && ./make.sh && ./make.sh install
创建数据目录
#追踪器数据存放目录
mkdir -p /mnt/data/fastdfs/tracker
#存储器数据存放目录
mkdir -p /mnt/data/fastdfs/storage
配置tracker
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
vi /etc/fdfs/tracker.conf
修改:
base_path=/mnt/data/fastdfs/tracker
配置storage
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
vi /etc/fdfs/storage.conf
修改:
base_path=/mnt/data/fastdfs/storage #设置 storage 的日志目录
store_path_count=1 #存储路径个数,需要和 store_path 个数匹配
store_path0=/mnt/data/fastdfs/storage #存储路径
tracker_server=192.168.X.X:22122 #node1服务器的 IP 地址和端口号(有多个服务器就写多个)
启动
fdfs_trackerd /etc/fdfs/tracker.conf restart #追踪器 22122端口
fdfs_storaged /etc/fdfs/storage.conf restart #存储器 23000端口
测试
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改:
base_path=/mnt/data/fastdfs
tracker_server=192.168.X.X:22122
测试命令:
fdfs_test /etc/fdfs/client.conf upload /usr/local/background.jpg
服务器中已经上传了该图片,并产生了一个http url,可以通过配置nginx访问。
fastdfs-nginx-module
tar -xzvf fastdfs-nginx-module-1.20.tar.gz
修改配置文件:
vi /usr/local/FastDFS/fastdfs-nginx-module-1.20/src/config
修改为:
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon"
安装nginx
tar -zxvf /usr/local/FastDFS/nginx-1.15.8.tar.gz
mkdir -p /var/temp/nginx/client
cd /usr/local/FastDFS/nginx-1.15.8
./configure \
–prefix=/usr/local/nginx \
–pid-path=/var/run/nginx/nginx.pid \
–lock-path=/var/lock/nginx.lock \
–error-log-path=/usr/local/nginx/errors/error.log \
–http-log-path=/usr/local/nginx/logs/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=/usr/local/FastDFS/fastdfs-nginx-module-1.20/src
make && make install nginx
目录在/usr/local/nginx
nginx配置文件
vi /usr/local/nginx/conf/nginx.conf
增加配置:
location ~/group[0-9]/M00/ {
#root /mnt/data/fdfs/storage/data;
ngx_fastdfs_module;
}
fastdfs模块配置
把一些会用到的库先拷贝到/etc/fdfs下
cp /usr/local/FastDFS/fastdfs-5.11/conf/mime.types /etc/fdfs/
cp /usr/local/FastDFS/fastdfs-5.11/conf/http.conf /etc/fdfs/
拷贝fastdfs-nginx-module-1.20的mod_fastdfs.conf:
cp fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf
修改为:
base_path=/mnt/data/fastdfs
tracker_server=192.168.X.X:22122
url_have_group_name=true
store_path0=/mnt/data/fastdfs/storage
最后启动nginx,可以通过http访问刚才上传的图片了。
开机启动服务
vi /etc/rc.d/rc.local
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx
增加权限:
chmod +x /etc/rc.d/rc.local
参考:
https://github.com/happyfish100/fastdfs/wiki
https://www.xqtt29.com/articles/2019/05/29/1559097061210.html
https://www.bilibili.com/video/av50485409?from=search&seid=3162392441992893245