FastDFS搭建文件管理系统
一.参考文档
1.FastDFS原理和过程
2.FastDFS分布式文件系统
3.用FastDFS一步步搭建文件管理系统
分割线**************************************************
分割线**************************************************
二.安装FastDFS环境
操作环境:CentOS-7-x86_64-DVD-1810
1.在根目录下建立/software文件
在根目录下创建software文件夹用于存放下载的文件包
# mkdir /soft
修改hosts,将文件服务器的ip与域名映射
# vim /etc/hosts
添加一行
172.16.168.140 file.fastdfs.com
windows
如果要本机访问虚拟机,在C:\Windows\System32\drivers\etc\hosts中同样增加一行
mac
打开终端 vim /etc/hosts 增加一行
2.下载安装 libfastcommon
进入soft目录下
# cd /soft
下载libfastcommon
# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
如果报
-bash: wget: command not found
You have new mail in /var/spool/mail/root
说明你系统没有安装wget,用yum -y install wget 安装之后即可
成功下载libfastcommon之后,soft目录下会生成一个 V1.0.7.tar.gz
解压 V1.0.7.tar.gz 生成 libfastcommon-1.0.7 文件夹
# tar -zxvf V1.0.7.tar.gz
进入libfastcommon-1.0.7
# cd libfastcommon-1.0.7/
编译
# ./make.sh
如果出现下面的情况 运行 yum -y install gcc+ gcc-c++ 即可解决
./make.sh: line 14: gcc: command not found
./make.sh: line 15: ./a.out: No such file or directory
安装
# ./make.sh install
安装完之后创建软连接
# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
3.下载安装FastDFS
回到soft目录下并下载FastDFS
# cd /soft
# wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
解压生成的V5.05.tar.gz
# tar -zxvf V5.05.tar.gz
进入解压的fastdfs-5.05文件
# cd fastdfs-5.05
编译、安装
# ./make.sh && ./make.sh install
建立软链接
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin
# ln -s /usr/bin/fdfs_storaged /usr/local/bin
# ln -s /usr/bin/stop.sh /usr/local/bin
# ln -s /usr/bin/restart.sh /usr/local/bin
4.配置FastDFS跟踪器(Tracker)
进入 /etc/fdfs,复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf。
# cd /etc/fdfs
# cp tracker.conf.sample tracker.conf
# vim tracker.conf
修改下面两个参数即可
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path= /fastdfs/tracker
# HTTP 服务端口
http.server_port=80
保存后创建目录
# mkdir -p /fastdfs/tracker
linux启动或关闭防火墙,开放端口
开启22122端口 或者关闭防火墙 参考上面的链接
启动Tracker
初次成功启动,会在 /fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录
启动Tracker
上面创建了软链接 可以用这种方式启动,
# service fdfs_trackerd start
查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功。
# netstat -unltp|grep fdfs
关闭Tracker
关闭Tracker
# service fdfs_trackerd stop
设置Tracker开机启动
# chkconfig fdfs_trackerd on
5.配置 FastDFS 存储 (Storage)
进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf
# cd /etc/fdfs
# cp storage.conf.sample storage.conf
# vim storage.conf
修改下面的这些参数
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/fastdfs/storage
# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/fastdfs/file
# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server=file.fastdfs.com:22122
# 访问端口
http.server_port=80
创建Storage基础数据目录,对应base_path目录
创建Storage基础数据目录,对应base_path目录
# mkdir -p /fastdfs/storage
这是配置的store_path0路径
# mkdir -p /fastdfs/file
开启23000端口 或者关闭防火墙
启动Storage
初次成功启动,会在 /fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录
启动Storage
上面创建了软链接 可以用这种方式启动
# service fdfs_storaged start
查看 FastDFS Tracker 是否已成功启动 ,23000端口正在被监听,则算是Storage服务安装成功。
# netstat -unltp|grep fdfs
关闭Tracker
关闭Storage
# service fdfs_storaged stop
设置Storage开机启动
# chkconfig fdfs_storaged on
查看Storage和Tracker是否在通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
5.文件上传测试
修改 Tracker 服务器中的客户端配置文件
# cd /etc/fdfs
# cp client.conf.sample client.conf
# vim client.conf
修改如下配置即可,其它默认。
# Client 的数据和日志目录
base_path=/fastdfs/client
# Tracker端口
tracker_server=file.fastdfs.com:22122
创建对应base_path目录
# mkdir -p /fastdfs/client
上传测试
在linux内部执行如下命令上传 test.png 图片
上传一张图片到/soft目录下测试
# cd /soft/
# ll
执行上传命令
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.png
返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
三.安装Nginx
1、安装nginx所需环境
① gcc 安装
# yum install gcc-c++
② PCRE pcre-devel 安装
# yum install -y pcre pcre-devel
③ zlib 安装
# yum install -y zlib zlib-devel
④ OpenSSL 安装
# yum install -y openssl openssl-devel
2、安装Nginx
① 下载nginx
# cd /soft
# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
② 解压
# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1
③ 使用默认配置
# ./configure
④ 编译、安装
# make
# make install
⑤ 启动nginx
# cd /usr/local/nginx/sbin/
# ./nginx
其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
⑥ 设置开机启动
# vim /etc/rc.local
添加一行:
/usr/local/nginx/sbin/nginx
设置执行权限
# chmod 755 rc.local
开启80端口 或者关闭防火墙
3、访问文件
简单的测试访问文件
修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
添加如下行,将 /group1/M00 映射到 /fastdfs/file/data
location /group1/M00 {
alias /fastdfs/file/data;
}
重启nginx
# /usr/local/nginx/sbin/nginx -s reload
在浏览器访问之前上传的图片、成功。
http://file.fastdfs.com/group1/M00/00/00/rBCojGB2q1qAX8r8AAAr8DVExtI263.png
四.FastDFS 配置 Nginx 模块
下载 fastdfs-nginx-module、解压
# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
# 解压
# unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
# 重命名
# mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1 fastdfs-nginx-module-master
配置Nginx
在nginx中添加模块
先停掉nginx服务
# /usr/local/nginx/sbin/nginx -s stop
进入解压包目录
# cd /soft/nginx-1.12.1/
# 添加模块
# ./configure --add-module=../fastdfs-nginx-module-master/src
重新编译、安装
# make && make install
查看Nginx的模块
# /usr/local/nginx/sbin/nginx -V
出现下面的内容就说明添加模块成功
复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改
# cd /soft/fastdfs-nginx-module-master/src
# cp mod_fastdfs.conf /etc/fdfs/
修改如下配置,其它默认
# 连接超时时间
connect_timeout=10
# Tracker Server
tracker_server=file.fastdfs.com:22122
# StorageServer 默认端口
storage_server_port=23000
# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name = true
# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/fastdfs/file
复制 FastDFS 的部分配置文件到/etc/fdfs 目录
# cd /soft/fastdfs-5.05/conf/
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
配置nginx,修改nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
修改配置,其它的默认
在80端口下添加fastdfs-nginx模块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
/fastdfs/file 文件存储目录下创建软连接,将其链接到实际存放数据的目录,这一步可以省略。
# ln -s /fastdfs/file/data/ /fastdfs/file/data/M00
启动nginx
# /usr/local/nginx/sbin/nginx
在地址栏访问。
能下载文件就算安装成功。注意和第三点中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。
http://file.fastdfs.com/group1/M00/00/00/rBCojGB2q1qAX8r8AAAr8DVExtI263.png
到此,FastDFS单机服务器搭建就完成了。