文件服务器(Fastdfs)部署
1、准备
1.1、安装环境及软件包
本部署手册为将文件服务器 Fastdfs 安装并部署到 CentOS服务器上的操作过程记录。
部署环境与软件及版本内容如下:
操作系统:
CentOS 7 64位
Fastdfs:
fastdfs-5.11.tar.gz
Fastdfs依赖:
libfastcommon-1.0.39.tar.gz
nginx:
nginx-1.15.7.tar.gz
nginx支持fastdfs模块:
fastdfs-nginx-module-1.20.tar.gz
1.2、环境准备及依赖安装
安装目录
本次安装均在 /usr/local/
目录下安装。下面针对安装包的操作均在 /usr/local
下进行。
安装包获取
Fastdfs安装所需的安装包,阅读本文档时假设为已经下载到/usr/local
目录下。
其他阅读人员如果想获取安装包可以到官方网站自行进行下载上传到服务器,或者通过wget
名
安装依赖
安装gcc编译器,如果已经安装则忽略本步骤。
执行命令:
> yum -y install gcc-c++
2、安装FastDFS
安装FastDFS需要依次安装libfastcommon、FastDFS。
2.1、编译安装libfastcommon
进入到存放libfastcommon安装包目录,执行解压命令解压安装包,进行编译、安装操作。
解压libfastcommon
执行命令:
> cd /usr/local
> tar -zxvf ./libfastcommon-1.0.39.tar.gz
编译、安装
> cd ./libfastcommon-1.0.39
> ./make.sh
> ./make.sh install
编译、安装结束之后,将libfastcommon.so
安装到了/usr/lib64/libfastcommon.so
,但是Fastdfs主程序设置的lib目录是/usr/local/lib
,所以需要创建软链接。
如果软链接已经存在,报出错误忽略即可。
执行命令:
> 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
2.2、编译安装FastDFS
同安装libfastcommon相同,进入到存放FastDFS安装包的目录,进行解压、编译、安装操作。
解压FastDFS
执行命令:
> cd /usr/local
> tar -zxvf ./fastdfs-5.11.tar.gz
编译、安装
> cd ./fastdfs-5.11
> ./make.sh
> ./make.sh install
设置命令软连接
如果想要使用 service
命令启动,则需要创建如下软连接。
执行命令:
> 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
2.3、配置FastDFS跟踪器(Tracker)
修改跟踪器配置文件
FastDFS提供了配置文件模板,通过复制命令复制配置文件模板并进行修改。
进入/etc/fdfs
,复制FastDFS跟踪器配置文件模板 tracker.conf.sample
,并重命名为 tracker.conf
。
执行命令:
> cd /etc/fdfs
> cp tracker.conf.sample tracker.conf
> vim ./tracker.conf
用vim
编辑器打开配置文件后,修改配置文件中配置项如下:
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建), 可以自行修改目录名称
base_path=/home/yuqing/fastdfs/tracker
# HTTP 服务端口,默认为8080.如果需要配置nginx则需要设置为80
http.server_port=80
创建base_path
配置项的目录。
执行命令:
> mkdir -p /home/yuqing/fastdfs/tracker
2.4、配置FastDFS存储器(Storage)
修改存储器配置文件
进入/etc/fdfs
,复制FastDFS存储器配置文件模板storage.conf.sample
,并重命名为storage.conf
。
执行命令:
> cd /etc/fdfs
> cp storage.conf.sample storage.conf
> vim ./storage.conf
用vim
编辑器打开配置文件后,修改配置文件中配置项如下:
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/home/yuqing/fastdfs/storage
# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/home/yuqing/fastdfs/file
# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server=tracker的ip地址:22122
# 访问端口,默认8888,如果需要使用nginx则需要配置成80
http.server_port=80
创建base_path
和store_path0
配置项的目录。
执行命令:
> mkdir -p /home/yuqing/fastdfs/storage
> mkdir -p /home/yuqing/fastdfs/file
2.5、配置FastDFS防火墙
由于防火墙的限制,如果没有关闭防火墙或者开放对应端口则会导致无法正常访问FastDFS。
CentOS防火墙有 iptables 和 firewall,配置方式不同,下面全部列举出来。需要注意的是CentOS7操作系统默认使用firewall防火墙。
配置防火墙有两种方式:关闭防火墙(不安全)和开放某端口。
FastDFS中跟踪器(Tracker)和存储器(Storage)的端口分别为:22122(Tracker)和23000(Storage),执行命令开放端口,并重新载入防火墙配置。
2.5.1、firewll防火墙配置(CentOS7默认)
关闭防火墙和开放端口二选一即可。
关闭防火墙
执行命令:
# 关闭防火墙命令
> systemctl stop firewalld
# 关闭开机启动命令
> systemctl disable firewalld
开放端口
执行命令:
> firewall-cmd --zone=public --add-port=22122/tcp --permanent
> firewall-cmd --zone=public --add-port=23000/tcp --permanent
# 为Nginx预留
> firewall-cmd --zone=public --add-port=80/tcp --permanent
> firewall-cmd --reload
2.5.2、iptables防火墙配置
关闭防火墙
# 临时关闭防火墙
> servcie iptables stop
# 永久关闭防火墙
> chkconfig iptables off
开放端口
使用vim
编辑器打开防火墙配置文件,添加开放的端口配置信息。
执行命令:
> vim /etc/sysconfig/iptables
添加如下配置:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
#为Nginx预留
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
保存配置文件之后,重启防火墙。
执行命令:
> service iptables restart
2.6、启动FastDFS
启动FastDFS需要启动两部分,跟踪器和存储器。
2.6.1、启动跟踪器
启动跟踪器
跟踪器(Tracker)初次成功启动,会在 /etc/fdfs/tracker.conf
配置文件中 base_path
配置项目录下创建data、logs两个目录。
启动方式有两种。
执行命令:
# 直接使用命令启动
> /etc/init.d/fdfs_trackerd start
或者执行如下命令:
# 如果编译安装FastDFS之后创建了启动命令软连接,则可以使用本命令启动服务
> service fdfs_trackerd start
设置跟踪器服务开机启动
设置跟踪器开机启动
执行命令:
> chkconfig fdfs_trackerd on
查看跟踪器端口是否被监听
执行命令:
> netstat -unltp|grep fdfs
看到如下信息则表示跟踪器启动成功
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 9540/fdfs_trackerd
关闭跟踪器(如果有需要)
执行命令:
> service fdfs_trackerd stop
2.6.2、启动存储器
启动存储器
存储器(Storage)初次成功启动,会在 /etc/fdfs/storage.conf
配置文件中 base_path
配置项目录下创建data、logs两个目录。
启动方式有两种。
执行命令:
# 直接使用命令启动
> /etc/init.d/fdfs_storaged start
或者执行如下命令:
# 如果编译安装FastDFS之后创建了启动命令软连接,则可以使用本命令启动服务
> service fdfs_storaged start
设置存储器服务开机启动
设置存储器开机启动
执行命令:
> chkconfig fdfs_storaged on
查看存储器端口是否被监听
执行命令:
> netstat -unltp|grep fdfs
看到如下信息则表示跟踪器启动成功
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 9540/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 9570/fdfs_storaged
关闭存储器(如果有需要)
执行命令:
> service fdfs_storaged stop
查看跟踪器与存储器是否正常通信
如上状态为ACTIVE则表示通信正常。
2.7、文件上传测试
配置客户端
FastDFS服务全部启动成功后,可以进行本地文件上传,测试是否能上传成功。
修改跟踪器服务器中客户顿配置文件。
执行命令:
> cd /etc/fdfs
> cp client.conf.sample client.conf
> vim client.conf
修改配置文件中如下配置:
# Client 的数据和日志目录
base_path=/home/yuqing/fastdfs/client
# Tracker端口
tracker_server=tracker的ip地址:22122
上传测试
在CentOS系统内执行命令上传测试图片命令。
执行命令:
> /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test.jpg
group1/M00/00/00/CjMOMFwA0v6Aaw-7AAQ6_lOyM18292.jpg
返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
3、配置Nginx
上面将文件上传成功了,但我们无法下载。因此安装Nginx作为服务器以支持Http方式访问文件。同时,后面安装FastDFS的Nginx模块也需要Nginx环境。
Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。我这里由于是单机,TrackerServer和StorageServer在一台服务器上。
需要检查服务器上是否已经安装了Nginx,如果未安装Nginx则查看 安装Nginx 章节。如果已经安装了Nginx则跳过安装Nginx章节即可。
3.1、安装Nginx
依赖安装
安装Nignx之前需要安装Nginx所需环境。
安装gcc、pcre pcre-devel、zlib、OpenSSL。
执行命令:
> yum install gcc-c++
> yum install -y pcre pcre-devel
> yum install -y zlib zlib-devel
> yum install -y openssl openssl-devel
安装Nginx
在准备阶段已经下载了Nginx安装包,此处进入/etc/fdfs
目录处理。
执行命令:
> cd /usr/local
> tar -zxvf ./nginx-1.15.7.tar.gz
> cd ./nginx-1.15.7
开始编译项目并且安装Nginx
> ./configure --prefix=/usr/local/nginx
> ./make.sh
> ./make.sh install
启动Nginx服务
执行命令:
> /usr/local/nginx/sbin/nginx
设置开机启动
执行命令:
> vim /etc/rc.local
添加一行
# 添加一行:
/usr/local/nginx/sbin/nginx
设置执行权限
> chmod 755 rc.local
访问文件
修改nginx.conf文件。
执行命令:
> /usr/local/nginx/conf/nginx.conf
添加如下内容,将 /group1/M00
映射到/home/yuqing/fastdfs/file/data
。
location /group1/M00 {
alias /home/yuqing/fastdfs/file/data;
}
重启Nginx
执行命令:
> /usr/local/nginx/sbin/nginx -s reload
3.2、FastDFS配置Nginx模块(原本就安装Nginx)
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.51.128,上传成功后文件 ID已经返回给客户端。
此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.51.129,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.51.129 上取文件,就会出现文件无法访问的错误。
而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
fastdfs-nginx-module-1.20解压
准备阶段已经准备了fastdfs-nginx-module-1.20软件包。进入如/usr/local
。
执行命令:
> cd /usr/local
> tar -zxvf ./fastdfs-nginx-module-1.20.tar.gz
配置Nginx
将astdfs-nginx-module-1.20添加到nginx中;
首先关闭Ngixn服务
> /usr/local/nginx/sbin/ngix -s stop
进入Nginx安装包根目录
> cd /usr/local/nginx-1.15.7
执行命令添加模块
> ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-1.20/src/
> make
> make install
注意:
在执行
make
操作时,可能会报出:/usr/local/include/fastdfs/fdfs_define.h:15:27: 致命错误: common_define.h:没有那个文件或目录
如果出现以上错误信息,解决方法如下:
vim /usr/local/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/"
然后重新执行
configure
、make
、make install
即可。
查看Nignx模块
执行命令:
> /usr/local/nginx/sbin/nginx -V
显示安装列表中存在fastdfs模块则表示安装成功
修改配置文件
复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并且进行修改。
执行命令:
> cp /usr/local/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
> vim /etc/fdfs/mod_fastdfs.conf
修改如下配置内容,其他默认。
# 连接超时时间
connect_timeout=10
# Tracker Server
tracker_server=tracker的ip地址:22122
# StorageServer 默认端口
storage_server_port=23000
# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name=true
# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/home/yuqing/fastdfs/file
复制 FastDFS 的部分配置文件到/etc/fdfs 目录:
> cp http.conf mime.types /etc/fdfs/
修改nginx.conf配置文件
执行命令:
> vim /usr/local/nginx/conf/nginx.conf
在80端口下添加fastdfs-nginx模块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:
此处需要配合上面章节中对跟踪器和存储器配置文件配置时
http.server_port
修改值为80端口!location 的配置,如果有多个group则配置location ~/group([0-9])/M00 ,没有则不用配group。
启动Nginx
执行命令:
> /usr/local/nginx/sbin/nginx
至此FastDFS单机就安装成功。