Centos搭建FASTDFS+NGINX

Centos搭建FASTDFS+NGINX

在这里插入图片描述

在这里插入图片描述

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
我这个是最小化安装的所以需要安装一些命令 方便后面操作
yum -y install net-tools vim wget git make cmake gcc gcc-c++

①libfastcommon下载安装

git clone https://github.com/happyfish100/libfastcommon.git
cd libfastcommon
./make.sh
./make.sh install

②fastdfs下载安装

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/

③修改配置文件

创建目录:

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

创建配置文件:

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:

将:
base_path=/home/yuqing/fastdfs
改为:
base_path=/var/lib/fast-dfs/tracker #用于存放日志。

修改storage进程的配置文件/etc/fdfs/storage.conf:

将:
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:

将:
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进程:

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

检查进程:

[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

测试:

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
#上传一个图片到服务器上
[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的依赖包:

yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载fastdfs-nginx-module、nginx

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:

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 配置为:

 location ~/group([0-9])/M00 {
   
     ngx_fastdfs_module;
     }

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


我的nginx.conf修改如下
在这里插入图片描述
在这里插入图片描述

#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
简单粗暴

systemctl stop firewalld && systemctl disable firewalld && setenforce 0

启动nginx:

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

测试:

浏览器访问:http://192.168.1.10

在这里插入图片描述
访问图片或者文本:
IP+端口/获取的地址

获取的地址:
[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

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101935.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java数据库连接池有哪些_常用的数据库连接池

    java数据库连接池有哪些_常用的数据库连接池池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是…

    2022年9月17日
    0
  • jsp文件开头<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 > 有什么用

    jsp文件开头<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 > 有什么用http://www.w3.org/TR/html4/loose.dtd”> 声明位于文档中的最前面的位置,处于  标签之前。DOCTYPE是DocumentType(文档类型)的简写,此标签用来告知浏览器文档使用哪种 HTML 或 XHTML 规范。Eg:

    2022年7月14日
    29
  • SSM框架——Spring+SpringMVC+Mybatis的搭建教程

    一个简单的SSM框架的搭建过程,简单易学!SSM框架在项目开发中经常使用到,相比于SSH框架,它在仅几年的开发中运用的更加广泛。

    2022年2月25日
    38
  • try catch里面try catch嵌套

    try catch里面try catch嵌套trycatch里能否内嵌trycatch?答案是肯定的。但是等内层trycatch出异常之后是个什么执行顺序呢?看下面代码staticvoidMain(string[]args){try{Console.WriteLine(“———————-外层try——————————“);error

    2022年6月16日
    24
  • spring cloud之 hello world和eurake介绍及eurake使用

    spring cloud之 hello world和eurake介绍及eurake使用一.springcloud之helloworld1.两个微服务,分别是用户和订单,其中用户是微服务提供者,订单是微服务消费者2.首先建一个工程,里面有两个module:prvoider-user和comsumer-ordercomsumer-user配置文件:prvoider-order配置文件:用spring提供的RestTemplate访问rest…

    2022年5月10日
    51
  • ZOJ1100 状压DP +深搜

    ZOJ1100 状压DP +深搜

    2021年12月4日
    45

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号