分布式文件管理系统FastDFS搭建教程(FastDFS+nginx+fastdfs-nginx-module)

tech2023-02-07  115

1.安装FastDFS

1.1.首先创建工具目录(请提前规划好目录)

mkdir -p /usr/local/bak/fastdfs cd /usr/local/bak/fastdfs

1.2.下载并安装FastDFS依赖包libfastcommon

wget https://codeload.github.com/happyfish100/libfastcommon/zip/master unzip master cd libfastcommon-master/ ls ./make.sh ./make.sh install

注意:(1) unzip遇到 unzip: command not found 需要 yum install -y unzip zip 安装 (2) ./make.sh: line 14: gcc: command not found因为安装系统的时候使用的是最小化mini安装,系统没有安装make、vim等常用命令,直接yum安装下即可。 yum -y install gcc automake autoconf libtool make

1.3.从GitHub的Release下载并安装FastDFS

cd /usr/local/bak/fastdfs wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz tar xf V5.11.tar.gz cd fastdfs-5.11 ./make.sh && ./make.sh install

1.4.检验安装后的文件及目录

#服务脚本:

ll /etc/init.d/ |grep fdfs

#样例配置文件

ll /etc/fdfs/

#命令行工具

ll /usr/bin|grep fdfs

注意:虽然FastDFS区分tracker和storage服务器,但是安装的软件及步骤均相同,只是不同的配置文件而已,因此以上安装适用tracker server和storage server。也就是说单机的话,只要装一份就可以用了,无需装两份。

2.配置跟踪服务器(tracker server)

2.1 创建FastDfs数据目录

mkdir -p /data/fastdfs/tracker

2.2 拷贝tracker server和client端样例配置文件并重命名

cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

2.3 编辑tracker server配置文件tracker.conf,需要修改内容如下

#the tracker server port 这里配置的是tracker端口 port=22122 #the base path to store data and log files这里配置的是存储的目录,包含数据和日志文件 base_path=/data/fastdfs/tracker

2.4 编辑client端的配置文件client.conf,需要修改内容如下

#这里配置的是存储的目录,包含数据和日志文件 base_path=/data/fastdfs/tracker #这里的是上面tracker的地址和端口,如果单机则本地ip(不能127.0.0.1,最好是局域网ip),集群则中央tracker tracker_server=tracker_ip:22122

2.5 测试启动tracker server,启动成功会自动在/data/fastdfs/tracker目录新建

data和logs目录 cd /data/fastdfs/tracker /etc/init.d/fdfs_trackerd start 看到控制台输出以下信息证明基本是成功的 Reloading systemd: [ OK ] Starting fdfs_trackerd (via systemctl): [ OK ] ss -lntup|grep 22122 看到控制台输出tcp LISTEN 0 128 *:22122 *:* users:(("fdfs_trackerd",pid=15703,fd=5)) ls 看到生成data logs两个文件夹

3.配置存储服务器(storage server)

3.1 拷贝storage server样例配置文件并重命名

cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

3.2 编辑storage server配置文件storage.conf,需要修改内容如下

#服务端口 port=23000 #日志和文件存储路径 base_path=/data/fastdfs/storage #存储路径,如果有多个就store_path0~store_pathN排列即可 store_path0=/data/fastdfs/data #tracker服务器地址,填写tracker_server=127.0.0.1:22122是错误的,不能为127.0.0.1,请填写局域网ip tracker_server=ip:22122 #重点,这里默认为8888,后面我们需要在nginx中配置的监听端口号,就是这里定义 http.server_port=8888

3.3 创建storage server数据目录

mkdir -p /data/fastdfs/storage mkdir -p /data/fastdfs/data

3.4 测试启动storage server,启动成功会自动在/data/fastdfs/tracker目录新建data和logs目录(启动storage server的前提是tracker server必须事先已启动)

cd /data/fastdfs/data ls /etc/init.d/fdfs_storaged start #这里要等很久,日志大概滚到9Kb的时候 ss -lntup|grep 23000 #看到控制台输出tcp LISTEN 0 128 *:23000 *:* users:(("fdfs_storaged",pid=16542,fd=5))就对了 ls #查看日志

注意:如果开启了防火墙,请将端口暴露给防火墙,开放端口。特别注意!!!阿里云服务器需要在阿里云官方云服务器安全组中,将端口开放。

防火墙开放端口:https://www.cnblogs.com/liulebin/p/10986027.html

3.5 最后是开启和关闭相关的操作

#关闭服务器 /etc/init.d/fdfs_trackerd stop /etc/init.d/fdfs_storaged stop #打开服务器 /etc/init.d/fdfs_trackerd start /etc/init.d/fdfs_storaged start

3.5 文件上传测试

FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了192.168.104.118,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储192.168.104.119,在文件还没有复制完成的情况下,客户端如果用这个文件ID在192.168.104.119上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

mkdir -p /usr/local/bak/nginx #新建日志存储目录 mkdir -p /data/fastdfs/nginx cd /usr/local/bak/nginx #下载并解压 wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz fastdfs-nginx-module-V1.20.tar.gz tar xf V1.20 cd fastdfs-nginx-module-1.20/src/

编辑fastdfs-nginx-module-1.20/src/目录下的config文件(没前缀,没后缀,就叫config),主要修改以下两处地方,否则会有报错,而且报错是不可预料的。

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

拷贝fastdfs-nginx-module模块的配置文件mod_fastdfs.conf到**/etc/fdfs**目录中并编辑

cp /usr/local/bak/nginx/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf cd /etc/fdfs/

修改内容如下,圈红为重点修改部分

vim mod_fastdfs.conf base_path=/data/fastdfs/nginx store_path0=/data/fastdfs/data tracker_server=ip:22122 storage_server_port=23000(默认配置为23000) url_have_group_name = true group_name=group1(默认配置为group1)

4.安装Nginx

4.1 先安装依赖库

yum install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

4.2 安装nginx

cd /usr/local/bak/nginx wget https://nginx.org/download/nginx-1.15.8.tar.gz --no-check-certificate tar xf nginx-1.15.8.tar.gz cd nginx-1.15.8 #简单的安装法(我是用这种) ./configure --prefix=/application/nginx/ --add-module=/usr/local/bak/nginx/fastdfs-nginx-module-1.20/src #比较复杂的安装法仅供参考,如果第一个不成功就试下这个 ./configure --prefix=/application/nginx --sbin-path=/application/nginx/sbin/nginx --conf-path=/application/nginx/conf/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-stream --with-pcre --add-module=/home/software/fastdfs-nginx-module-master/src --with-stream make && make install

4.3 拷贝FastDFS中的部分配置文件到/etc/fdfs目录中

cp /usr/local/bak/fastdfs/fastdfs-5.11/conf/http.conf /etc/fdfs/ cp /usr/local/bak/fastdfs/fastdfs-5.11/conf/mime.types /etc/fdfs/

4.4 配置nginx的配置文件,路径是/application/nginx/conf/nginx.conf

user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8888; server_name localhost; location ~/group[0-9]/ { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }

这里有几点要说明一下:      "user root"是解决下载操作时报404的问题      8888端口号与/etc/fdfs/storage.conf中的http.server_port=8888相对应      storage对应有多个group的情况下,访问路径带group名称(已经启用该配置),例如:/group1/M00/00/00/**,对应nginx配置      location ~/group[0-9]/ { ngx_fastdfs_module;}

5.拷贝nginx服务到/etc/init.d/目录下并启动

cp /application/nginx/sbin/nginx /etc/init.d/ /etc/init.d/nginx ss -lntup|grep 8888

看到控制台输出tcp LISTEN 0 128 *:8888 : users:((“nginx”,7308,6),(“nginx”,7309,6))

6.测试

拼接上服务器前缀ip和端口号进行请求,这个时候由nginx-fastdfs-module进行转发到FastDFS上。 将文件上传到/data/fastdfs/data/data/**下的任意一个文件夹中,浏览器中对应文件名即可访问到文件。

例如:http://39.98.65.221:8888/group1/M00/0A/0A/1a3fcca2282682e73841648a0dfde1e2_1.jpg

最新回复(0)