FastDFS搭建及整合Nginx实现文件上传

news2024/12/23 23:48:00

一、准备环境

        FastDFS需要两个服务,一个tracker跟踪器,一个storage存储节点,tracker做调度配置,storage完成文件存储上传等功能。

        这里我们使用两台虚拟机服务器(centos 7)来部署,有条件的同学建议直接上云资源,区别就是云端服务器更安全,需要开放一下对应端口

二、下载所需资源包:

https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.42
https://codeload.github.com/happyfish100/fastdfs/tar.gz/V6.04
https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/V1.22

下载好的资源上传到服务器,这里我放在/home/software/FastDFS里

 

 因为FastDFS是C语言开发,所以需要安装之前构建服务器的C环境,执行命令:

yum -y install gcc-c++

yum -y install libevent

 三、安装libfastcommon和fastdfs服务

1.解压

tar -zxvf libfastcommon-1.0.42.tar.gz

tar -zxvf fastdfs_.6.04.tar.gz

2.然后进到目录里,有一个make.sh文件,执行编译安装,两个都执行此步骤

./make.sh    编译

./make.sh install   安装

3.在安装fastdfs时,安装完成后会生成目录  /etc/fdfs ,里面会生成sample文件,我们需要将安装完成后的配置文件copy一份到目录下

cd /home/software/FastDFS/fastdfs-6.04/conf

cp * /etc/fdfs

        以上步骤,需要在两台服务器上同步执行,同样的安装和复制配置文件,区别是在1主机上,作为tracker服务,修改tracker的配置文件,2主机修改storage文件的配置文件

四、修改配置文件,启动服务

1.安装完成并copy配置文件到指定目录后,修改tracker的配置文件,这里port是tracker服务的端口,base_path是要存储数据的目录,可以自定义

# bind an address of this host
# empty for bind all addresses of this host
bind_addr=

# the tracker server port
port=22122

# connect timeout in seconds
# default value is 30
# Note: in the intranet network (LAN), 2 seconds is enough.
connect_timeout=10

# network timeout in seconds for send and recv
# default value is 30
network_timeout=60

# the base path to store data and log files
base_path=/usr/local/fastdfs/tracker

2.启动服务试一下,使用/etc/fdfs/下的tracker.conf配置文件启动

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

3.查一下服务状态

ps -ef | grep tracker

4.tracker启动后,我们配置一下storage

# the storage server port
port=23000

# the base path to store data and log files
# NOTE: the binlog files maybe are large, make sure
#       the base path has enough disk space
base_path=/usr/local/fastdfs/storage


# store_path#, based on 0, to configure the store paths to store file
# if store_path0 not exists, it's value is base_path (NOT recommended)
# the paths must be exist
#
# IMPORTANT NOTE:
#       the store paths' order is very important, don't mess up!!!
#       the base_path should be independent (different) of the store paths

store_path0=/usr/local/fastdfs/storage
#store_path1=/home/yuqing/fastdfs2


# tracker_server can ocur more than once for multi tracker servers.
# the value format of tracker_server is "HOST:PORT",
#   the HOST can be hostname or ip address,
#   and the HOST can be dual IPs or hostnames seperated by comma,
#   the dual IPS must be an inner (intranet) IP and an outer (extranet) IP,
#   or two different types of inner (intranet) IPs.
#   for example: 192.168.2.100,122.244.141.46:22122
#   another eg.: 192.168.1.10,172.17.4.21:22122

tracker_server=192.168.98.131:22122
# tracker_server=192.168.209.122:22122

port:服务端口,云服务器的同学需要开通一下23000的端口

base_path:storage的存储路径,自定义

store_path0:建议同base_path配置成相同路径

tracker_server:关联调度中心,也就是tracker的服务ip和端口

5.然后保存,启动一下

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf

6.查一下服务状态

ps -ef | grep storage

 五、测试文件上传

        调度和执行器都完成后,我们来测试一下,fastdfs提供了一个客户端client,在服务器上可以直接使用client测试文件上传

1. 修改执行器storage上的 client.conf ,base_path 依旧自定义,tracker_server关联调度中心

base_path=/usr/local/fastdfs/client

# tracker_server can ocur more than once for multi tracker servers.
# the value format of tracker_server is "HOST:PORT",
#   the HOST can be hostname or ip address,
#   and the HOST can be dual IPs or hostnames seperated by comma,
#   the dual IPS must be an inner (intranet) IP and an outer (extranet) IP,
#   or two different types of inner (intranet) IPs.
#   for example: 192.168.2.100,122.244.141.46:22122
#   another eg.: 192.168.1.10,172.17.4.21:22122

tracker_server=192.168.98.131:22122
# tracker_server=192.168.0.197:22122

2.我们进到 /usr/bin 下找到服务自带的fdfs_test应用程序,使用刚刚修改的client.conf 配置上传,这里我找了服务器上一个图片做测试

cd /usr/bin/
ls fdfs*
./fdfs_test /etc/fdfs/client.conf upload /home/2bpp63hc1.jpg

上传结果:

[root@hrs-node2 bin]# ./fdfs_test /etc/fdfs/client.conf upload /home/2bpp63hc1.jpg
This is FastDFS client test program v6.04

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.fastken.com/ 
for more detail.

[2022-12-05 18:17:08] DEBUG - base_path=/usr/local/fastdfs/client, 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

tracker_query_storage_store_list_without_group: 
	server 1. group_name=, ip_addr=192.168.98.133, port=23000

group_name=imooc, ip_addr=192.168.98.133, port=23000
storage_upload_by_filename
group_name=imooc, remote_filename=M00/00/00/wKhihWOOpiSAKQhHAAPkOnemQdM599.jpg
source ip address: 192.168.98.133
file timestamp=2022-12-05 18:17:08
file size=255034
file crc32=2007384531
example file url: http://192.168.98.133/imooc/M00/00/00/wKhihWOOpiSAKQhHAAPkOnemQdM599.jpg
storage_upload_slave_by_filename
group_name=imooc, remote_filename=M00/00/00/wKhihWOOpiSAKQhHAAPkOnemQdM599_big.jpg
source ip address: 192.168.98.133
file timestamp=2022-12-05 18:17:08
file size=255034
file crc32=2007384531
example file url: http://192.168.98.133/imooc/M00/00/00/wKhihWOOpiSAKQhHAAPkOnemQdM599_big.jpg

访问地址:

example file url: http://192.168.98.133/imooc/M00/00/00/wKhihWOOpiSAKQhHAAPkOnemQdM599_big.jpg

Ng 待更新

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中多条件图片路径通过Map存储获取避免嵌套if-else

场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_前后端分离项目本地运行 前端接收到后台数据之后需进行多个条件判断进而显示对应的图片路径。 比如先判断车辆的类型、…

第十三章:AQS

AQS 基础概念为什么 AQS 是 JUC 最重要的基石?AQS 能干什么AQS内部结构AQS内部类NodeAQS 源码分析以 lock方法为入口讲解nonfairTryAcquire 方法addWaiter方法线程B线程CacquireQueued 方法B节点C节点unlockcancelAcquire 方法总结AQS 基础概念 AQS 全称&#xff1…

【树莓派】了解wiringPi库、控制继电器

目录一、wiringPi库二、继电器1、继电器介绍及接线说明2、树莓派控制继电器一、wiringPi库 wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程等。 在树莓派命令行输入gpio -…

供应商管理软件有哪些特点和优势?

在这个快节奏的商业环境中,企业常常需要同时处理多个供应商。手动处理所有这些流程会有不少困难,为了克服这个问题,供应商管理软件是市场上可用的最佳解决方案。 好用的供应商管理软件,比如广受客户好评的8Manage SRM&#xff0c…

Spring 长事务导致connection closed,又熬了一个大夜!

大家好,我是不才陈某~ 是的,今早一到公司就收到了机器人的告警,从异常日志来看是数据库连接已关闭,然后我在解决这个问题的过程中发现了几个问题,不急,听我一一道来 异常被try后没有继续抛出,导…

CN_广域网WAN@PPP协议

文章目录WAN和LANPPP协议PPP协议有三个组成部分:LCPNCP成帧方法PPP帧的格式信息部分范围工作过程PPP协议特点透明传输WAN&InternetWAN和LAN WAN:广域网(全写为 wide area network) 广 域 网局 域 网覆盖范围很广,通常跨区域较小,通常在一个区域内连…

Ubuntu内核OverlayFS权限逃逸漏洞(CVE-2021-3493)

文章目录前言关于linux kernel一、漏洞介绍二、漏洞原理三、漏洞影响版本四、漏洞复现五、修复方法前言 关于linux kernel Linux Kernel 一般指Linux内核。Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。 一、漏洞介绍 …

如何掌握HEC-RAS建模方法与涉河建设项目防洪评价报告编制

随着社会经济的快速发展,我国河道周边土地开发利用率不断增大,临河建筑物与日俱增,部分河道侵占严重,导致防洪压力增大。迫切需要对全国从事防洪评价咨询类的技术人员开展防洪评价技术方面的学习,为了让相关工程技术人…

深度学习-支持向量机(SVM)

1. 简介 在机器学习领域,支持向量机SVM(Support Vector Machine)是一个有监督的学习模型,通常用来进行模式识别、分类(异常值检测)以及回归分析。SVM算法中,我们将数据绘制在n维空间中(n代表数据的特征数),…

C++ 函数指针探幽

首先看下面两个声明代表什么意思? double* (*(*pf)[2])(double*,int); double* (*pa[2])(double*,int);要搞清楚这两个式子,则先要清楚 指向指针的指针指针数组与指向数组的指针函数指针 指向指针的指针 指针的指针特殊点在于指向的是一个指针而已&am…

栈与队列2:用队列实现栈

主要是我自己刷题的一些记录过程。如果有错可以指出哦,大家一起进步。 转载代码随想录 原文链接: 代码随想录 leetcode链接:344. 反转字符串 题目: 请你仅使用两个队列实现一个后入先出(LIFO)的栈&#x…

计量经济学复习

计量经济学 习题(史浩江版) 习题一 一. 单项选择题 1、横截面数据是指(A)。 A 同一时点上不同统计单位相同统计指标组成的数据 B 同一时点上相同统计单位相同统计指标组成的数据 C 同一时点上相同统计单位不同统计指标组成的…

GPT-Chinese 复现

github 环境准备 conda -create gpt_cn python3.7 conda activate gpt_cnconda install pytorch1.10.0 torchvision0.11.0 torchaudio0.10.0 -c pytorch pip install -r requirements.txt错误 module distutils has no attribute version解决方案: pip uninstal…

[附源码]计算机毕业设计基于Springboot游戏交易平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MinIO实战

1.简介 MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。 2.部署 2.1单机器单节点(docker) 官网教程:https://min.io/docs/minio/container/index.html mkdir -p ~/minio/dat…

Node.js编程

Node.js编程 一、实验目的与要求 实验任务 用户信息增删改查 掌握数据库软件的安装了解集合、文档的概念掌握使用mongoose创建集合的方法创建集合掌握对数据库中的数据进行增删改查操作 二、实验任务和步骤 实验1. 用户信息增删改查 需求说明 (1)搭建网站服务器&#xf…

第十章 降维与度量学习

10.1 k近邻学习 k近邻学习(kNN)是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个邻居的信息来进行预测。 k近邻学习似乎与…

2022 计网复习计算题【太原理工大学】

期末复习汇总,点这里!https://blog.csdn.net/m0_52861684/category_12095266.html?spm1001.2014.3001.5482 三、计算题 1. 假定 1km 长的 CSMA/CD 网络的数据率为 1Gb/s,设信号在网络上的传播速率为 200000km/s。求能够使用此协议的最短帧长…

java swing(GUI) MySQL实现的学生选课成绩管理系统源码+运行教程

今天给大家演示一下由Java swing mysql实现的一款学生选课成绩信息管理系统,主要实现的功能有:学生教师信息管理、年级班级信息管理、课程信息管理、选课、成绩录入功能、成绩统计功能,实现学生、教师、管理员三个角色的登录,三个…

【计算机图形学入门】笔记1:图形学概述

前言:今天开始开启一个新篇章的学习,那就是games101闫令琪老师讲的《现代计算机图形学入门》课程,我会根据闫老师每节课讲的内容记录重点笔记,每节课都会整理一篇发布出来,希望自己可以坚持下去,从图形学小…