FastDFS单体应用搭建
1 安装FastDFS环境
跟踪服务器(Tracker Server):192.168.0.188
存储服务器(Storage Server):192.168.0.188
操作系统:centOS7
用户:root
数据存储: /fastdfs
相关的软件下载:https://pan.baidu.com/s/1vl-2SECHU7Xkvdawqm6Gqg
提取码:ujlb
将软件下载好后放置在/usr/local/src
1.1 安装需要的依赖包
yum install make cmake gcc gcc-c++
1.2 安装libfatscommon
cd /usr/local/src
#安装unzip 命令: yum install -y unzip zip
unzip libfastcommon-master.zip
cd libfastcommon-master
## 编译、安装
./make.sh
./make.sh install
1.3 安装FastDFS
cd /usr/local/src
tar -xzvf FastDFS_v5.08.tar.gz
cd FastDFS
./make.sh
./make.sh install
1.4 关闭防火墙
为了方便后面的操作,本实例直接选择关闭防火墙
#查看防火墙状态是否开启
systemctl status firewalld
#关闭防火墙(重启服务器后会重新打开防火墙)
systemctl stop firewalld
#永久关闭防火墙
systemctl disable firewalld
2 配置Tracker监听器
2.1 配置tracker的配置文件,并且进行重命名
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
2.2 修改tracker配置文件
vim /etc/fdfs/tracker.conf
#修改内容如下:
base_path=/fastdfs/tracker # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
2.3 创建上面指定的地址
mkdir -p /fastdfs/tracker
2.4 启动Tracker
/etc/init.d/fdfs_trackerd start
2.5 查看Tracker是否已启动
netstat -unltp|grep fdfs
出现下面图例,表示启动成功
2.6 查看Tracker的文件目录
ll /fastdfs/tracker
可以注意到已经出现了data
和logs
目录,那么表示你的tracker配置一切正常
3 配置storage
3.1 创建storage的配置文件
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
3.2 编辑配置文件
vim /etc/fdfs/storage.conf
#修改的内容如下:
base_path=/fastdfs/storage # 数据和日志文件存储根目录
store_path0=/fastdfs/storage # 第一个存储目录
tracker_server=192.168.0.188:22122 # tracker服务器IP和端口
3.3 创建storage的存储目录
mkdir -p /fastdfs/storage
3.4 启动storage
/etc/init.d/fdfs_storaged start
3.5 查看Tracker和Storage是否在进行通信
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
4 上传文件
4.1 项目地址
码云地址:https://gitee.com/qingkongshengxia/fastDFS
4.3 修改fastdfs-client.properties
4.2 执行的地方
5 配置nginx
5.1 安装编译 Nginx 所需的依赖包
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel
5.2 安装Nginx
cd /usr/local/src/
tar -zxvf nginx-1.16.0.tar.gz
cd nginx-1.16.0
//使用默认配置
./configure
//编译
make
//安装
make install
5.3 查看Nginx的配置依赖情况
/usr/local/nginx/sbin/nginx -V
5.4 修改Nginx的配置
vim /usr/local/nginx/conf/nginx.conf
添加如下行,将 /group1/M00 映射到 /fastdfs/storage/data
location /group1/M00 {
alias /fastdfs/storage/data;
}
5.5 开启Nginx以及相关可能的操作
/usr/local/nginx/sbin/nginx
当你修改完nginx.conf时候,需要重新启动Nginx,使用这样的命令 /usr/local/nginx/sbin/nginx -s reload
当你想要停止nginx时 /usr/local/nginx/sbin/nginx -s stop
强制退出nginx /usr/local/nginx/sbin/nginx -s quit
5.6 查看Nginx是否开启
ps aux|grep nginx
5.7 通过http访问图片
5.8 上面的问题
不知道你是否意识到,我读取图片,其实并没有使用到tracker,而是直接通过Nginx来访问对应的图片位置,这样可以做到单体应用。在我们搭建fastDFS集群的时候,照片会同步到一个组内的所有storage,在大量用户访问的情况下,nginx会进行负载均衡,而在负载均衡的条件下,可能有几个storage内数据还没有被同步好,那么会导致照片异常,那么如何解决上面的异常呢?请看第六点
6 配置fastdfs-nginx-module
6.1 fastdfs-nginx-module
1、fastdfs-nginx-module 作用说明
FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了ip01,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储ip02,在文件还没有复制完成的情况下,客户端如果用这个文件ID在ip02上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的fastdfs-nginx-module在nginx安装时使用)
6.2 解压fastdfs-nginx-module
cd /usr/local/src
tar -xzvf fastdfs-nginx-module_v1.16.tar.gz
6.3 修改fastdfs-nginx-module的配置文件
cd fastdfs-nginx-module/src
vim config
将CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
中的local去除,即
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
6.4 修改Nginx的依赖配置
#关闭nginx
/usr/local/nginx/sbin/nginx -s stop
#开始重新配置nginx
cd /usr/local/src/
cd nginx-1.16.0
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src
#编译以及安装
make && make install
6.5 修改fastdfs-nginx-module的内的mod_fastdfs.conf
作用是当我访问输入url的时候,nginx回去查询对应的tracker,来找到对应的storage
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
修改下面的数据
# 连接超时时间
connect_timeout=10 --根据需要修改--
# Tracker Server
tracker_server=192.168.0.188:22122 --修改为自己的ip--
# StorageServer 默认端口
storage_server_port=23000
# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name = true --需要修改--
# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/fastdfs/storage --需要修改--
6.6 复制 FastDFS 的部分配置文件到 /etc/fdfs 目录
cd /usr/local/src/FastDFS/conf
cp http.conf mime.types /etc/fdfs/
6.7 修改nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
添加下面的代码块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
6.8 开启nginx
/usr/local/nginx/sbin/nginx
下面就是你直接通过Chrome来访问图片了
7 配置开机启动
7.1 修改rc.local文件可以被执行
# 这个文件可以在开启的时候会被执行里面的内容
chmod +x /etc/rc.d/rc.local
7.2 添加需要开机启动的
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start
/usr/local/nginx/sbin/nginx