1874
1874
FE Engineer
桌游布道者
有粤语歌就不会有世界末日

在腾讯云服务器上安装FastDFS

1874 - 2019-02-21 - 学习笔记 / Java
2019-2-21|最后更新: 2023-4-10|
type
Post
status
Published
date
Feb 21, 2019
slug
di6uo5
summary
category
学习笔记
tags
Java
创建时间
Apr 7, 2023 07:15 PM
更新时间
Apr 10, 2023 05:26 AM
password
icon
Task List

引言

FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆@YuQing ,支持 Linux、FreeBSD、AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB 之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用。

安装前准备

我的云服务器为腾讯云服务器,系统为 CentOS7.2(64 位),自带 50G 系统盘。

安装 FastDFS

上传安装包

此次用到的安装包如图所示,我们首先用 FTP 工具把 FastDFS(
)的相关安装包上传至服务器的
/usr/local/fastDFS
目录中(也可以自行选择目录,后面在涉及到修改配置文件时会进一步提示说明)。
notion image

安装基本环境

yum -y install libevent

安装 libfastcommonV1.0.7 工具包

tar -zxvf libfastcommonV1.0.7.tar.gz
notion image
进入解压后的目录,看到有
make.sh
,依次执行命令进行编译。
./make.sh ./make.sh install

安装 Tracker 服务

tar -zxvf FastDFS_v5.05.tar.gz
notion image
进入文件夹后依次执行命令进行编译:
./make.sh ./make.sh install
安装后文件会默认安装在 /usr/bin 中:
ll fdfs*
notion image
配置文件在
/etc/fdfs
目录中:
notion image
进入
/usr/locla/fastDFS/FastDFS/conf/
目录下:
cd /usr/locla/fastDFS/FastDFS/conf/
notion image
将其所有文件拷贝至
/etc/fdfs
目录下:
cp * /etc/fdfs/
notion image
配置 tracker 服务,进入
/etc/fdfs/
目录下,修改
tracker.conf
文件
cd /etc/fdfs/ vim tracker.conf
修改base_path为自定义存放 tracker 日志的目录,这里以/usr/local/fastDFS/trackerLog为例,如果没有创建此目录,可以先修改再创建。
mkdir -p /usr/local/fastDFS/trackerLog
notion image
这里我们也可以挂载的一个云硬盘,使用云硬盘的目录来存放文件。因为系统盘不支持扩容,以后系统盘满了之后就很麻烦,所以最好就挂载一个硬盘,同时也可以把图片文件都和系统盘给区分开来。我暂时没有云硬盘,这里以系统盘为例。
启动 tracker 服务并查看进程是否已启动
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf ps aux|grep trackerd
notion image

安装 storage 服务

进入/etc/fdfs/目录,修改storage.conf文件
vim /etc/fdfs/storage.conf
修改日志的存储路径,如果没有相关文件夹,可以先配置再创建:
mkdir -p /usr/local/fastDFS/storageLog/
notion image
修改文件的存储路径:
mkdir -p /usr/local/fastDFS/storage/
notion image
修改
tracker_server
的值为云服务器的公网 IP 地址。
notion image
启动 storage 服务并且查看进程:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf ps aux|grep storage
notion image
至此,FastDFS 安装完毕,但是我们需要通过 http 来进行上传文件并访问,所以需要使用 nginx 一起来搞事情!

安装 nginx

进入/usr/local/fastDFS目录,解压缩 fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
修改/fastdfs-nginx-module/src/config文件,把其中的local去掉:
cd fastdfs-nginx-module/src/ vim config
notion image
创建默认的 nginx 的安装目录:
mkdir /usr/local/nginx/
进入 nginx 根目录进行配置:
cd /usr/local/fastDFS/nginx-1.14.2/
直接输入以下命令对 nginx 进行配置:
注意:最后一行**--add-module=/usr/local/fastDFS/nginx/fastdfs-nginx-module/src**的目录为你所指定的**fastdfs-nginx-module**的安装目录
./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --add-module=/usr/local/fastDFS/nginx/fastdfs-nginx-module/src
依次执行以下命令进行编译:
make make install
/fastdfs-nginx-module/src/mod_fastdfs.conf文件复制到/etc/fdfs目录下:
cd /usr/local/fastDFS/nginx/fastdfs-nginx-module/src/ cp mod_fastdfs.conf /etc/fdfs
notion image
进入
/etc/fdfs/
,打开
mod_fastdfs.conf
并且修改日志存放路径:
mkdir -p /usr/local/fastDFS/tmp/ cd /etc/fdfs/ vim mod_fastdfs.conf
notion image
修改
tracker_server
的值为云服务器的公网 IP 地址。
notion image
修改
storage_path0
的存放路径:
mkdir -p /usr/local/fastDFS/storage/
notion image
进入 ngxin 的配置文件目录并且修改
nginx.conf
文件:
cd /usr/local/nginx/conf/ vim nginx.conf
修改原 server 中的配置为以下:
server { listen 80; server_name 你的公网IP地址; location /group1/M00 { ngx_fastdfs_module; } }
启动 nginx
/usr/local/nginx/sbin/nginx

安装完成

至此,FastDFS 已全部安装完成,下面将介绍如何利用 java 开发工具来测试 FastDFS 的上传文件功能。

上传测试

需求:将本地图片上传至图片服务器,再控制台打印 url。

创建 Maven 工程 FastDFSTest

由于 FastDFS 客户端 jar 包并没有在中央仓库中,所以需要使用下列命令手动安装 jar 包到 Maven 本地仓库。 源码地址:fastdfs-client-java,解压后导入 Eclipse 的 Maven 工程,右键项目选择Run As — Maven Install进行本地仓库的安装。 在你的FastDFSTest工程的pom.xml中添加依赖:
<dependency> <groupId>org.csource</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27-SNAPSHOT</version></dependency>

在 resources 文件夹中创建fdfs_client.conf文件

# 连接超时时间 # 默认30s connect_timeout=30 # 网络超时时间 # 默认30秒30s network_timeout=60 # 工作文件夹,日志存在此(目录自定) base_path=/home/yuqing/fastdfs # tracer server服务器地址列表,多个tracer server的话,分行列出 tracker_server=你的公网IP:22122 #日志级别 ### emerg for emergency ### alert ### crit for critical ### error ### warn for warning ### notice ### info ### debu log_level=info # 是否使用连接池 use_connection_pool = false # 连接闲置超时时间,连接如果闲置的时间超过本配置,则关闭次连接,单位秒 connection_pool_max_idle_time = 3600 # 是否从tracer server读取fastdfs的参数,默认为false load_fdfs_parameters_from_tracker=false # 是否使用storage id 替换 ip,默认为false # 和tracker.conf该参数含义一样 # 本配置只有在load_fdfs_parameters_from_tracker=false时生效 # 本配置默认为false use_storage_id = false # 指定storage id的文件名,允许使用绝对路径 # 和tracker.conf该参数含义一样 # 本配置只有在load_fdfs_parameters_from_tracker=false时生效 storage_ids_filename = storage_ids.conf #HTTP settings http.tracker_server_port=8080 #引入HTTP相关配置 ##include http.conf

创建测试 java 类

package cn.letttgaco.fastdfs;import org.csource.fastdfs.ClientGlobal;import org.csource.fastdfs.StorageClient;import org.csource.fastdfs.StorageServer;import org.csource.fastdfs.TrackerClient;import org.csource.fastdfs.TrackerServer;public class TestDemo { public static void main(String[] args) throws Exception { // 1、加载配置文件(绝对路径),配置文件中的内容就是 tracker 服务的地址。 ClientGlobal.init("D:/Codes/Eclipse/Tiramisu/spring-security-demo/src/main/resources/fdfs_client.conf"); // 2、创建一个 TrackerClient 对象。直接 new 一个。 TrackerClient trackerClient = new TrackerClient(); // 3、使用 TrackerClient 对象创建连接,获得一个 TrackerServer 对象。 TrackerServer trackerServer = trackerClient.getConnection(); // 4、创建一个 StorageServer 的引用,值为 null StorageServer storageServer = null; // 5、创建一个 StorageClient 对象,需要两个参数 TrackerServer 对象、StorageServer 的引用 StorageClient storageClient = new StorageClient(trackerServer, storageServer); // 6、使用 StorageClient 对象上传图片(绝对路径)。 // 扩展名不带“.” String[] strings = storageClient.upload_file("D:/Codes/TestCodes/c.JPG", "jpg", null); // 7、返回数组。包含组名和图片的路径。 for (String string : strings) { System.out.println(string); } }}
控制台输出如下结果:
group1M00/00/00/wKgZhVkMP4KAZEy-AAA-tCf93Fo973.jpg

打开浏览器查看已上传的图片

http://你的公网IP/group1/M00/00/00/wKgZhVkMP4KAZEy-AAA-tCf93Fo973.jpg
Java短信微服务开发 SpringBoot+ActiveMQ+腾讯云SMSSpring Security安全框架入门