赞
踩
1 |
yum install gcc-c++ perl-devel pcre-devel openssl-devel zlib-devel wget
|
2 |
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
|
3 |
wgethttps://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
|
4 |
tar -zxvf V1.0.43.tar.gz -C /usr/local
tar -zxvf V5.11.tar.gz -C /usr/local
|
5 |
cd /usr/local/libfastcommon-1.0.43/
./make.sh && ./make.sh install
|
6 |
cd /usr/local/fastdfs-6.06
./make.sh && ./make.sh install
|
7 |
cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
|
8 |
mkdir -p /data/fastdfs/tracker
|
9 |
vim /etc/fdfs/tracker.conf
disabled=false #
启用配置文件
port=22122 #
设置
tracker
的端口号
base_path=/data/fastdfs/tracker #
设置
tracker
的数据文件和日志目录(需预先创建)
http.server_port=8888 #
设置
http
端
口号
http.server_port=8888 #
指的是在
tracker
服务器上启动
http
服务进程,如
:apache
或者
nginx
启动时所监听的端口
|
10 | /etc/init.d/fdfs_trackerd start |
11 |
netstat -lntup |grep fdfs
|
12 |
mkdir -p /data/fastdfs/base
mkdir -p /data/fastdfs/storage
|
13 |
vim /etc/fdfs/storage.conf
disabled=false #
启用配
置文件
group_name=group1 #
组名,
根据实际情况修改
port=23000 #
设置
storage
的端口号
base_path=/data/fastdfs/base #
设置
storage
的日志目录(需预先创建)
store_path_count=1 #
存储路
径个数,需要和
store_path
个数匹配
store_path0=/data/fastdfs/storage #
存储
路径
tracker_server=172.31.16.121:22122
#tracker
服务器的
IP
地址和端口号
http.server_port=8888 #
设置
storage
上启动的
http
服务的端口号,如安装的
nginx
的端
口号
|
14 |
/etc/init.d/fdfs_storaged start
|
15 |
netstat -lntup |grep fdfs
|
16 |
vim /etc/fdfs/client.conf
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client
#
日志
路径
tracker_server=192.168.66.100:22122
#
追
踪服务器的
IP
,有多个服务器可以另一行
|
17 |
mkdir -p /data/fastdfs/client
|
18 |
ps -ef | grep fdfs
|
19 |
[root@tracker fdfs]# fdfs_upload_file
/etc/fdfs/client.conf
上传的文件路径
|
20 |
fdfs_download_file <config_file> <file_id>
[local_filename] [<download_offset>
<download_bytes>]
|
21 |
[root@tracker fdfs]# fdfs_download_file
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g9
64.rpm /root/java/xxx.rpm
|
22 |
fdfs_file_info <config_file> <file_id>
|
23 |
[root@tracker fdfs]# fdfs_file_info
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g9
64.rpm
|
24 |
fdfs_delete_file <config_file> <file_id>
|
25 |
[root@tracker fdfs]# fdfs_delete_file
/etc/fdfs/client.conf
group1/M00/00/00/wKhygVwnUUOAcgYHCCZp2Ahsb3g9
64.rpm
|
1 |
<dependency>
<groupId>
com.github.tobato
</groupId>
<artifactId>
fastdfs-client
</artifactId>
<version>
1.26.5
</version>
</dependency>
|
2 |
package
com
.
demo
;
import
com
.
github
.
tobato
.
fastdfs
.
FdfsClientConfig
;
import
org
.
springframework
.
boot
.
SpringApplication
;
import
org
.
springframework
.
boot
.
autoconfigure
.
Sprin
gBootApplication
;
import
org
.
springframework
.
context
.
annotation
.
Enabl
eMBeanExport
;
import
org
.
springframework
.
context
.
annotation
.
Impor
t
;
import
org
.
springframework
.
jmx
.
support
.
Registration
Policy
;
//==========================================
=========================
//
获取带有连接池的
FastDFS Java
客户端
@Import
(
FdfsClientConfig
.
class
)
//
解决
jmx
重复注册
bean
的问题
@EnableMBeanExport
(
registration
=
RegistrationPolicy
.
IGNORE_EXISTING
)
//==========================================
=========================
@SpringBootApplication
public class
FastdfsSpringbootDriverApplication
{
public static
void
main
(
String
[]
args
) {
SpringApplication
.
run
(
FastdfsSpringbootDriv
erApplication
.
class
,
args
);
}
}
|
3 |
#
分布式文件系统
FDFS
配置
fdfs:
so-timeout: 1501
connect-timeout: 601
thumb-image: #
缩略图生成参数
width: 150
height: 150
tracker-list: #TrackerList
参数
,
支持多个
- 192.168.66.100:22122
- 192.168.66.101:22122
|
4 |
/**
*
测试
springboot
环境下的
javaAPI
对分布式文件
系统的上传文件的操作
* @throws FileNotFoundException
*/
@Test
public void testUpload() throws
FileNotFoundException {
//
获取本地文件
File file = new File("G:\\
图片
\\mei.jpg");
//
创建传输文件的输入流
FileInputStream fileInputStream =
new FileInputStream(file);
//
文件上传:参数一:传输文件内容的输入流;
参数二:文件的
size
;参数三:文件扩展名;参数四:描述
文件的元数据;返回值:上传文件在存储节点的唯一标识
(卷名
+
文件名)
StorePath storePath =
fastFileStorageClient.uploadFile(fileInputSt
ream, file.length(), "jpg", null);
//
将卷名与文件名一起打印
System.out.println(storePath.getFullPath());
//
将卷名与文件名分别打印
System.out.println(storePath.getGroup()+" |
"+storePath.getPath());
}
|
4 |
/**
*
测试
springboot
环境下的
javaAPI
对分布式文件
系统的下载文件的操作
* @throws IOException
*/
@Test
public void testDownload() throws
IOException {
//
下载文件:参数一:文件处于存储节点的卷
名;参数二:文件在存储节点的文件名;参数三:下载的回
调函数;返回值:文件内容的字节数组
byte[] bytes =
fastFileStorageClient.downloadFile("group1",
"M00/00/00/wKhCZWICJcqAftV0AAChCwXlPdE133.jp
g", new DownloadByteArray());
//
创建文件输出流,指定输出位置及文件名
FileOutputStream fileOutputStream =
new FileOutputStream("G:\\mei.jpg");
//
使用文件输出流将文件内容字节数组写出
fileOutputStream.write(bytes);
//
刷新输出流
fileOutputStream.flush();
//
关闭输出流
fileOutputStream.close();
}
|
1 |
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
thymeleaf
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
|
2 |
<!DOCTYPE html>
<html
lang
=
"en"
xmlns:th
=
"http://www.thymeleaf.org"
>
<head>
<meta
charset
=
"UTF-8"
>
<title>
wangEditor demo
</title>
</head>
<body>
<div
id
=
"div1"
>
<p>
欢迎使用
<b>
wangEditor
</b>
富文本编辑器
</p>
</div>
<script
type
=
"text/javascript"
th:src
=
"@{wangEditor.min.js}"
src
=
"../static/wangEditor.min.js"
></script>
<script
type
=
"text/javascript"
>
const
E
=
window
.
wangEditor
const
editor
=
new
E
(
'#div1'
)
//
设置文件上传的参数名称
editor
.
config
.
uploadFileName
=
'files'
//
配置
server
接口地址
editor
.
config
.
uploadImgServer
=
'/upload/uploadMoreImage.do'
// 2M
editor
.
config
.
uploadImgMaxSize
=
2
*
1024
*
1024
editor
.
config
.
uploadImgAccept
=
[
'jpg'
,
'jpeg'
,
'png'
,
'gif'
,
'bmp'
,
'webp'
]
//
一次最多上传
5
个图片
editor
.
config
.
uploadImgMaxLength
=
5
editor
.
create
()
</script>
</body>
</html>
|
3 |
@RestController
@RequestMapping
(
"/upload"
)
public class
UoloadToFastDFSController
{
//fastdfs
存储节点的客户端对象
@Autowired
private
FastFileStorageClient
fastFileStorageClient
;
@GetMapping
(
"/upload"
)
public
void
uploadMoreImage
(
MultipartFile
[]
files
){
//
判断是否上传图片
if
(
files
!=
null
&&
files
.
length
!=
0
){
//
遍历上传图片
for
(
MultipartFile multipartFile
:
files
) {
//
获取上传文件名
String
filename
=
multipartFile
.
getOriginalFilename
();
//
获取最后一个
“.”
的下标,并获取从
这个下标的下一个下标开始后的字符作为文件后缀
String
fileSuffix
=
filename
.
substring
(
filename
.
lastIndexOf
(
"."
)
+
1
);
StorePath storePath
=
null
;
try
{
//
上传文件
storePath
=
fastFileStorageClient
.
uploadFile
(
multipartFi
le
.
getInputStream
(),
multipartFile
.
getSize
(),
fileSuffix
,
null
);
}
catch
(
IOException e
) {
e
.
printStackTrace
();
}
//
打印返回的文件在存储节点的唯一标
识
System
.
out
.
println
(
storePath
.
getFullPath
());
}
}
}
}
|
1 |
cd /usr/local
wget https://github.com/happyfish100/fastdfs
nginx-module/archive/V1.22.tar.gz
tar -zxvf V1.22.tar.gz
|
2 |
yum install -y gcc gcc-c++ zlib zlib-devel
openssl openssl-devel pcre pcre-devel gd
devel epel-release
|
3 |
wget https://nginx.org/download/nginx-
1.19.2.tar.gz
cd nginx-1.19.2/
|
4 |
#
建立
Makefile
文件,检查
Linux
系统环境以及相关的关键
属性。
./configure --add-module=/usr/local/fastdfs
nginx-module-1.22/src/
#
编译项目,主要将
gcc
源代码编译成可执行的目标文件
make
#
根据上一步骤编译完成的数据安装到预定的目录中。
make install
|
1 |
cp /usr/local/src/fastdfs-
6.06/conf/mime.types /etc/fdfs/
cp /usr/local/src/fastdfs-6.06/conf/http.conf
/etc/fdfs/
|
2 |
#
拷贝文件
[root@localhost opt]cp /usr/local/fastdfs
nginx-module-1.22/src/mod_fastdfs.conf
/etc/fdfs/
[root@localhost fdfs] vim mod_fastdfs.conf
#
保存日志目录
base_path=/data/fastdfs/storage
#tracker
服务器的
IP
地址以及端口号
tracker_server=192.168.66.100:22122
#
文件
url
中是否有
group
名
url_have_group_name = true
#
存储路径
store_path0=/data/fastdfs/storage
group_count = 1 #
设置组的
个数
#
然后在末尾添加分组信息,目前只有一个分组,就只写一个
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
|
3 |
server
{
listen
80;
server_name
localhost;
location
~
/group[
1-3
]/
M00
{
alias
/data/fastdfs/storage/data;
ngx_fastdfs_module;
}
#
根目录下返回
403
location
= / {
return
403;
}
# log file
access_log
logs/img_access.
log access
;
}
|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。