Categories: 分布式
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
原理
下载
官方网站:https://github.com/happyfish100/
准备
fastdfs-nginx-module-master.zip
安装
安装依赖
yum install make cmake gcc gcc-c++
libfastcommon
解压libfastcommon-master.zip
unzip libfastcommon-master.zip
进入解压后的路径,执行
./make.sh
完成后执行
./make.sh install
FastDFS
解压fastdfs-master.zip
unzip fastdfs-master.zip
进入解压后的路径,执行
./make.sh
完成后执行
./make.sh install
配置Tracker
在/usr/local/software下创建fastdfs目录
mkdir -p fastdfs/tracker
复制tracker的配置文件
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
修改tracker.conf
启动Tracker
/etc/init.d/fdfs_trackerd start
查看运行状态
ps ef|grep fdfs_trackerd
配置Storage
注:tracker和storage应在不同的服务器,即在两台服务器上都安装 LIBFASTCOMMON 和 FASTDFS ,其中一台配置tracker,另一台配置storage
在/usr/local/software下创建storage目录
mkdir -p fastdfs/storage
复制storage的配置文件
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
修改storage.conf
启动Storage
/etc/init.d/fdfs_storaged start
查看运行状态
ps -ef|grep fdfs_storaged
测试
复制客户端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改client.conf
vim /usr/123.txt
执行
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/123.txt
返回结果
整合nginx
配置fastdfs
解压fastdfs-nginx-module-master.zip
unzip fastdfs-nginx-module-master.zip
进入解压后的src路径
复制配置文件
cp mod_fastdfs.conf /etc/fdfs/
修改/etc/fdfs/mod_fastdfs.conf
cp /usr/lib64/libfdfsclient.so /usr/lib/
cp /usr/local/software/fasrdfs-master/conf/http.conf /etc/fdfs/
cp /usr/local/software/fasrdfs-master/conf/mime.types /etc/fdfs/
创建nginx/client目录
mkdir -p /var/temp/nginx/client
配置nginx
解压
tar -zxvf nginx-1.10.0.tag.gz
进入解压后的目录,安装依赖
yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
完成后执行
./configure --prefix=/usr/local/software/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/software/fastdfs-nginx-module-master/src
完成后执行
make
完成后执行
make install
修改/usr/local/software/nginx/conf/nginx.conf配置文件
添加server
server {
listen 8888;
server_name localhost;
location /group1/M00/{
ngx_fastdfs_module;
}
}
启动ngnix
ngnix
停止ngnix
ngnix -s stop
重启ngnix
ngnix -s reload
开放8888端口
java使用FastDFS
pom.xml
<!-- fastdfs -->
<dependency>
<groupId>fastdfs_client</groupId>
<artifactId>fastdfs_client</artifactId>
<version>1.25</version>
</dependency>
resources下client.conf
tracker_server=服务器的ip或域名:22122
测试代码
public class FastDFSTest {
public static void main(String[] args) throws Exception {
// 1、向工程中添加jar包
// 2、创建一个配置文件。配置tracker服务器地址
// 3、加载配置文件(绝对路径,工程目录不要有中文)
ClientGlobal.init(FastDFSTest.class.getResource("/").getPath() + "client.conf");
// 4、创建一个TrackerClient对象。
TrackerClient trackerClient = new TrackerClient();
// 5、使用TrackerClient对象获得trackerserver对象。
TrackerServer trackerServer = trackerClient.getConnection();
// 6、创建一个StorageServer的引用null就可以。
StorageServer storageServer = null;
// 7、创建一个StorageClient对象。trackerserver、StorageServer两个参数。
StorageClient storageClient = new StorageClient(trackerServer, storageServer);
// 8、使用StorageClient对象上传文件。
String[] strings = storageClient.upload_file("f:/abc.jpg", "jpg", null);
for (String string : strings) {
System.out.println(string);
}
}
}