Centos7配置fastdfs和nginx分布式文件存储系统实现过程解析

1、安装libfastcommon-1.0.43,安装包可以在大佬的https://github.com/happyfish100/libfastcommon/releases下载

[root@localhost Downloads]# tar -zxvf libfastcommon-1.0.43.tar.gz

# 解压后进入目录进行编译并安装
[root@localhost libfastcommon-1.0.43]#cd libfastcommon-1.0.43
[root@localhost libfastcommon-1.0.43]#make
[root@localhost libfastcommon-1.0.43]#make install

注意:libfastcommon安装好后会在/usr/lib64 目录下生成 libfastcommon.so 库文件;由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下

cp /usr/lib64/libfastcommon.so /usr/lib

2、安装fastdfs,安装包可以在大佬的https://github.com/happyfish100/fastdfs/releases下载

#解压到当前目录
tar -zxvf fastdfs-6.06.tar.gz

# 进入到目录进行编译与安装
make.sh
make.sh install

安装成功后,将/conf下的文件复制到/etc/fdfs中

[root@localhost conf]# ll
total 92
-rw-rw-r--. 1 root root 23981 Dec 31 07:36 anti-steal.jpg
-rw-rw-r--. 1 root root 1909 Dec 31 07:36 client.conf
-rw-rw-r--. 1 root root 965 Dec 31 07:36 http.conf
-rw-rw-r--. 1 root root 31172 Dec 31 07:36 mime.types
-rw-rw-r--. 1 root root 10246 Dec 31 07:36 storage.conf
-rw-rw-r--. 1 root root 620 Dec 31 07:36 storage_ids.conf
-rw-rw-r--. 1 root root 9138 Dec 31 07:36 tracker.conf
[root@localhost conf]# cd ..
[root@localhost fastdfs-6.06]# cp /conf/* /etc/fdfs
[root@localhost fastdfs-6.06]# ll /etc/fdfs
total 128
-rw-r--r--. 1 root root 23981 Jun 21 02:16 anti-steal.jpg
-rw-r--r--. 1 root root 1904 Jun 21 02:24 client.conf
-rw-r--r--. 1 root root 1909 Jun 21 02:15 client.conf.sample
-rw-r--r--. 1 root root 965 Jun 21 02:54 http.conf
-rw-r--r--. 1 root root 31172 Jun 21 02:54 mime.types
-rw-r--r--. 1 root root 3738 Jun 21 02:41 mod_fastdfs.conf
-rw-r--r--. 1 root root 10238 Jun 21 02:23 storage.conf
-rw-r--r--. 1 root root 10246 Jun 21 02:15 storage.conf.sample
-rw-r--r--. 1 root root 620 Jun 21 02:16 storage_ids.conf
-rw-r--r--. 1 root root 620 Jun 21 02:15 storage_ids.conf.sample
-rw-r--r--. 1 root root 9129 Jun 21 02:18 tracker.conf
-rw-r--r--. 1 root root 9138 Jun 21 02:15 tracker.conf.sample
[root@localhost fastdfs-6.06]#

3、配置和启动tracker

# 进入/etc/fdfs目录中
cd /etc/fdfs

# 拷贝一份新的tracker配置文件
cp tracker.conf.sample tracker.conf

#修改tracker.conf ; vim tracker.conf
# /home/fastdfs用于存放tracker的data和log
base_path=/home/yuqing/fastdfs 改为: base_path=/home/fastdfs
http.server_port 改为: 80

# 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

4、配置和启动storage

# 进入/etc/fdfs目录中
cd /etc/fdfs

# 拷贝一份新的tracker配置文件
cp storage.conf.sample storage.conf

# 修改storage.conf ; vim storage.conf
group_name=group1 #配置组名
base_path=/home/yuqing/fastdfs 改为: base_path=/home/fastdfs

#store存放文件的位置(store_path)
store_path0=/home/yuqing/fastdfs 改为: store_path0=/home/fdfs_storage
#如果有多个挂载磁盘则定义多个store_path,如下
#store_path1=.....
#store_path2=......

#配置tracker服务器:IP
tracker_server=192.168.172.20:22122
#如果有多个则配置多个tracker
#tracker_server=192.168.101.4:22122

#配置http端口,使用默认端口
http.server_port=8888

#启动storage, 运行命令如下:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

#启动完成后进入 /home/fdfs_storage/data 目录下,显示目录如下
[root@localhost home]# cd fdfs_storage/
[root@localhost fdfs_storage]# ls
data
[root@localhost fdfs_storage]# cd data/
[root@localhost data]# ls
00 0A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0 AA B4 BE C8 D2 DC E6 F0 FA
01 0B 15 1F 29 33 3D 47 51 5B 65 6F 79 83 8D 97 A1 AB B5 BF C9 D3 DD E7 F1 FB
02 0C 16 20 2A 34 3E 48 52 5C 66 70 7A 84 8E 98 A2 AC B6 C0 CA D4 DE E8 F2 FC
03 0D 17 21 2B 35 3F 49 53 5D 67 71 7B 85 8F 99 A3 AD B7 C1 CB D5 DF E9 F3 FD
04 0E 18 22 2C 36 40 4A 54 5E 68 72 7C 86 90 9A A4 AE B8 C2 CC D6 E0 EA F4 FE
05 0F 19 23 2D 37 41 4B 55 5F 69 73 7D 87 91 9B A5 AF B9 C3 CD D7 E1 EB F5 FF
06 10 1A 24 2E 38 42 4C 56 60 6A 74 7E 88 92 9C A6 B0 BA C4 CE D8 E2 EC F6
07 11 1B 25 2F 39 43 4D 57 61 6B 75 7F 89 93 9D A7 B1 BB C5 CF D9 E3 ED F7
08 12 1C 26 30 3A 44 4E 58 62 6C 76 80 8A 94 9E A8 B2 BC C6 D0 DA E4 EE F8
09 13 1D 27 31 3B 45 4F 59 63 6D 77 81 8B 95 9F A9 B3 BD C7 D1 DB E5 EF F9
[root@localhost data]#

5、使用fastdfs自带工具测试上传文件

# 切换目录到 /etc/fdfs/ 目录下
cd /etc/fdfs

# 拷贝一份新的client配置文件
cp client.conf.sample client.conf

# 修改client.conf ; vim client.conf
base_path = /home/fastdfs
tracker_server = 192.168.52.133:22122
#tracker_server = 192.168.0.197:22122

#进行上传文件的测试,运行如下:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload wyc01.jpg

#结果:
[youth@localhost Pictures]$ /usr/bin/fdfs_test /etc/fdfs/client.conf upload wyc01.jpg
This is FastDFS client test program v6.06

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.

[2020-06-21 03:54:35] DEBUG - base_path=/home/fastdfs, connect_timeout=5, 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.52.133, port=23000

group_name=group1, ip_addr=192.168.52.133, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg
source ip address: 192.168.52.133
file timestamp=2020-06-21 03:54:36
file size=17215
file crc32=2857771105
example file url: http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814_big.jpg
source ip address: 192.168.52.133
file timestamp=2020-06-21 03:54:36
file size=17215
file crc32=2857771105
example file url: http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814_big.jpg
[youth@localhost Pictures]$

注意:http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg就是刚才上传图片的链接,但是现在没有整合nginx,所以无法通过http访问

6、fastdfs和nginx整合

①安装fastdfs-nginx-module,安装包可以在大佬的https://github.com/happyfish100/fastdfs-nginx-module/releases下载

#解压
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

# 进入到目录里修改conf配置
cd /usr/local/fastdfs-nginx-module/src/

vim conf

 HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
 NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
 # 只修改这里,把local删除
 CORE_INCS="$CORE_INCS /usr/include"
 CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
 CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

②将fastdfs-nginx-module/src下的mod_fastdfs.conf拷贝至/etc/fdfs/下

  cp mod_fastdfs.conf /etc/fdfs/

 ③并修改 /etc/fdfs/mod_fastdfs.conf 的内容;vi /etc/fdfs/mod_fastdfs.conf

base_path=/home/fastdfs
tracker_server=192.168.172.20:22122
#tracker_server=192.168.172.20:22122 #(多个tracker配置多行)
url_have_group_name=true #url中包含group名称
store_path0=/home/fdfs_storage #指定文件存储路径(上面配置的store路径)

7、安装nginx

# nginx官网上有安装包,可以直接下载
# 解压
tar -zxvf nginx-1.8.0.tar.gz

# 进入目录,配置命令
# --prefix是nginx的安装路径
# --add-module是fastdfs-nginx-module解压后的文件路径
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src# 编译并安装
make && make install# 复制nginx-1.19.0/conf配置文件夹(解压后的nginx)里面的两个文件到/etc/fdfs
cp http.conf mime.types /etc/fdfs/

注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录;我指定了pid-path,所以也要在/var/run文件夹下创建一个nginx,然后在nginx文件夹下创建一个nginx.pid,否则启动nginx时会报错nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory),还是建议不指定了,这个坑太深了

8、修改nginx配置文件

server {
  listen  80;
  #server_name localhost;
  server_name 192.168.52.133;

  #charset koi8-r;

  #access_log logs/host.access.log main;

  location ~/group([1~9])/M00/{
   root /home/fdsf_storage/data;
   ngx_fastdfs_module;
  }

  location / {
   root html;
   index index.html index.htm;
  }

9、启动nginx,因为nginx默认是80端口,确保80端口没有被占用,如果占用就kill掉;确保防火墙firewall允许外部设备访问服务器

/use/local/nginx/sbin/nginx

[root@localhost fdfs]# ps -ef | grep nginx
root 7466 1 0 03:12 ? 00:00:00 nginx: master process nginx
nobody 7590 7466 0 03:21 ? 00:00:00 nginx: worker process
root 8514 2806 0 04:17 pts/0 00:00:00 grep --color=auto nginx
[root@localhost fdfs]#

10、通过外部设备访问fastdfs文件系统的图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 基于CentOS的Hadoop分布式环境的搭建开发

    首先,要说明的一点的是,我不想重复发明轮子.如果想要搭建Hadoop环境,网上有很多详细的步骤和命令代码,我不想再重复记录. 其次,我要说的是我也是新手,对于Hadoop也不是很熟悉.但是就是想实际搭建好环境,看看他的庐山真面目,还好,还好,最好看到了.当运行wordcount词频统计的时候,实在是感叹hadoop已经把分布式做的如此之好,即使没有分布式相关经验的人,也只需要做一些配置即可运行分布式集群环境. 好了,言归真传. 在搭建Hadoop环境中你要知道的一些事儿: 1.hadoop运行于

  • CentOS 7使用samba共享文件夹的完整步骤

    前言 Samba是在Linux系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成. SMB(Server Messages Block, 信息服务块)是一种在局域网上共享文件和打印机的一种通信协议, 它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务. SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统,打印机及其他资源. 比如我想共享/home/samba这个文件夹给其他计算机使用. 安装samba yum install -y samba 创

  • 在centos7中分布式部署pyspider

    1.搭建环境: 系统版本:Linux centos-linux.shared 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux python版本:Python 3.5.1 1.1.搭建python3环境: 本人在尝试过后选择集成环境Anaconda 1.1.1.编译 # 下载依赖 yum install -y ncurses-devel openssl openssl-

  • CentOS 7中搭建NFS文件共享存储服务的完整步骤

    前言 NFS(Network File System)意为网络文件系统,它最大的功能就是可以通过网络,让不同的机器不同的操作系统可以共享彼此的文件.简单的讲就是可以挂载远程主机的共享目录到本地,就像操作本地磁盘一样,非常方便的操作远程文件. 本文将给大家讲解如何在CentOS7上安装和配置NFS服务器. 下面话不多说了,来一起看看详细的介绍吧 准备 我们需要两台CentOS7机器,我们用虚拟机做测试,分别做NFS服务器和客户端,配置如下: NFS服务器ip:192.168.11.31. 客户端i

  • 浅析CentOS8虚拟机访问Windows10主机文件夹方法

    安装VMware Tools后,①文本在虚拟机主机之间可以相互复制粘贴, ②虚拟机文件可复制到主机,但 → 主机文件无法复制到虚拟机.可通过以下方法,从终端直接访问主机文件夹. 1.虚拟机>设置>选项>共享文件夹 点选 "总是启用" "文件夹">添加>下一步>浏览[主机路径]>下一步 启用此共享>完成>确定 2.终端输入 vmware-hgfsclient 显示刚刚添加的主机文件夹名. 3.终端输入 /bin/v

  • Centos7 移动mysql5.7.19 数据存储位置的操作方法

    场景:随着数据量的增加,mysql所在的磁盘已占满,需要将data移动到空间较大的盘上. 方法: 1. 关闭mysql服务 service mysqld stop 2. 将data目录移动到空间较大的盘上 cp -a /usr/local/mysql/data/ /home/mysqldata/ -a :相当于 -pdr 的意思(参数pdr分别为:保留权限,复制软链接本身,递归复制): 3 . 修改配置文件my.cnf ... sql_mode=NO_ENGINE_SUBSTITUTION,ST

  • CentOS7将Nginx添加系统服务的方法步骤

    导语 经过编译安装以及解决问题,Nginx 已经运行正常,但是此时 Nginx 并没有添加进系统服务.接下来会将 Nginx 添加进系统服务并且设置开机启动. 查看服务 首先查看 Nginx 的服务状态,输入 systemctl status nginx,结果如下 没有找到相关的服务,下一步就是添加系统服务. 添加系统服务 在 /usr/lib/systemd/system 目录中添加 nginx.service,根据实际情况进行修改,详细解析可查看下方参考资料中的文章.内容如下 [Unit]

  • centos8 安装 nginx的详细教程(图文)

    Nginx发音为" engine x",是一种开源的高性能HTTP和反向代理服务器,负责处理Internet上一些最大站点的负载.它可用作HTTP和非HTTP服务器的独立Web服务器,负载平衡器,内容缓存和反向代理. 与Apache相比,Nginx可以处理大量并发连接,并且每个连接的内存占用量较小. 本教程说明了如何在CentOS 8上安装Nginx.  NGINX官网 http://nginx.org/ 创建文件夹mkdir nginx 进入创建的文件夹 根据自己需要下载合适版本 通

  • Centos7配置fastdfs和nginx分布式文件存储系统实现过程解析

    1.安装libfastcommon-1.0.43,安装包可以在大佬的https://github.com/happyfish100/libfastcommon/releases下载 [root@localhost Downloads]# tar -zxvf libfastcommon-1.0.43.tar.gz # 解压后进入目录进行编译并安装 [root@localhost libfastcommon-1.0.43]#cd libfastcommon-1.0.43 [root@localhos

  • java实现上传文件类型检测过程解析

    这篇文章主要介绍了java实现上传文件类型检测过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在进行文件上传时,特别是向普通用户开放文件上传功能时,需要对上传文件的格式进行控制,以防止黑客将病毒脚本上传.单纯的将文件名的类型进行截取的方式非常容易遭到破解,上传者只需要将病毒改换文件名便可以完成上传. 可以读取文件的十六进制的文件头,来判断文件真正的格式. 读取文件的二进制数据并将其转换为十六进制时,同类型文件的文件头数据是相同的,即使改

  • 生产环境之Nginx高可用方案实现过程解析

    准备工作: 192.168.16.128 192.168.16.129 两台虚拟机.安装好Nginx 安装Nginx 更新yum源文件: rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7

  • nginx处理http请求实现过程解析

    nginx首先决定要用配置文件里的哪个server{}块来处理,假设有下面的server{}配置 server { listen 80; server_name aaa; ... } server { listen 80; server_name bbb; ... } nginx会根据过来的http请求头里的Host字段里的值,来判断使用哪个server{}. 如果请求头里没有Host字段,或者Host字段里的值,和Nginx配置文件里的server{}里的{server_name}都不匹配,则

  • 简单操作实现Java jsp servlet文件上传过程解析

    实现文件上传的方式 1.进入http://commons.apache.org/proper/commons-fileupload/using.html 2.点击用户指南 3.对着用户指南一步步复制粘贴,并把代码撸成自己想要的样子 补充:记得要将commons-io-2.4.jar和commons-fileupload-1.2.2.jar这两个包放到编译器里面 现成的代码 JSP 前端页面 <%-- Created by IntelliJ IDEA. User: Administrator Da

  • Java IO流和文件操作实现过程解析

    Java.io 包几乎包含了所有操作输入.输出需要的类.所有这些流类代表了输入源和输出目标. Java.io 包中的流支持很多种格式,比如:基本类型.对象.本地化字符集等等. 一个流可以理解为一个数据的序列.输入流表示从一个源读取数据,输出流表示向一个目标写数据. Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中. 控制台输入 BufferedReader br = new BufferedReader(new InputStreamReader(Syste

  • java浏览器文件打包下载过程解析

    最近,在项目中遇到了需要将一系列的图片打包下载的需求,借鉴了网上的一些通用方法,就顺便分享出来实现的方法,不太记得借鉴的是哪位兄弟的博客了,总之万分感谢,进入正题,实现打包下载的基本功能: 1.controller层代码: /** * 图片压缩打包 */ @RequestMapping(value = "/zipFile") public void compressionFile(HttpServletRequest request, HttpServletResponse respo

  • Python3操作读写CSV文件使用包过程解析

    CSV(Comma-Separated Values)即逗号分隔值,一种以逗号分隔按行存储的文本文件,所有的值都表现为字符串类型(注意:数字为字符串类型). 如果CSV中有中文,应以utf-8编码读写,如果要支持Excel查看,应是要用utf-8 with bom格式及utf-8-sig Python3操作CSV文件使用自带的csv包 reader=csv.reader(f, delimiter=','):用来读取数据,reader为生成器,每次读取一行,每行数据为列表格式,可以通过delimi

  • 用nginx+FastDFS一步步搭建文件管理系统

    一.FastDFS介绍 FastDFS开源地址:https://github.com/happyfish100 参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 个人封装的FastDFS Java API:https://github.com/bojiangzhou/lyyzoo-fastdfs-java 1.简介 FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.主要解决了海量数据存

  • FastDFS分布式文件系统环境搭建及安装过程解析

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

随机推荐