FastDFS 单机版安装

FastDFS 单机版安装

一、理论基础

FastDFS比较适合以中小文件为载体的在线服务,比如跟NGINX(APACHE)配合搭建图片服务器。
分布式文件系统FastDFS
FastDFS是纯C语言实现,只支持Linux、FreeBSD等UNIX系统。
FastDFS的两个核心概念分别是:Tracker(跟踪器)、Storage(存储节点)
跟踪器Tracker主要做调度工作,相当于mvc中的controller的角色,在访问上起负载均衡的作用。跟踪器和存储节点都可以由一台或多台服务器构成,跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务,其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。
跟踪器Tracker负责管理所有的Storage和group,每个Storage在启动后会连接Tracker,
告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,
建立group==>[storage server list]的映射表,Tracker需要管理的元信息很少,会全部存储在内存中;另外tracker上的元信息都是由storage汇报的信息生成的,本身不需要持久化任何数据,这样使得tracker非常容易扩展,直接增加tracker机器即可扩展为tracker cluster来服务,cluster里每个tracker之间是完全对等的,所有的tracker都接受stroage的心跳信息,生成元数据信息来提供读写服务。
存储节点Storage采用了分卷[Volume](或分组[group])的组织方式,存储系统由一个或多个组组成,组与组之间的文件是相互独立的,所有组的文件容量累加就是整个存储系统中的文件容量。
一个卷[Volume](组[group])可以由一台或多台存储服务器组成,一个组中的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。

二、安装环境
操作系统版本: CentOS release 6.5

提前安装相关操作系统包

yum install unzip zip gcc-c++

创建一个文件夹/opt/dfspackages/,用来保存相关软件

源码地址首页:

源码作者:资深架构师 余庆

公共函数库:libfastcommon-master.zip
下载地址:
 
主程序:fastdfs-5.10.tar.gz
下载地址:
 
NGINX与DFS链接模块: fastdfs-nginx-module_v1.16.tar.gz
 

下载完之后通过WinScp,SECURET 等工具直接传送到服务器

接下来FastDFS的安装过程步骤如下:
三、安置步骤

3.1 libfastcommon包安装
FastDFS 将以前版本的公共的一些函数单独封装成了libfastcommon包,所以在安装FastDFS之前我们还必须安装libfastcommon。

3.1.1 解压缩
unzip libfastcommon-master.zip
执行编译步骤:./make.sh

执行安装步骤:./make.sh install

libfastcommon.so 默认安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,
所以此处需要重新设置软链接(类似于Windows的快捷方式):
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

3.2 FastDFS 安装
unzip fastdfs-master.zip
cd fastdfs-master
./make.sh
./mae.sh install

cd /etc/fdfs/
ll -lh

对三个配置文件进行拷贝,后面有用
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

3.3Tracker 安装
创建Tracker服务器的文件路径,即用于存储Tracker的数据文件和日志文件等:
mkdir /opt/fastdfs_tracker

编辑上/etc/fdfs/tracker.conf 配置文件,打开文件后依次做以下修改:
vim /etc/fdfs/tracker.conf

启用配置文件(默认false)

disabled=false

#设置tracker的端口号,通常采用22122这个默认端口
port=22122

设置tracker的数据文件和日志目录

base_path=/opt/fastdfs_tracker

设置http端口号,初始值为8080

http.server_port=6666

为启动脚本创建软引用,因为fdfs_trackerd等命令在/usr/local/bin中并没有,而是在/usr/bin路径下:
ln -s /usr/bin/fdfs_trackerd /usr/local/bin

ln -s /usr/bin/stop.sh /usr/local/bin

ln -s /usr/bin/restart.sh /usr/local/bin

最后通过命令启动Tracker服务器:
service fdfs_trackerd start

如果启动命令执行成功,那么同时在刚才创建的tracker文件目录/opt/fastdfs_tracker中就可以看到启动后新生成的data和logs目录,tracker服务的端口也应当被正常监听,最后再通过netstat命令查看一下端口监听情况:
netstat -unltp|grep fdfs

服务运行的22122端口正常

3.4 Storage安装

创建Storage服务器的文件目录,注意同Tracker相比要多建一个目录,因为Storage还需要一个文件存储路径,用于存放接收的文件:
mkdir /opt/fastdfs_storage
mkdir /opt/fastdfs_storage_data

接下来修改/etc/fdfs/storage.conf配置文件,打开文件后依次做以下修改:

设置storage端口号,默认是23000,同一个组的storage端口号必须一致

port=23000

设置storage数据文件和日志目录

base_path=/opt/fastdfs_storage

实际文件存储路径

store_path0=/opt/fastdfs_storage_data

存储路径个数,需要和store_path个数匹配

store_path_count=1

tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功

tracker_server=117.27.1.11 :22122

设置 http 端口号

http.server_port=8888

配置完成后同样要为Storage服务器的启动脚本设置软引用:
ln -s /usr/bin/fdfs_storaged /usr/local/bin

接下来就可以启动Storage服务了:
service fdfs_storaged start

验证成功启动的方法:

netstat -unltp|grep fdfs
查看是否有23000,22122,两个端口在
成功的话,/opt/fastdfs_storage/data目录下生成好的文件夹,data下有256个1级目录,每级目录下又有256个2级子目录,总共65536个文件夹。
新写的文件会以hash的方式被路由到其中某个子目录下,然后将文件数据直接作为一个本地文件存储到该目录中。那么最后我们再看一下storage服务的端口监听情况:

查看:storage服务器是否已经登记到 tracker服务器,运行以下命令:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

看到117.27.1.11 ACTIVE 字样即可说明storage服务器已经成功登记到了tracker服务器
至此我们就已经完成了fastdfs的全部配置,此时也就可以用客户端工具进行文件上传下载的测试了。
3.5初步 测试
从下载测试代码
本次测试从本地F盘传1.JPG
配置fdfs_client.conf文件
tracker_server = 117.27.1.11:22122
运行Test.java
上传到group1/M00/00/00/dRuYfFjwefOAaADcAAjuDOhJdt4482.jpg
对应服务器上的位置:/opt/fastdfs_storage_data/data/00/00

这个是服务器上面的显示位置

3.6 fastdfs-nginx-module
FastDFS目前已不支持http协议
余大提供了nginx上使用FastDFS的模块fastdfs-nginx-module,
这样做最大的好处就是提供了HTTP服务并且解决了group中storage服务器的同步延迟问题,
安nginx模块依赖lib库
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel

前提要先安装好nginx等
接下来就具体记录一下fastdfs-nginx-module的安装配置过程
代码下载地址:
进入源码nginx安装文件夹
解压成功后就可以编译安装nginx了,进入nginx目录并输入以下命令进行配置:
./configure –prefix=/usr/local/nginx –add-module=/opt/dfspackages/fastdfs-nginx-module-master/src
make
make install

或则是全新安装NGINX
./configure –prefix=/opt/dfsNginx –user=nginx –group=nginx –with-http_ssl_module –with-http_flv_module –with-http_gzip_static_module –with-http_stub_status_module –add-module=/opt/dfspackages/fastdfs-nginx-module-master/src –http-client-body-temp-path=/var/tmp/nginx/proxy –http-fastcgi-temp-path=/var/tmp/nginx/fcgi
make && make install
groupadd -f nginx
useradd -g nginx nginx

配置nginx.conf文件,加入server{ }中
listen 9999;

location ~/group1/M00 {
root /opt/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
cp /opt/dfspackages/fastdfs-master/conf/http.conf /etc/fdfs/
cp /opt/dfspackages/fastdfs-master/conf/mime.types /etc/fdfs/
cp /opt/dfspackages/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

编辑mod_fastdfs.conf文件,vim /etc/fdfs/mod_fastdfs.conf:

保存日志目录

base_path=/opt/fastdfs_storage

tracker服务器的IP地址以及端口号

tracker_server=192.168.111.11:22122

storage服务器的端口号

storage_server_port=23000

文件 url 中是否有 group 名

url_have_group_name = true

存储路径

store_path0=/opt/fastdfs_storage_data

设置组的个数,事实上这次只使用了group1

group_count = 3

设置了group_count = 3,接下来就需要在文件尾部追加这3个group setting:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data

接下来还需要建立 M00 至存储目录的符号连接:
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/00

最后启动nginx:
/usr/local/nginx/sbin/nginx

浏览器也可以看到nginx的主页

Read more

前端防范 XSS(跨站脚本攻击)

目录 一、防范措施 1.layui util  核心转义的特殊字符 示例 2.js-xss.js库 安装 1. Node.js 环境(npm/yarn) 2. 浏览器环境 核心 API 基础使用 1. 基础过滤(默认规则) 2. 自定义过滤规则 (1)允许特定标签 (2)允许特定属性 (3)自定义标签处理 (4)自定义属性处理 (5)转义特定字符 常见场景示例 1. 过滤用户输入的评论内容 2. 允许特定富文本标签(如富文本编辑器内容) 注意事项 更多配置 XSS(跨站脚本攻击)是一种常见的网络攻击手段,它允许攻击者将恶意脚本注入到其他用户的浏览器中。

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

详细教程:如何从前端查看调用接口、传参及返回结果(附带图片案例)

目录 1. 打开浏览器开发者工具 2. 使用 Network 面板 3. 查看具体的API请求 a. Headers b. Payload c. Response d. Preview e. Timing 4. 实际操作步骤 5. 常见问题及解决方法 a. 无法看到API请求 b. 请求失败 c. 跨域问题(CORS) 作为一名后端工程师,理解前端如何调用接口、传递参数以及接收返回值是非常重要的。下面将详细介绍如何通过浏览器开发者工具(F12)查看和分析这些信息,并附带图片案例帮助你更好地理解。 1. 打开浏览器开发者工具 按下 F12 或右键点击页面选择“检查”可以打开浏览器的开发者工具。常用的浏览器如Chrome、Firefox等都内置了开发者工具。下面是我选择我的一篇文章,打开开发者工具进行演示。 2. 使用

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例)

Cursor+Codex隐藏技巧:用截图秒修前端Bug的保姆级教程(React/Chakra UI案例) 前端开发中最令人头疼的莫过于那些难以定位的UI问题——元素错位、样式冲突、响应式失效...传统调试方式往往需要反复修改代码、刷新页面、检查元素。现在,通过Cursor编辑器集成的Codex功能,你可以直接用截图交互快速定位和修复这些问题。本文将带你从零开始,掌握这套革命性的调试工作流。 1. 环境准备与基础配置 在开始之前,确保你已经具备以下环境: * Cursor编辑器最新版(v2.5+) * Node.js 18.x及以上版本 * React 18项目(本文以Chakra UI 2.x为例) 首先在Cursor中安装Codex插件: 1. 点击左侧扩展图标 2. 搜索"Codex"并安装 3. 登录你的OpenAI账户(需要ChatGPT Plus订阅) 关键配置项: // 在项目根目录创建.