本文共 6746 字,大约阅读时间需要 22 分钟。
安装,首先准备一个环境两个库以及一个安装包。
【1. 一个环境】 因为 FastDFS 采用 C 语言开发,安装前,需要先安装 gcc 环境。命令如下:yum install gcc-c++
【2. 两个库】
由于 FastDFS 依赖 libevent 库,安装命令如下:yum -y install libevent
另一个库是 libfastcommon,这是 FastDFS 官方提供的,它包含了 FastDFS 运行所需要的一些基础库。
libfastcommon 下载地址,本人已经下载好,并不算很大,分享到了百度网盘,可以方便大家下载: 里面提供的三个软件都是必备的哦! 将下载好的 libfastcommon 拷贝至 /usr/local/ 目录下,然后依次执行以下命令: 由于我们下到了本地,我们可以通过 Xftp 这个工具来将我们的安装包【libfastcommon-1.0.43.tar.gz】拉到 CentOS 上面去。【当大家拉取完成后】// 进入目录中cd /usr/local// 对其解压tar -zxvf libfastcommon-1.0.43.tar.gz // 解压完进入文件夹中cd libfastcommon-1.0.43// 剩下的就是编译安装了./make.sh./make.sh install
【3. 一个安装包】
网盘中已经分享,下载到本地后,通过 Xftp 将文件 【fastdfs-6.06.tar.gz】拷贝到 /usr/local 目录下,然后依次执行以下命令安装:cd /usr/localtar -zxvf fastdfs-6.06.tar.gz cd fastdfs-6.06./make.sh./make.sh install
安装成功后,执行如下命令,将安装目录内 conf 目录下的配置文件拷贝到 /etc/fdfs目录下:【目录不用创建,cp 命令会帮你创建的】
cd conf/cp ./* /etc/fdfs/
【4. 配置】
接下来进入 /etc/fdfs/ 目录下进行配置: 打开 tracker.conf 文件:cd /etc/fdfs/vim tracker.conf
修改如下配置:
默认端口是 22122,可以跟据实际需求修改,然后再配置以下元数据的保存目录(注意目录要存在)。
【5. 启动】 接下来执行如下命令启动 Tracker:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
Storage 本身的安装和 Tracker 一致,执行命令都一样,因为这里我将 Tracker 和 Storage 安装再同一台服务器上,所以不用再执行安装命令了(相当于安装了 Tracker 时已经安装了 Storage 了)。
唯一要做的,就是进入到 /etc/fdfs 目录下,配置 Storage:cd /etc/fdfs/vim storage.conf这里一共配置了三个地方,分别是 base_path、store_path0、tracker_server,tracker_server 模板有两个地址,我们注释一个,另一个修改成自己的虚拟机Ip。 配置完成后,再次启动 Storage:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
首先我们创建一个普通的 Mavne 工程,添加如下依赖:
net.oschina.zcx7878 fastdfs-client-java 1.27.0.0
然后,在项目的 resources 目录下添加 FastDFS 的配置文件 fastdfs-client.properties,内容如下:
fastdfs.connect_timeout_in_seconds = 5fastdfs.network_timeout_in_seconds = 30fastdfs.charset = UTF-8fastdfs.http_anti_steal_token = falsefastdfs.http_secret_key = FastDFS1234567890fastdfs.http_tracker_http_port = 80fastdfs.tracker_servers = 192.168.91.128:22122fastdfs.connection_pool.enabled = truefastdfs.connection_pool.max_count_per_entry = 500fastdfs.connection_pool.max_idle_time = 3600fastdfs.connection_pool.max_wait_time_in_ms = 1000
其中 fastdfs.tracker_servers 是 Tracker 的地址,大家跟据自己的虚拟机Ip配置即可。
代码如下:
@Test void contextLoads() throws IOException, MyException { ClientGlobal.initByProperties("fastdfs-client.properties"); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient1 client1 = new StorageClient1(trackerServer, storageServer); NameValuePair pairs[] = null; String fileId = client1.upload_file1("C:\\Users\\bai\\Pictures\\Camera Roll\\img\\javaboy.jpg", "jpg", pairs); System.out.println(fileId); }
首先这里加载配置文件,然后构造一个 TrackerClient 对象,接着再跟据这个对象获取到一个 TrackerServer,然后再创建一个 StorageClient1 实例。NameValuePair 中保存的就是文件的元数据信息,如果有的话,就以 key/value 的方式来设置,如果没有直接给一个 null 即可。
最后调用 client 的 upload_file1 方法上传文件,第一个参数是文件路径,第二个参数是文件的扩展名,第三个参数是文件的元数据信息,这个方法的返回值,就是上传文件的访问路径,执行该方法,打印日志如下:
group1/M00/00/00/wKj9gF6dngqASrBQAAAT8J10-TU753.jpg 就是文件的路径,如果你的测试结果也是这样就证明上传文件的功能没有问题。
wget http://nginx.org/download/nginx-1.17.0.tar.gz
yum -y install pcre-develyum -y install openssl openssl-devel
./configuremakemake install
/usr/local/nginx/sbin/nginx
【百度网盘已经下载好的】,将下载好的文件拷贝到 /usr/local 目录下,进入 /usr/local 目录,分别执行如下命令:
cd /usr/localtar -zxvf fastdfs-nginx-module-1.22.tar.gz
然后将 /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf 文件拷贝到 /etc/fdfs 目录下,并修改文件的内容:
cp /usr/local/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/vim /etc/fdfs/mod_fastdfs.conf
./configure --add-module=/usr/local/fastdfs-nginx-module-1.22/srcmakemake install
vim /usr/local/nginx/conf/nginx.conf
// 首先进入 nginx 的目录中去cd /usr/local/nginx/sbin/// 启动 nginx ./nginx// 启动成功后的打印日志ngx_http_fastdfs_set pid=20932
全部安装成功了。
@Test void download() throws IOException, MyException { ClientGlobal.initByProperties("fastdfs-client.properties"); TrackerClient trackerClient = new TrackerClient(); TrackerServer trackerServer = trackerClient.getConnection(); StorageServer storageServer = null; StorageClient1 client1 = new StorageClient1(trackerServer, storageServer); byte[] bytes = client1.download_file1("group1/M00/00/00/wKj9gF6da6yAU-EMAAAT8J10-TU390.jpg"); FileOutputStream fos = new FileOutputStream(new File("C:\\Users\\bai\\Pictures\\Camera Roll\\img\\javaboy2.jpg")); fos.write(bytes); fos.close(); }
-代码解释:直接调用 download_file1 方法获取到一个 byte 数组,然后通过 IO 流写出到本地文件即可。
vim /etc/fdfs/http.conf
./nginx -s stop./nginx
@Test void getToken() throws UnsupportedEncodingException, NoSuchAlgorithmException, MyException { int ts = (int) Instant.now().getEpochSecond(); String token = ProtoCommon.getToken("M00/00/00/wKj9gF6dkA-AeHQ1AAAT8J10-TU507.jpg", ts, "FastDFS1234567890"); StringBuilder sb = new StringBuilder(); sb.append("http://192.168.253.128") .append("/group1/M00/00/00/wKj9gF6dkA-AeHQ1AAAT8J10-TU507.jpg") .append("?token=") .append(token) .append("&ts=") .append(ts); System.out.println(sb.toString()); }
如果你的配置文件没有问题,但是发生连接不上 22122 这个端口的话,原因就是你的 防火墙没有开发 22122 着端口号,只要你开启了 22122 端口号就能避免这个错误了。
转载地址:http://jpqwi.baihongyu.com/