最近毕设用到了fastDFS作分布式文件存储系统,因此在此记录fastDFS的基本部署过程(不说废话,硬核文)。下一篇文章将介绍Java中如何使用fastdfs进行文件(文件夹)上传与下载的操作。
一、必要的准备
1.1 下载fastDFS
https://github.com/happyfish100/fastdfs/releases
1.2 下载fastDFS所需的包库libfastcommon
https://github.com/happyfish100/libfastcommon/releases
1.3 fastdfs-nginx-module
https://github.com/happyfish100/fastdfs-nginx-module/releases
1.4 nginx
http://nginx.org/en/download.html
至此,fastdfs的前期必要准备已经做好。
二、fastdfs的安装
2.1 fastdfs与libfastcommon的安装
将两个包放到服务器中并解压
2.1.1 libfastcommon的安装
将其解压
tar -zxvf libfastcommon-1.0.39.tar.gz
安装gc++编译器(已安装可以无视)
yum -y install gcc-c++
进入libfastcommon包内将其编译并安装
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
至此,libfastcommon安装完毕
2.1.2 fastdfs的安装
回到root目录,解压fastdfs
cd ~
tar -zxvf fastdfs-5.11.tar.gz
进入fastdfs目录将其编译并安装
cd fastdfs-5.11
./make.sh
./make.sh install
完成后,fastdfs被安装到了
/etc/fastdfs
以上文件为配置的示例文件,需要我们手动更改为我们需要的配置,因此我们现将这三个文件复制出来备用
cd /etc/fdfs
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
至此,fastdfs安装完毕
三、fastdfs的配置
3.1 Tracker的配置
创建一个文件夹来保存tracker的日志文件
mkdir /opt/fastdfs_tracker
编辑 /etc/fdfs/tracker.conf
vi /etc/fdfs/tracker.conf
#启用配置文件(默认)
disabled=false
#tracker端口号(默认)
port=22122
#刚才创建的tracker的日志目录
base_path=/opt/fastdfs_tracker
#重新设定http端口号
http.server_port=6666
:wq
为tracker创建软连接
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
启动tracker
service fdfs_trackerd start
查看进程状态
netstat -unltp|grep fdfs
进程状态正常,此时进入云平台开启安全组对应端口
将tracker加入开机启动
vi /etc/rc.d/rc.local
加入
service fdfs_trackerd start
至此,tracker配置完毕
3.2 storage的配置
在tracker同级目录下创建两个目录存放文件
#log
mkdir /opt/fastdfs_storage
#实际文件存储位置
mkdir /opt/fastdfs_storage_data
修改/etc/fdfs/storage.conf
vi /etc/fdfs/storage.conf
#启用配置文件(默认)
disabled=false
#组名
group_name=group1
#设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
port=23000
#设置storage数据文件和日志目录
base_path=/opt/fastdfs_storage
#存储路径个数,需要和store_path个数匹配
store_path_count=1
#实际文件存储路径
store_path0=/opt/fastdfs_storage_data
#tracker 云服虚拟机ip地址+端口,不能写127.0.0.1
tracker_server=192.168.1.1:22122
#设置 http 端口号
http.server_port=8888
创建软引用
ln -s /usr/bin/fdfs_storaged /usr/local/bin
启动storage
service fdfs_storaged start
查看端口监听状态
netstat -unltp|grep fdfs
成功,此时我们进入中查看
cd /opt/fastdfs_storage_data/data
查看tracker和storage的关联状态
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
如无意外,应该能看到你刚才所配置的storage节点
至此,完成storage的配置
四、nginx与fastdfs-nginx模块的安装
fastdfs在4.0.5版本移除了自带http支持。因此我们需要自己搭建nginx对其进行反向代理
4.1 将第一步下载的nginx-1.8.1与fastdfs-nginx-module-1.20.tar放到云服虚拟机上
先安装以下依赖
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
然后解压以上两个包
tar -zxvf nginx-1.8.1.tar.gz
tar -zxvf fastdfs-nginx-module-1.20.tar.gz
4.2 配置fastdfs-nginx-module
修改/usr/local/fastdfs-nginx-module-1.20/src/config
vi /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/"
4.3 编译安装nginx
进入nginx目录,对其编译安装
#进入nginx目录
cd nginx-1.8.1
#--prefix指定到/usr/local/nginx中
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-1.20/src
完成
紧接着编译与安装nginx
make
make install
至此,nginx安装完成
五、nginx对fastdfs的反向代理
第四步完成后,我们可以看到/usr/local/下多了nginx目录
5.1 配置反向代理
进入nginx的conf目录并修改配置文件
cd /usr/local/nginx/conf
vi nginx.conf
在配置文件的最后加入以下的配置
server{
listen 9999;
location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
}
5.2 配置fastdfs
然后进入FastDFS的安装目录/root/fastdfs-5.11目录下的conf目录,将http.conf和mime.types拷贝到/etc/fdfs目录
cd ~/fastdfs-5.11
cp -r conf/http.conf /etc/fdfs/
cp -r conf/mime.types /etc/fdfs/
把fastdfs-nginx-module安装目录中src目录下的mod_fastdfs.conf也拷贝到/etc/fdfs目录
cp -r /usr/local/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
这是/etc/fdfs选的所有配置文件
配置mod_fastdfs.conf
vi mod_fastdfs.conf
#保存日志目录
base_path=/opt/fastdfs_storage
#tracker服务器的IP地址以及端口号,改为云服虚拟机的ip
tracker_server=192.168.1.1:22122
#storage服务器的端口号
storage_server_port=23000
#文件 url 中是否有 group 名
url_have_group_name = true
# 存储路径
store_path0=/opt/fastdfs_storage_data
#设置组的个数
group_count = 3
#在文件底部添加以下信息
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
建立 M00 至存储目录的符号连接
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
5.3 启动nginx
/usr/local/nginx/sbin/nginx
打开云服虚拟机的安全组9999端口
访问 ip:9999
得到以下
至此 fastdfs 部署完毕