前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Centos搭建FASTDFS+NGINX

Centos搭建FASTDFS+NGINX

作者头像
互联网-小阿宇
发布2022-11-21 18:40:32
3750
发布2022-11-21 18:40:32
举报
文章被收录于专栏:互联网-小阿宇

🎈 作者:互联网-小啊宇 🎈 简介: CSDN 运维领域创作者。目前从事 Kubernetes运维相关工作,擅长Linux系统运维、开源监控软件维护、Kubernetes容器技术、CI/CD持续集成、自动化运维、开源软件部署维护等领域。 🎈 博客首页:互联网-小啊宇

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

  • 简介

FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。 存储节点存储文件,完成文件管理的所有功能:就是这样的存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。 跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。 为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。 在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。 当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。 FastDFS中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

  • 上传交互过程
  1. client询问tracker上传到的storage,不需要附加参数;
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件上传。
  • 下载交互过程
  1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
  2. tracker返回一台可用的storage;
  3. client直接和storage通讯完成文件下载。 需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

单节点安装FASTDFS+NGINX

环境准备

IP

版本

服务

192.168.1.10

CentOS Linux release 7.6.1810 (Core)

NGINX、FASTDFS

我这个是最小化安装的所以需要安装一些命令 方便后面操作
代码语言:javascript
复制
yum -y install net-tools vim wget git make cmake gcc gcc-c++

①libfastcommon下载安装

代码语言:javascript
复制
git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
./make.sh
./make.sh install

②fastdfs下载安装

代码语言:javascript
复制
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install
cd conf
cp http.conf anti-steal.jpg mime.types /etc/fdfs/

③修改配置文件

创建目录:
代码语言:javascript
复制
mkdir -p /var/lib/fast-dfs/tracker
mkdir -p /var/lib/fast-dfs/storage
mkdir -p /var/lib/fast-dfs/client
mkdir -p /var/lib/fast-dfs/nginx-module
创建配置文件:
代码语言:javascript
复制
cd /etc/fdfs/
cp tracker.conf.sample /etc/fdfs/tracker.conf
cp storage.conf.sample /etc/fdfs/storage.conf
cp client.conf.sample /etc/fdfs/client.conf
修改tracker进程的配置文件/etc/fdfs/tracker.conf:
代码语言:javascript
复制
将:
base_path=/home/yuqing/fastdfs
改为:
base_path=/var/lib/fast-dfs/tracker #用于存放日志。
修改storage进程的配置文件/etc/fdfs/storage.conf:
代码语言:javascript
复制
将:
base_path=/home/yuqing/fastdfs
改为:
base_path=/var/lib/fast-dfs/storage #用于存放日志

将:
store_path0=/home/yuqing/fastdfs
改为:
store_path0=/var/lib/fast-dfs/storage #存放数据,若不设置默认为前面那个。

将:
tracker_server=192.168.209.121:22122
改为:
tracker_server=192.168.1.10:22122 #指定tracker服务器地址。

#端口根据自己需要更改  后面需要配置nginx代理 端口要与这里一致
将:
http.server_port = 8888
改为
http.server_port = 80
修改client进程的配置文件/etc/fdfs/client.conf:
代码语言:javascript
复制
将:
base_path=/home/yuqing/fastdfs
改为:
base_path=/var/lib/fast-dfs/client #用于存放日志

将:
tracker_server=192.168.0.197:22122
改为:
tracker_server=192.168.1.10:22122 #指定tracker服务器地址。

④启动tracker进程:

代码语言:javascript
复制
fdfs_trackerd /etc/fdfs/tracker.conf start
fdfs_trackerd /etc/fdfs/tracker.conf stop
或者
systemctl enable fdfs_trackerd
systemctl stop fdfs_trackerd
systemctl start fdfs_trackerd
systemctl status fdfs_trackerd

启动storage进程:
fdfs_storaged /etc/fdfs/storage.conf start
fdfs_storaged /etc/fdfs/storage.conf stop
或者
systemctl enable fdfs_storaged
systemctl stop fdfs_storaged
systemctl start fdfs_storaged
systemctl status fdfs_storaged
检查进程:
代码语言:javascript
复制
[root@localhost fdfs]# ps -ef | grep fdfs
root      14530      1  0 16:11 ?        00:00:00 fdfs_trackerd /etc/fdfs/tracker.conf start
root      14539      1 37 16:11 ?        00:00:02 fdfs_storaged /etc/fdfs/storage.conf start
测试:
代码语言:javascript
复制
fdfs_monitor /etc/fdfs/storage.conf
fdfs_upload_file /etc/fdfs/client.conf local_filename
fdfs_download_file /etc/fdfs/client.conf remote_filename
fdfs_file_info /etc/fdfs/client.conf remote_filename
代码语言:javascript
复制
#上传一个图片到服务器上
[root@localhost ~]# ls test.jpg 
test.jpg
[root@localhost ~]# fdfs_upload_file /etc/fdfs/client.conf /root/test.jpg 
group1/M00/00/00/wKgBCl-02DCATp8bAABQAuDJvWo009.jpg
#如果有如上返回信息则正确 这个是一会需要访问的地址

⑤安装NGINX

安装fastdfs-nginx-module的依赖包:
代码语言:javascript
复制
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
下载fastdfs-nginx-module、nginx
代码语言:javascript
复制
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
wget http://nginx.org/download/nginx-1.12.0.tar.gz
tar -xzvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
./configure --prefix=/usr/local/nginx-1.12.0 --add-module=PATH/fastdfs-nginx-module/src #(path为fastdfs-nginx-module的存放目录)
make
make install
cp PATH/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
#(path为fastdfs-nginx-module的存放目录)
修改配置文件/usr/local/nginx-1.12.0/conf/nginx.conf:
代码语言:javascript
复制
server {
listen 8888;
server_name localhost;
location ~ /group[0-9]/M00 {
ngx_fastdfs_module;
}
}

A、80 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=80 相对应, 因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。 B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx, 对应的 Nginx 配置为:

代码语言:javascript
复制
 location ~/group([0-9])/M00 {
     ngx_fastdfs_module;
     }

C、如查下载时如发现老报 404,将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。


我的nginx.conf修改如下

代码语言:javascript
复制
#PATH:fastdfs-nginx-module的目录
[root@localhost ~]# cp PATH/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
cp:是否覆盖"/etc/fdfs/mod_fastdfs.conf"? y

vi /etc/fdfs/mod_fastdfs.conf 
修改配置文件/etc/fdfs/mod_fastdfs.conf:
将:
base_path=/tmp
改为:
base_path=/var/lib/fast-dfs/nginx-module

将:
tracker_server=tracker:22122
改为:
tracker_server=192.168.1.10:22122

将:
url_have_group_name = false
改为:
url_have_group_name = true

将:
store_path0=/home/yuqing/fastdfs
改为:
store_path0=/var/lib/fast-dfs/storage
防火墙中打开 Nginx 的 用到的端口

firewall-cmd –permanent –add-port=8888/tcp firewall-cmd –permanent –add-port=8888/udp firewall-cmd –permanent –add-port=22122/tcp firewall-cmd –permanent –add-port=22122/udp firewall-cmd –permanent –add-port=23000/tcp firewall-cmd –permanent –add-port=23000/udp firewall-cmd –reload 简单粗暴

代码语言:javascript
复制
systemctl stop firewalld && systemctl disable firewalld && setenforce 0
启动nginx:

/usr/local/nginx-1.12.0/sbin/nginx

测试:

浏览器访问:http://192.168.1.10

访问图片或者文本: IP+端口/获取的地址

代码语言:javascript
复制
获取的地址:
[root@localhost ~]# fdfs_upload_file /etc/fdfs/client.conf /root/test.jpg 
group1/M00/00/00/wKgBCl-04DiAcOMlAABQAuDJvWo308.jpg
[root@localhost ~]# fdfs_upload_file /etc/fdfs/client.conf /root/test.txt 
group1/M00/00/00/wKgBCl-04dmAfY5HAAAAT-7ueFE693.txt
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单节点安装FASTDFS+NGINX
    • 环境准备
      • ①libfastcommon下载安装
      • ②fastdfs下载安装
      • ③修改配置文件
      • ④启动tracker进程:
      • ⑤安装NGINX
      • 测试:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档