FastDFS

FastDFS

1.什么是FastDFS

FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。

**Tracker Server:**跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。

**Storage Server:**存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。

**Client:**客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。

在这里插入图片描述

2. FastDFS的存储策略

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。

在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。

3. 文件上传流程

FastDFS向使用者提供基本文件访问接口,比如upload、download、append、delete等,以客户端库的方式提供给用户使用。

Storage Server会定期的向Tracker Server发送自己的存储信息。当Tracker Server Cluster中的Tracker Server不止一个时,各个Tracker之间的关系是对等的,所以客户端上传时可以选择任意一个Tracker。

当Tracker收到客户端上传文件的请求时,会为该文件分配一个可以存储文件的group,当选定了group后就要决定给客户端分配group中的哪一个storage server。当分配好storage server后,客户端向storage发送写文件请求,storage将会为文件分配一个数据存储目录。然后为文件分配一个fileid,最后根据以上的信息生成文件名存储文件
在这里插入图片描述
文件ID: group1/M00/00/00/rBEOeF5SfVeABqdKAADOcMloCIM691.jpg

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包 括:组名,虚拟磁盘路径,数据两级目录,文件名。

  • 组名: 文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存

  • 虚拟磁盘路径: storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00, 如果配置了store_path1则是M01,以此类推

  • 数据两级目录: storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文

  • 文件名: 与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创 建时间戳、文件大小、随机数和文件拓展名等信息。

    在这里插入图片描述

4. 文件同步

写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

5. FastDFS文件下载

客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。
在这里插入图片描述
跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。

6. 安装FastDFS

系统IP地址主机名
CentOS7192.168.88.128master
//安装libfastcommon
[root@master ~]# cd /usr/src/
[root@master src]# ls
debug                       openresty-1.19.3.1         pcre-8.37.tar.gz
kernels                     openresty-1.19.3.1.tar.gz  zlib-1.2.8
libfastcommon-1.0.7.tar.gz  openssl-1.0.1c             zlib-1.2.8.tar.gz
nginx-1.19.7                openssl-1.0.1c.tar.gz
nginx-1.19.7.tar.gz         pcre-8.37
[root@master src]# 
[root@master src]# tar -xf libfastcommon-1.0.7.tar.gz
[root@master src]# cd libfastcommon-1.0.7
[root@master libfastcommon-1.0.7]# ls
HISTORY  INSTALL  libfastcommon.spec  make.sh  README  src
[root@master libfastcommon-1.0.7]# ./make.sh 
[root@master libfastcommon-1.0.7]# ./make.sh install 
[root@master libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommom.so
[root@master libfastcommon-1.0.7]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
[root@master libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
[root@master libfastcommon-1.0.7]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so


//安装fastdfs
[root@master src]# tar xf fastdfs-5.05.tar.gz 
[root@master src]# cd fastdfs-5.05
[root@master fastdfs-5.05]# ls
client  COPYING-3_0.txt  init.d   php_client  stop.sh  tracker
common  fastdfs.spec     INSTALL  README.md   storage
conf    HISTORY          make.sh  restart.sh  test
[root@master fastdfs-5.05]# ./make.sh 
[root@master fastdfs-5.05]# ./make.sh install

//使用查找替换命令进统一修改:%s#/usr/local/bin#/usr/bin
[root@master fastdfs-5.05]# vim /etc/init.d/fdfs_storaged
[root@master fastdfs-5.05]# vim /etc/init.d/fdfs_trackerd

//软链接
[root@master fastdfs-5.05]# ln -s /usr/bin/fdfs_trackerd /usr/local/bin/
[root@master fastdfs-5.05]# ln -s /usr/bin/fdfs_storaged /usr/local/bin/
[root@master fastdfs-5.05]# ln -s /usr/bin/stop.sh /usr/local/bin/
[root@master fastdfs-5.05]# ln -s /usr/bin/restart.sh /usr/local/bin

配置FastDFS追踪器

//配置FastDFS追踪器
[root@master fastdfs-5.05]# cd /etc/fdfs/
[root@master fdfs]# ls
client.conf.sample  storage.conf.sample  tracker.conf.sample
[root@master fdfs]# cp tracker.conf.sample tracker.conf
[root@master fdfs]# vim tracker.conf

# true for disabled
disabled=false   # 配置文件是否不生效,false 为生效

# the tracker server port
port=22122  # 提供服务的端口

# the base path to store data and log files
base_path=/data/fastdfs/group1 # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)

# HTTP port on this tracker server
http.server_port=80 # HTTP 服务端口

//创建数据存放目录
[root@master fdfs]# mkdir -p /data/fastdfs/group1

//配置防火墙规则
[root@master fdfs]# vim /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Fri Jan  7 10:10:31 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [506:50716]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT ##
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Jan  7 10:10:31 2022
[root@master fdfs]# systemctl restart iptables 

//启动tracker
[root@master fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
[root@master fdfs]# ss -antl 
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port         
     LISTEN     0      128            *:22122                      *:*                  
LISTEN     0      128            *:80                         *:*                  
LISTEN     0      128            *:22                         *:*                  
LISTEN     0      100    127.0.0.1:25                         *:*                  
LISTEN     0      128         [::]:22                      [::]:*                  
LISTEN     0      100        [::1]:25                      [::]:*

//设置开机自启
[root@master fdfs]# vim /etc/rc.d/rc.local 
[root@master fdfs]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

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

//会自动创建两个目录
[root@master fdfs]# yum -y install tree 
[root@master fdfs]# tree /data/fastdfs/group1
/data/fastdfs/group1
├── data
│   ├── fdfs_trackerd.pid
│   └── storage_changelog.dat
└── logs
    └── trackerd.log

2 directories, 3 files

配置FastDFS存储

[root@master fdfs]# ls
client.conf.sample  storage.conf.sample  tracker.conf  tracker.conf.sample
[root@master fdfs]# cp storage.conf.sample storage.conf
[root@master fdfs]# vim storage.conf
# true for disabled
disabled=false   # 配置文件是否不生效,false 为生效

# and storage_ids.conf must be configed correctly.
group_name=group1  # 指定此 storage server 所在 组(卷)

# the storage server port
port=23000  # storage server 服务端口

# heart beat interval in seconds
heart_beat_interval=30  # 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)

# the base path to store data and log files
base_path=/data/fastdfs/group1  # Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)

# path(disk or mount point) count, default value is 1
store_path_count=1  # 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。

# store_path (disk), value can be 1 to 256, default value is 256
subdir_count_per_path=256  # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。

# Hour from 0 to 23, Minute from 0 to 59
sync_start_time=00:00
# storage sync end time of a day, time format: Hour:Minute
# Hour from 0 to 23, Minute from 0 to 59
sync_end_time=23:59  # 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。


# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=192.168.18.128:22122
# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行

# the port of the web server on this storage server
http.server_port=80
# 访问端口


//配置防火墙规则
[root@master fdfs]# cat /etc/sysconfig/iptables 
# Generated by iptables-save v1.4.21 on Fri Jan  7 10:10:31 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [506:50716]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT ##
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT ##
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Jan  7 10:10:31 2022


//启动
[root@master fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
[root@master fdfs]# ss -antl 
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port      
LISTEN     0      128            *:22122                      *:*                
LISTEN     0      128            *:80                         *:*                
LISTEN     0      128            *:22                         *:*                
LISTEN     0      128            *:23000                      *:*                
LISTEN     0      100    127.0.0.1:25                         *:*                
LISTEN     0      128         [::]:22                      [::]:*                
LISTEN     0      100        [::1]:25                      [::]:*   

//查看是否在通信
[root@master fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2022-01-07 10:37:50] DEBUG - base_path=/xym/fastdfs/storage, connect_timeout=30,
 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
server_count=1, server_index=0

tracker server is 192.168.18.128:22122

group count: 1

Group 1:
group name = group1
disk total space = 17394 MB
disk free space = 14957 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 80
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

	Storage 1:
		id = 192.168.88.128
		ip_addr = 192.168.88.128 (master)  ACTIVE
        ......

//设置开机自启
[root@master fdfs]# vim /etc/rc.d/rc.local 
[root@master fdfs]# cat /etc/rc.d/rc.local
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

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

//同 Tracker,Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息。
在 store_path0 目录下,创建了N*N个子目录:

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


文件上传测试

//客户端配置文件
[root@master fdfs]# ls
client.conf.sample  storage.conf.sample  tracker.conf.sample
storage.conf        tracker.conf
[root@master fdfs]# cp client.conf.sample client.conf
[root@master fdfs]# vim client.conf

# the base path to store log files
base_path=/data/fastdfs/group1  # Client 的数据和日志目录

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=192.168.18.128:22122  # Tracker端口

//创建测试文件
[root@master fdfs]# echo "hello world" > test.txt 
[root@master fdfs]# ls
client.conf         storage.conf         test.txt      tracker.conf.sample
client.conf.sample  storage.conf.sample  tracker.conf
[root@master fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/test.t
xt 
group1/M00/00/00/wKhYgGHX2cuAfdpiAAAADFmwwCQ649.txt

在这里插入图片描述

7. 外部访问

安装nginx

//安装依赖包
[root@master ~]# yum -y install gcc-c++ pcre-devel pcre  zlib zlib-devel openssl ope
nssl-devel

//创建用户
[root@master ~]# useradd -r -M -s /nologin nginx

//解压软件包 这里用的openresty
[root@master ~]# cd /usr/src/
[root@master src]# tar -xf openresty-1.19.3.1
[root@master src]# ls
debug                       nginx-1.19.7               pcre-8.37
fastdfs-5.05                nginx-1.19.7.tar.gz        pcre-8.37.tar.gz
fastdfs-5.05.tar.gz         openresty-1.19.3.1         zlib-1.2.8
kernels                     openresty-1.19.3.1.tar.gz  zlib-1.2.8.tar.gz
libfastcommon-1.0.7         openssl-1.0.1c
libfastcommon-1.0.7.tar.gz  openssl-1.0.1c.tar.gz

//编译安装
[root@master src]# ./configure --prefix=/usr/local/nginx 

//写启动文件
[root@master src]# cat >/usr/lib/systemd/system/nginx.service <<EOF
[Unit]
Description=Nginx server daemon
After=network.target sshd-keygen.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/nginx/sbin/nginx 
ExecReload=/usr/local/nginx/nginx/sbin/nginx -s reload 
ExecStop=/usr/local/nginx/nginx/sbin/nginx -s stop

[Install]
WantedBy=multi-user.target
EOF

//设置开机自启
[root@master src]# vim /etc/profile.d/nginx.sh 
export  PATH=/usr/local/nginx/nginx/sbin:$PATH
[root@master src]# source /etc/profile.d/nginx.sh

[root@master src]# systemctl daemon-reload
[root@master src]# systemctl enable --now  nginx 
[root@master src]# systemctl status nginx 
● nginx.service - Nginx server daemon
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: di
sabled)   Active: active (running) since 五 2022-01-07 08:48:12 CST; 5h 35min ago
 Main PID: 1002 (nginx)
   CGroup: /system.slice/nginx.service
           ├─1002 nginx: master process /usr/local/nginx/nginx/sbin/nginx
           └─1003 nginx: worker process

1月 07 08:48:10 master systemd[1]: Starting Nginx server daemon...
1月 07 08:48:12 master systemd[1]: Started Nginx server daemon.

//查看nginx安装使用了哪些模块
[root@master src]# /usr/local/nginx/nginx/sbin/nginx -V
nginx version: openresty/1.19.3.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx/nginx --with-cc-opt=-O2 --add-module=
../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.19 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.9 --with-ld-opt=-Wl,-rpath,/usr/local/nginx/luajit/lib --with-zlib=/usr/src/zlib-1.2.8 --with-zlib-opt=-g --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

//修改防火墙规则
[root@master src]# vim /etc/sysconfig/iptables
[root@master src]# systemctl restart iptables
[root@master src]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Fri Jan  7 10:10:31 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [506:50716]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Jan  7 10:10:31 2022

//修改配置文件

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location /group1/M00 { 
            alias /data/fastdfs/group1 ;
        }
//重启nginx
[root@master fastdfs]# systemctl restart nginx 
[root@master fastdfs]# ss -antl 
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port         
     LISTEN     0      128            *:22122                      *:*                  
LISTEN     0      128            *:80                         *:*                  
LISTEN     0      128            *:22                         *:*                  
LISTEN     0      128            *:23000                      *:*                  
LISTEN     0      100    127.0.0.1:25                         *:*                  
LISTEN     0      128         [::]:22                      [::]:*                  
LISTEN     0      100        [::1]:25                      [::]:*    

访问测试
在这里插入图片描述

配置FastDFS模块

//添加模块
[root@master src]# tar -xf fastdfs-nginx-module_v1.16.tar.gz 
[root@master src]# ls
debug                              nginx-1.19.7.tar.gz
fastdfs-5.05                       openresty-1.19.3.1
fastdfs-5.05.tar.gz                openresty-1.19.3.1.tar.gz
fastdfs-nginx-module               openssl-1.0.1c
fastdfs-nginx-module_v1.16.tar.gz  openssl-1.0.1c.tar.gz
kernels                            pcre-8.37
libfastcommon-1.0.7                pcre-8.37.tar.gz
libfastcommon-1.0.7.tar.gz         zlib-1.2.8
nginx-1.19.7                       zlib-1.2.8.tar.gz

[root@master openresty-1.19.3.1]# ./configure --add-module=../fastdfs-nginx-module/src

[root@master openresty-1.19.3.1]# make && make install

##可能会报错 做软连接
ln -sv /usr/include/fastcommon /usr/local/include/fastcommon 

ln -sv /usr/include/fastdfs /usr/local/include/fastdfs 

ln -sv /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

//查看模块
[root@master openresty-1.19.3.1]# /usr/local/nginx/nginx/sbin/nginx -V
nginx version: openresty/1.19.3.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx/nginx --with-cc-opt=-O2 --add-module=
../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.19 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../rds-json-nginx-module-0.15 --add-module=../rds-csv-nginx-module-0.09 --add-module=../ngx_stream_lua-0.0.9 --with-ld-opt=-Wl,-rpath,/usr/local/nginx/luajit/lib --with-zlib=/usr/src/zlib-1.2.8 --with-zlib-opt=-g --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_ssl_module

//复制配置文件
[root@master openresty-1.19.3.1]# cp ../fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
[root@oracledb logs]# cp /data/fastdfs-5.05/conf/http.conf /etc/fdfs/
[root@oracledb logs]# cp /data/fastdfs-5.05/conf/mime.types /etc/fdfs/


//修改配置文件
[root@master ~]# vim /etc/fdfs/mod_fastdfs.conf
# default value is 30s
connect_timeout=10 # 连接超时时间

# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=192.168.18.128:22122 # Tracker Server

# the default value is 23000
storage_server_port=23000 # StorageServer 默认端口

# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true  # 如果文件ID的uri中包含/group**,则要设置为true

# path(disk or mount point) count, default value is 1
# must same as storage.conf
store_path_count=/data/fastdfs/group1 # Storage 配置的store_path0路径,必须和storage.conf中的一致

//复制FastDFS 的部分配置文件到/etc/fdfs 目录
[root@master ~]# cd  /usr/src/fastdfs-5.05/conf/
[root@master conf]# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

// 配置nginx,修改nginx.conf
 server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

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

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       location /group1/ {
           root  /data/fastdfs/group1/data;
            ngx_fastdfs_module;

        }


[root@master conf]# systemctl restart nginx 
ngx_http_fastdfs_set pid=91071

在这里插入图片描述
make报错看这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值