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地址 | 主机名 |
---|---|---|
CentOS7 | 192.168.88.128 | master |
//安装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