前置:
netstat -tunlp 是查看所有的在使用的端口号情况
netstat -tunlp | grep 端口号 是查看所查询的端口号情况
备注:
-t:(tcp)仅显示TCP相关端口
-u:(udp)仅显示UDP相关端口
-n:不进行DNS轮询,显示IP(可以加速操作)
-l:仅列出有在Listen(监听)的服务端口
-p:显示建立相关链接的程序名
正文
-
fastDFS是由Tracker Server(跟踪服务器),存储服务器(Storage Server),和客户端(Clent)组成
-
下面直接开始fastDFS及其组成服务的安装及使用
- 安装的环境为Linux CentOS7 初始安装的系统
- 需要下载的文件点击下载 -------传送门
- 点击下载
上传到Linux系统并进行解压,我上传的路径为–/opt/fastdfs
并使用解压命令进行解压
unzip nginx-1.2.9.zip
unzip fastdfs-master.zip
unzip fastdfs-nginx-module-master.zip
如果找不到unzip命令或unzip命令无效直接yum命令进行安装unzip
yum -y install unzip
解压后如下所示
此时,环境已经准备好了。
- 由于是新安装的Linux系统此时需要安装编译工具
yum -y install gcc-c++
进入libfastcommon-mastercd 目录
编译并安装:
./make.sh && ./make.sh install
然后建立一个软连接,实际上就是windows的快捷键
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
libfastcommon-mastercd 安装成功
- 安装 fastdfs-master
进入到 fastdfs-master目录中,编译并安装:
./make.sh && ./make.sh install
正常情况下安装成功,从安装日志中可以看出,fastdfs会在etc下创建fdfs目录。
我们进入该目录:
cd /etc/fdfs/
将 client.conf.sample, storage.conf.sample, tracker.conf.sample三份文件分别复制。
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
然后fastdfs-master安装成功
- 安装Tracker
首先创建tracker工作目录,我创建的工作路径为:
/home/admin/tracker
然后修改tracker配置文件:
vim /etc/fdfs/tracker.conf
修改以下内容
# 绑定IP,为空绑定所有,默认为空,正式环境需填写,这里我们可以不填
bind_addr=
# tracker 服务的端口号
port=22122
# tracker的工作目录,这里是我刚刚创建的文件路径
base_path=/home/admin/tracker
# 为服务器预留多少空间,默认是10%。可根据自己环境条件自行修改
reserved_storage_space = 10%
# tracker访问开放端口号,默认是8080,到时候用来访问文件会用到
http.server_port=9527
保存之后即可启动tracker服务,可以使用如下命令启动:
service fdfs_trackerd start
fdfs_trackerd /etc/fdfs/tracker.conf start
启动成功之后我们可以看一下刚刚我们新增的tracker文件夹,目录中会多了data和logs两个目录
安装 storage
创建文件路径
/home/admin/storage
修改storage配置文件:vim /etc/fdfs/storage.conf
主要修改一下内容:
# 设置group_name,默认为:group1
group_name=group1
# 绑定IP,为空绑定所有,默认为空,正式环境需填写,这里我们可以不填
bind_addr=
# storage服务端口号
port=23000
# storage的工作目录,这里是我刚刚创建的文件路径
base_path=/home/admin/storage
# 实际文件的存储路径的个数
store_path_count=1
# 实际文件的存储路径
store_path0=/home/admin/file
# 生成存储文件夹的个数,此个数根据该配置的值的平方获得
# 默认值为256,那么生成存储文件夹的个数则为:256 * 256
# 我这里设置的16,那么生成存储文件夹的个数则为:16 * 16
subdir_count_per_path=16
# tracker服务,必须对应我们开启的tracker服务,192.168.10.170为当前系统的ip地址
tracker_server=192.168.25.110:22122
# 对应的http端口号,默认8888。可自行修改
http.server_port=8888
保存之后即可启动storage服务,可以使用如下命令启动:
service fdfs_storaged start
fdfs_storaged /etc/fdfs/storage.conf start
启动成功之后我们可以看一下刚刚我们新增的storaged文件夹,目录中会多了data和logs两个目录
然后我们再看文件实际存放的路径,我的实际存放路径为:
/home/admin/file
这个时候我们可以看到,除了我自己新增的两个文件夹之外多出了一个data文件夹。
我们进入到data文件夹中查看,即可看到我们当时设置存储文件夹的个数,我设置的是16。
OK,至此storage安装完成
校验整合
执行命令:
fdfs_monitor /etc/fdfs/storage.conf
出现以下内容则表示storage是否注册到了tracker中去了。
DEBUG - base_path=/usr/local/FastDFS/storage, connect_timeout=10, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=1, server_index=0
tracker server is 192.168.25.110:22122
group count: 1
Group 1:
group name = group1
disk total space = 51175 MB
disk free space = 44966 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 16
current write server index = 0
current trunk file id = 0
Storage 1:
id = 192.168.25.110
ip_addr = 192.168.10.170 (localhost.localdomain) ACTIVE
http domain =
version = 5.12
join time = 2019-01-02 16:04:36
up time = 2019-01-06 18:03:09
total storage = 51175 MB
free storage = 44966 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 16
storage_port = 23000
storage_http_port = 8888
current_write_path = 0
source storage id =
if_trunk_server = 0
connection.alloc_count = 256
connection.current_count = 0
connection.max_count = 6
total_upload_count = 418
success_upload_count = 418
total_append_count = 0
success_append_count = 0
total_modify_count = 0
success_modify_count = 0
total_truncate_count = 0
success_truncate_count = 0
total_set_meta_count = 414
success_set_meta_count = 414
total_delete_count = 158
success_delete_count = 158
total_download_count = 55
success_download_count = 55
total_get_meta_count = 8
success_get_meta_count = 8
total_create_link_count = 0
success_create_link_count = 0
total_delete_link_count = 0
success_delete_link_count = 0
total_upload_bytes = 285418826
success_upload_bytes = 285418826
total_append_bytes = 0
success_append_bytes = 0
total_modify_bytes = 0
success_modify_bytes = 0
stotal_download_bytes = 731115
success_download_bytes = 731115
total_sync_in_bytes = 0
success_sync_in_bytes = 0
total_sync_out_bytes = 0
success_sync_out_bytes = 0
total_file_open_count = 481
success_file_open_count = 481
total_file_read_count = 63
success_file_read_count = 63
total_file_write_count = 1340
success_file_write_count = 1340
last_heart_beat_time = 2019-02-15 17:21:14
last_source_update = 2019-01-30 22:59:59
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
至此,安装成功!
接着进入我们安装的 fastdfs-master 目录下的conf目录
将http.conf和mime.types拷贝到/etc/fdfs目录下:
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/
目录如下所示:
然后进入我们解压好的
/opt/fastdfs/fastdfs-nginx-module-master
src 目录下
将mod_fastdfs.conf也拷贝到/etc/fdfs目录下
cp mod_fastdfs.conf /etc/fdfs/
修改刚拷贝的文件
vim /etc/fdfs/mod_fastdfs.conf
主要修改以下内容:
# tracker路径
base_path=/home/admin/tracker
# tracker服务 虚拟机的ip+22122
tracker_server=192.168.25.110:22122
# storage服务端口号
storage_server_port=23000
# 分组名称
group_name=group1
# 地址中是否包含分组名
url_have_group_name = true
# 存储路径个数
store_path_count=1
# 存储路径
store_path0=/home/admin/file
# 分组个数
group_count = 1
# 分组配置
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/admin/file
创建M00至存储目录连接
ln -s /home/admin/file/data/M00
下载nginx
网址为: 传送门
我选择的版本为1.2.9版本
安装nginx所需要的依赖:
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
将下载好的nginx进行解压:
tar xvf nginx-1.2.9.tar.gz
进入我们解压号的nginx目录,然后进行配置编译:
./configure --prefix=/opt/fastdfs/nginx-1.2.9 --add-module=/opt/fastdfs/fastdfs-nginx-module-master/src
# prefix:安装目录
# add-module:解压后/opt/fastdfs/fastdfs-nginx-module-master/src所在的位置
配置编译应该没有问题。然后我们直接进行安装:
make && make install
安装完成之后,我们进入安装目录:
cd /opt/fastdfs/nginx-1.2.9
修改nginx配置文件:
vim conf/nginx.conf
修改内容如下:
# 新增一个服务,监听之前配置开放的端口号
server {
listen 9527; #对应之前开放的端口号
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
注意: 同时还要加上
user root;
如下所示:
#user nobody;
worker_processes 1;
user root;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
...
要不然就会出现能够上传成功但是启动nginx访问出现404
开启 nginx: 在/opt/fastdfs/nginx-1.2.9 目录下
./sbin/nginx
修改一下fdfs下的客户端文件:vim /etc/fdfs/client.conf
修改以下内容:
# the base path to store log files
base_path=/home/admin/tracker
# 本机ip+22122
tracker_server=192.168.25.110:22122
# 对应tracker中的开放端口
http.tracker_server_port=9527
访问nginx服务出现如下:
如此Nginx安装成功,然后我们上传图片测试一下
执行上传命令:
fdfs_upload_file /etc/fdfs/client.conf /home/a.png
备注 /home/a.png 为文件的完整路径
返回如下路径:
group1/M00/00/00/wKgZbl3cxhiAIXtYAAykaFSHwkI368.png
之后使用
http://192.168.25.110:9527/group1/M00/00/00/wKgZbl3cxhiAIXtYAAykaFSHwkI368.png
访问就圆满成功啦!
然后附上java上传文件到fastFDS的代码
package com.hlwxy.bootcurd;
import org.csource.common.NameValuePair;
import org.csource.fastdfs.*;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
/**
* @author mgy
* @Description:
* @date 2019/11/25 15:16
*/
public class FastDFSTest {
// 测试文件上传
private static Logger logger = LoggerFactory.getLogger(FastDFSTest.class);
@Test
public void test01() {
// 加载配置文件
// String filePath = new ClassPathResource("").getFile().getAbsolutePath();;
try {
String filePath = new ClassPathResource("fdfs_client.conf").getFile().getAbsolutePath();;
ClientGlobal.init(filePath);
// ClientGlobal.initByProperties("fastdfs_client.properties");
TrackerClient trackerClient = new TrackerClient();
TrackerServer trackerServer = trackerClient.getConnection();
StorageServer storageServer = null;
StorageClient1 storageClient1 = new StorageClient1(trackerServer, storageServer);
NameValuePair[] metaList = new NameValuePair[1];
metaList[0] = new NameValuePair("fileName", "1.png");
String png = storageClient1.upload_file1("E:\\壁纸\\电脑壁纸精选\\4bccdee4f93e48d732ff909325f4ade7.jpg", "png", metaList);
logger.info("上传的文件路径为:{}", png);
} catch (Exception e) {
logger.error("FastDFS Client Init Fail!", e);
}
}
}
其中fdfs_client.conf配置文件如下:
connect_timeout = 60
network_timeout = 60
charset = UTF-8 编码格式
http.tracker_http_port = 9527 Nginx端口
http.anti_steal_token = false
tracker_server = 192.168.25.110:22122 虚拟机ip+22122
执行测试代码如下所示:
14:38:02.657 [main] INFO com.hlwxy.bootcurd.FastDFSTest
- 上传的文件路径为:group1/M00/00/00/wKgZbl3cyEuAPQkjAAugk8hrYTM742.png
再次进行测试:
设置fastDFS 设置开机启动:
编辑如下文件
vim /etc/rc.d/rc.local
添加如下代码:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/opt/fastdfs/nginx-1.2.9/sbin/nginx
测试:
重启虚拟机–直接访问Nginx
显示如下:
备注:
本文实现是摘抄@难受啊马飞。博主的文章,有兴趣的可以继续观看@难受啊马飞。博主的文章,如有不对之处请加以指教.
安装fastdfs 执行 ./make.sh
和 ./make.sh install
时 出现以下报错
Makefile:4: *** Recursive variable 'ENABLE_STATIC_LIB' references itself (eventually). Stop. ./make.sh: line 178: perl: command not found ./make.sh: line 179: perl: command not found ./make.sh: line 180: perl: command not found
- 测试执行代码:
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget