fastdfs部署详解

news2024/11/15 17:19:50

fastdfs部署

官方github支持

官方解释:FastDFS 是一个开源的高性能分布式文件系统。它的主要功能包括:文件存储、文件同步和文件访问(文件上传和文件下载),它可以解决高容量和负载均衡问题。FastDFS应该能满足图片分享网站、视频分享网站等以文件为基础服务的网站的要求。
FastDFS有两个角色:tracker和storage。跟踪器负责文件访问的调度和负载均衡。storage 存储文件,其功能是文件管理,包括:文件存储,文件同步,提供文件访问接口。它还管理元数据,这些元数据是表示文件键值对的属性。例如:width=1024,键为“width”,值为“1024”。
跟踪器和存储包含一个或多个服务器。跟踪器或存储集群中的服务器可以随时加入或移除集群,而不影响在线服务。跟踪器集群中的服务器是对等的。
按文件卷/组组织的存储服务器以获得高容量。存储系统包含一个或多个卷,这些卷之间的文件是独立的。整个存储系统的容量等于所有卷容量的总和。一个文件卷包含一台或多台存储服务器,这些服务器之间的文件是相同的。一个文件卷中的服务器相互备份,所有这些服务器都是负载均衡的。将存储服务器添加到卷时,该卷中已经存在的文件会自动复制到这台新服务器上,复制完成后,系统会将这台服务器在线切换为提供存储服务。
当整个存储容量不足时,您可以添加一个或多个卷来扩展存储容量。为此,您需要添加一台或多台存储服务器。
文件的标识由两部分组成:卷名和文件名。

个人理解:FastDFS 是一个开源的高性能分布式文件系统。FastDFS能满足图片分享网站、视频分享网站等以文件为基础服务的网站的要求。简单说就是为图片分享网站、视频分享网站等以文件为基础服务的网站服务。
优势:对于用户来说,不用管内部图片、视频存放位置。它能够自动存放好,并且反馈一个URL地址供你调用

角色名词功能
tracker跟踪器负责文件访问的调度和负载均衡
storage存储文件管理,包括:文件存储,文件同步,提供文件访问接口。它还管理元数据,这些元数据是表示文件键值对的属性

环境说明

系统:centos 7

内核:3.10.0-1160.62.1.el7.x86_64

防火墙:

方式1)关闭防火墙
systemctl stop firewalld (关闭firewalld )
方式2)开启防火墙,开放80端口(我是80,自行选择)
systemctl start firewalld(开启firewalld )
firewall-cmd --zone=public --add-port=80/tcp --permanent (添加开放端口)
firewall-cmd --reload(加载配置)
firewall-cmd --zone= public --query-port=80/tcp(查看端口是否开启)

一、环境配置

  • 实验能否访问外网(决定是下包还是传包)

ping www.baidu.com

在这里插入图片描述

可以很粗暴的认为,能ping通有网

那就能下载,没网的服务器就找到有网的机器,下载好了再上传吧。

  • 获取软件包

先创建一个文件夹,把所有包都放在一个目录下,好找。

[root@lsigzmdun5 ~]# cd  /opt/
[root@lsigzmdun5 opt]# ls
avalokita  bcm-agent  bsm-agent  hosteye  rh
[root@lsigzmdun5 opt]# mkdir fastdfs_package  # 创建包存储文件夹
[root@lsigzmdun5 opt]# cd fastdfs_package/
[root@lsigzmdun5 fastdfs_package]# 

下载四个官网软件包:
fastdfs-5.04
libfastcommon-1.0.43.zip
fastdfs-nginx-module-1.20.zip
nginx-1.20.2.tar.gz

传完如下:

[root@lsigzmdun5 fastdfs_package]# ls
fastdfs-5.04.zip  fastdfs-nginx-module-1.20.zip  libfastcommon-1.0.43.zip nginx-1.20.2.tar.gz
  • 下载依赖(后期nginx安装需要)
 yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel gcc zip unzip libevent

二、部署

  • 部署libfastcommon-1.0.43

[root@lsigzmdun5 fastdfs_package]# unzip libfastcommon-1.0.43.zip #解压
Archive:  libfastcommon-1.0.43.zip
c8c75666cf9b17adaf58883174ddd8631d628c01
   creating: libfastcommon-1.0.43/
    ... ... 
[root@lsigzmdun5 fastdfs_package]# cd libfastcommon-1.0.43  #进入目录
[root@lsigzmdun5 libfastcommon-1.0.43]#  ./make.sh && ./make.sh install  #编译安装
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c  
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o chain.o chain.c  
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o shared_func.o shared_func.c  
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o ini_file_reader.o ini_file_reader.c  
     ...  ... 

一般没有报错,直接执行就好

  • 部署fastdfs-5.04

[root@lsigzmdun5 fastdfs_package]# unzip fastdfs-5.04.zip #解压
Archive:  fastdfs-5.04.zip
f19daf51eeb021f0fcaa8770d49f76551a436cb1
   creating: fastdfs-5.04/
  inflating: fastdfs-5.04/COPYING-3_0.txt  
  inflating: fastdfs-5.04/HISTORY    
  inflating: fastdfs-5.04/INSTALL    
  inflating: fastdfs-5.04/README.md  
   creating: fastdfs-5.04/client/
  inflating: fastdfs-5.04/client/Makefile.in  
   ... ...
[root@lsigzmdun5 fastdfs_package]# cd fastdfs-5.04/    #进入目录
[root@lsigzmdun5 fastdfs-5.04]# ls
client  conf             fastdfs.spec  init.d   make.sh     README.md   stop.sh  test
common  COPYING-3_0.txt  HISTORY       INSTALL  php_client  restart.sh  storage  tracker
[root@lsigzmdun5 fastdfs-5.04]# ./make.sh  && ./make.sh install #编译安装
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -DOS_LINUX -DIOEVENT_USE_EPOLL -c -o ../common/fdfs_global.o ../common/fdfs_global.c  -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -DOS_LINUX -DIOEVENT_USE_EPOLL -c -o tracker_proto.o tracker_proto.c  -I../common -I/usr/include/fastcommon
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O -DDEBUG_FLAG -DOS_LINUX -DIOEVENT_USE_EPOLL -c -o 
  ...  ...

一般没有报错,直接执行

  • 创建存储文件目录

[root@lsigzmdun5 opt]# mkdir fastdfs   #/opt/fastdfs 本次项目的总存储路径
[root@lsigzmdun5 opt]# mkdir -p  /opt/fastdfs/client #client 端日志目录
[root@lsigzmdun5 opt]# mkdir -p  /opt/fastdfs/storage/base /opt/fastdfs/storage/store  #存储文件的路径 
[root@lsigzmdun5 opt]# mkdir -p /opt/fastdfs/tracker/data /opt/fastdfs/tracker/log   #跟踪器的文件路径
[root@lsigzmdun5 opt]# mkdir -p /opt/fastdfs/storage/base/data #存储文件的路径 
[root@lsigzmdun5 opt]# mkdir -p /opt/fastdfs/storage/base/logs #存储文件的日志路径 
[root@lsigzmdun5 opt]# mkdir -p /opt/fastdfs/nginx_mod #nginx模块路径
  • 拷贝配置文件

[root@lsigzmdun5 opt]# cd /etc/fdfs 
[root@lsigzmdun5 fdfs]# ls
client.conf.sample  storage.conf.sample  tracker.conf.sample
[root@lsigzmdun5 fdfs]# cp tracker.conf.sample tracker.conf
[root@lsigzmdun5 fdfs]# cp storage.conf.sample storage.conf
[root@lsigzmdun5 fdfs]# cp client.conf.sample client.conf
[root@lsigzmdun5 fdfs]# ls
client.conf   client.conf.sample  storage.conf  storage.conf.sample  tracker.conf  tracker.conf.sample
  • 修改配置文件

对于tracker.conf文件,只需要修改以下几项

base_path=/opt/fastdfs/tracker #修改文件存储路径

详细配置文件与说明如下:

[root@lsigzmdun5 fdfs]# cat tracker.conf|egrep -v "^$|^#"

disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
base_path=/opt/fastdfs/tracker
max_connections=256
accept_threads=1
work_threads=4
store_lookup=2
store_group=group2
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false 
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html

对于storage.conf文件,只需要修改以下几项

base_path=/opt/fastdfs/storage/base
store_path0=/opt/fastdfs/storage/store
tracker_server=106.12.115.19:22122

详细配置文件与说明如下:

[root@lsigzmdun5 fdfs]# cat storage.conf|egrep -v "^$|^#"
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/opt/fastdfs/storage/base
max_connections=256
buff_size = 256KB
accept_threads=1
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/opt/fastdfs/storage/store
subdir_count_per_path=256
tracker_server=106.12.115.19:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888

对于client.conf文件,只需要修改以下几项

base_path=/opt/fastdfs/client/
tracker_server=106.12.115.19:22122

详细配置文件与说明如下:

[root@lsigzmdun5 fdfs]# cat client.conf|egrep -v "^$|^#"
connect_timeout=30
network_timeout=60
base_path=/opt/fastdfs/client/
tracker_server=106.12.115.19:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=80
  • 启动

[root@lsigzmdun5 fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf 
[root@lsigzmdun5 fdfs]# ps -ef |grep fdfs
root     22737     1  0 23:48 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf 
[root@lsigzmdun5 fdfs]#  /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
[root@lsigzmdun5 fdfs]# ps -ef |grep fdfs
root     22737     1  0 23:48 ?        00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf 
root     25546     1  0 23:50 ?        00:00:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf 
  • 检验上传

[root@lsigzmdun5 ~]# /opt/fastdfs_package/fastdfs-5.04/client/fdfs_test  /etc/fdfs/client.conf upload /root/lyy.png #先要有/root/lyy.png,你要先上传对应目录
This is FastDFS client test program v5.04

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.csource.org/ 
for more detail.

[2022-12-10 00:03:45] DEBUG - base_path=/opt/fastdfs/client, 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

tracker_query_storage_store_list_without_group: 
        server 1. group_name=, ip_addr=106.12.115.19, port=23000

group_name=group1, ip_addr=106.12.115.19, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672.png
source ip address: 192.168.0.4
file timestamp=2022-12-10 00:03:45
file size=160225
file crc32=3697121847
example file url: http://106.12.115.19/group1/M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672.png
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672_big.png
source ip address: 192.168.0.4
file timestamp=2022-12-10 00:03:46
file size=160225
file crc32=3697121847
example file url: http://106.12.115.19/group1/M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672_big.png
[root@lsigzmdun5 ~]# ll /opt/fastdfs/storage/store/data/00/00/  #文件存储位置
总用量 328
-rw-r--r-- 1 root root 160225 1210 00:03 wKgABGOTXGGAfL1OAAJx4dxdmjc672_big.png
-rw-r--r-- 1 root root     49 1210 00:03 wKgABGOTXGGAfL1OAAJx4dxdmjc672_big.png-m
-rw-r--r-- 1 root root 160225 1210 00:03 wKgABGOTXGGAfL1OAAJx4dxdmjc672.png
-rw-r--r-- 1 root root     49 1210 00:03 wKgABGOTXGGAfL1OAAJx4dxdmjc672.png-m

三、添加nginx显示

  • 配置fastdfs-nginx-module

[root@lsigzmdun5 ~]# cd /opt/fastdfs_package/
[root@lsigzmdun5 fastdfs_package]# ls
fastdfs-5.04      fastdfs-nginx-module-1.20.zip  libfastcommon-1.0.43.zip
fastdfs-5.04.zip  libfastcommon-1.0.43           nginx-1.20.2.tar.gz
[root@lsigzmdun5 fastdfs_package]# unzip fastdfs-nginx-module-1.20.zip 
Archive:  fastdfs-nginx-module-1.20.zip
396ffefbbb3a8c737226e9fdeb219e930c1e4372
   creating: fastdfs-nginx-module-1.20/
  inflating: fastdfs-nginx-module-1.20/HISTORY  
  inflating: fastdfs-nginx-module-1.20/INSTALL  
   creating: fastdfs-nginx-module-1.20/src/
  inflating: fastdfs-nginx-module-1.20/src/common.c  
  inflating: fastdfs-nginx-module-1.20/src/common.h  
  inflating: fastdfs-nginx-module-1.20/src/config  
  inflating: fastdfs-nginx-module-1.20/src/mod_fastdfs.conf  
  inflating: fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c  
[root@lsigzmdun5 fastdfs_package]# cd fastdfs-nginx-module-1.20
[root@lsigzmdun5 fastdfs-nginx-module-1.20]# cp src/mod_fastdfs.conf /etc/fdfs/
[root@lsigzmdun5 fastdfs-nginx-module-1.20]# cd /etc/fdfs/
[root@lsigzmdun5 fdfs]# ls
client.conf  client.conf.sample  mod_fastdfs.conf  storage.conf  storage.conf.sample  tracker.conf  tracker.conf.sample

对于client.conf文件,只需要修改以下几项

base_path=/opt/fastdfs/nginx_mod
tracker_server=106.12.115.19:22122
url_have_group_name = true
store_path0=/ytxt/fastdfs/storage/store/

详细配置文件与说明如下:

[root@lsigzmdun5 fastdfs_package]# cat mod_fastdfs.conf|egrep -v "^$|^#"
connect_timeout=2
network_timeout=30
base_path=/opt/fastdfs/nginx_mod
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
tracker_server=106.12.115.19:22122
torage_server_port=23000
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/ytxt/fastdfs/storage/store/
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0
  • 安装nginx

[root@lsigzmdun5 fastdfs_package]# tar -xf  nginx-1.20.2.tar.gz 
[root@lsigzmdun5 fastdfs_package]# ls
fastdfs-5.04      fastdfs-nginx-module-1.20      libfastcommon-1.0.43      nginx-1.20.2
fastdfs-5.04.zip  fastdfs-nginx-module-1.20.zip  libfastcommon-1.0.43.zip  nginx-1.20.2.tar.gz
[root@lsigzmdun5 fastdfs_package]# ./configure --prefix=/opt/fastdfs_package/nginx-1.20.2 --add-module=/opt/fastdfs_package/fastdfs-nginx-module-1.20/src #配置

报错一

[root@lsigzmdun5 nginx-1.20.2]# make && make install  #编译安装
make -f objs/Makefile
make[1]: 进入目录“/opt/fastdfs_package/nginx-1.20.2”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"' -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
        -o objs/src/core/nginx.o \
        src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused
    ...  ...
 cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules -I /usr/local/include \
        -o objs/addon/src/ngx_http_fastdfs_module.o \
        /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c
In file included from /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/common.c:26:0,
                 from /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c:6:
/usr/include/fastdfs/fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录
 #include "common_define.h"
                           ^
编译中断。
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误 1
make[1]: 离开目录“/opt/fastdfs_package/nginx-1.20.2”
make: *** [build] 错误 2

解决一:
修改配置文件/opt/fastdfs_package/fastdfs-nginx-module-1.20/src/config中的

ngx_module_incs="/usr/local/include "
CORE_INCS="$CORE_INCS /usr/local/include "

ngx_module_incs=“/usr/local/include /usr/include/fastcommon/ "
CORE_INCS=”$CORE_INCS /usr/local/include /usr/include/fastcommon/ "

文件前后文如下:

[root@lsigzmdun5 nginx-1.20.2]# cat  /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/config
       ... ...
ngx_addon_name=ngx_http_fastdfs_module

if test -n "${ngx_module_link}"; then
    ngx_module_type=HTTP
    ngx_module_name=$ngx_addon_name
    **ngx_module_incs="/usr/local/include  /usr/include/fastcommon/ "**
    ngx_module_libs="-lfastcommon -lfdfsclient"
    ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
    ngx_module_deps=
    CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
    . auto/module
else
    HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
    NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
    **CORE_INCS="$CORE_INCS /usr/local/include /usr/include/fastcommon/ "**
    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\"'"
fi

重新编译安装

[root@lsigzmdun5 fastdfs_package]# ./configure --prefix=/opt/fastdfs_package/nginx-1.20.2 --add-module=/opt/fastdfs_package/fastdfs-nginx-module-1.20/src

报错二:

[root@lsigzmdun5 nginx-1.20.2]# make && make install
make -f objs/Makefile
make[1]: 进入目录“/opt/fastdfs_package/nginx-1.20.2”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"' -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
        -o objs/src/core/nginx.o \
        src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused
    ...  ...
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs -I src/http -I src/http/modules -I /usr/local/include -I /usr/include/fastcommon/ \
        -o objs/addon/src/ngx_http_fastdfs_module.o \
        /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c
In file included from /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/ngx_http_fastdfs_module.c:6:0:
/opt/fastdfs_package/fastdfs-nginx-module-1.20/src/common.c: 在函数‘fdfs_http_request_handler’中:
/opt/fastdfs_package/fastdfs-nginx-module-1.20/src/common.c:1245:61: 错误:‘FDFSHTTPParams’没有名为‘support_multi_range’的成员
                 (pContext->range_count > 1 && !g_http_params.support_multi_range))
                                                             ^
make[1]: *** [objs/addon/src/ngx_http_fastdfs_module.o] 错误 1
make[1]: 离开目录“/opt/fastdfs_package/nginx-1.20.2”
make: *** [build] 错误 2

解决二:
/opt/fastdfs_package/fastdfs-nginx-module-1.20/src/common.c文件中第1245行的&& !g_http_params.support_multi_range删除。
原本文件相关上下文:

    if (fdfs_check_and_format_range(pContext, file_size) != 0 ||
          (pContext->range_count > 1  && !g_http_params.support_multi_range ))
          {
                    if (fd >= 0)
                    {
                           close(fd);
                  }

改为:

    if (fdfs_check_and_format_range(pContext, file_size) != 0 ||
          (pContext->range_count > 1 ))
          {
                    if (fd >= 0)
                    {
                           close(fd);
                  }

重新编译安装

[root@lsigzmdun5 fastdfs_package]# ./configure --prefix=/opt/fastdfs_package/nginx-1.20.2 --add-module=/opt/fastdfs_package/fastdfs-nginx-module-1.20/src

报错三:
安装文件与解压文件一致问题。


[root@lsigzmdun5 nginx-1.20.2]# make && make install
make -f objs/Makefile
make[1]: 进入目录“/opt/fastdfs_package/nginx-1.20.2”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"' -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
        -o objs/src/core/nginx.o \
        src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused
    ...  ... 
make[1]: 离开目录“/opt/fastdfs_package/nginx-1.20.2”
make -f objs/Makefile install
make[1]: 进入目录“/opt/fastdfs_package/nginx-1.20.2”
test -d '/opt/fastdfs_package/nginx-1.20.2' || mkdir -p '/opt/fastdfs_package/nginx-1.20.2'
test -d '/opt/fastdfs_package/nginx-1.20.2/sbin' \
        || mkdir -p '/opt/fastdfs_package/nginx-1.20.2/sbin'
test ! -f '/opt/fastdfs_package/nginx-1.20.2/sbin/nginx' \
        || mv '/opt/fastdfs_package/nginx-1.20.2/sbin/nginx' \
                '/opt/fastdfs_package/nginx-1.20.2/sbin/nginx.old'
cp objs/nginx '/opt/fastdfs_package/nginx-1.20.2/sbin/nginx'
test -d '/opt/fastdfs_package/nginx-1.20.2/conf' \
        || mkdir -p '/opt/fastdfs_package/nginx-1.20.2/conf'
cp conf/koi-win '/opt/fastdfs_package/nginx-1.20.2/conf'
cp: "conf/koi-win""/opt/fastdfs_package/nginx-1.20.2/conf/koi-win" 为同一文件
make[1]: *** [install] 错误 1
make[1]: 离开目录“/opt/fastdfs_package/nginx-1.20.2”
make: *** [install] 错误 2

解决三:

[root@lsigzmdun5 fastdfs_package]# ./configure --prefix=/opt/fastdfs_package/nginx --add-module=/opt/fastdfs_package/fastdfs-nginx-module-1.20/src
[root@lsigzmdun5 nginx-1.20.2]# make && make install
make -f objs/Makefile
make[1]: 进入目录“/opt/fastdfs_package/nginx-1.20.2”
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"' -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
        -o objs/src/core/nginx.o \
        src/core/nginx.c
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused
 ...  ...
cp conf/scgi_params \
        '/opt/fastdfs_package/nginx/conf/scgi_params.default'
test -f '/opt/fastdfs_package/nginx/conf/nginx.conf' \
        || cp conf/nginx.conf '/opt/fastdfs_package/nginx/conf/nginx.conf'
cp conf/nginx.conf '/opt/fastdfs_package/nginx/conf/nginx.conf.default'
test -d '/opt/fastdfs_package/nginx/logs' \
        || mkdir -p '/opt/fastdfs_package/nginx/logs'
test -d '/opt/fastdfs_package/nginx/logs' \
        || mkdir -p '/opt/fastdfs_package/nginx/logs'
test -d '/opt/fastdfs_package/nginx/html' \
        || cp -R html '/opt/fastdfs_package/nginx'
test -d '/opt/fastdfs_package/nginx/logs' \
        || mkdir -p '/opt/fastdfs_package/nginx/logs'
make[1]: 离开目录“/opt/fastdfs_package/nginx-1.20.2”

成功安装。

  • 修改nginx配置文件

做软链接

[root@lsigzmdun5 nginx-1.20.2]# cd ../
[root@lsigzmdun5 fastdfs_package]# mkdir 
[root@lsigzmdun5 fastdfs_package]# ls 
fastdfs-5.04      fastdfs-nginx-module-1.20      libfastcommon-1.0.43      nginx         nginx-1.20.2.tar.gz
fastdfs-5.04.zip  fastdfs-nginx-module-1.20.zip  libfastcommon-1.0.43.zip  nginx-1.20.2
[root@lsigzmdun5 fastdfs_package]# mkdir /opt/fastdfs/storage/store/data/M00ab/
[root@lsigzmdun5 fastdfs_package]# ln -s  /opt/fastdfs/storage/store/data/ /opt/fastdfs/storage/store/data/M00ab/ 

修改nginx.config文件
主要是在http.server下,将

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

替换为我们的

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

详细配置文件如下:

[root@lsigzmdun5 fastdfs_package]# vim nginx/conf/nginx.conf
#user  nobody;
worker_processes  1;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

       # location / {
        #    root   html;
         #   index  index.html index.htm;
        #}
           location ~/group([0-9])/M00 {
              ngx_fastdfs_module;
         }
        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

	    
}
  • 启动nginx

[root@lsigzmdun5 fastdfs_package]# /opt/fastdfs_package/nginx/sbin/nginx 
ngx_http_fastdfs_set pid=8102
  • 网页检验

访问 http://106.12.115.19/group1/M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672.png

报错四:

[root@lsigzmdun5 fastdfs_package]# tail -f nginx/logs/error.log 

ngx_http_fastdfs_process_init pid=8104
[2022-12-10 00:51:31] ERROR - file: ini_file_reader.c, line: 1029, include file "http.conf" not exists, line: "#include http.conf"
[2022-12-10 00:51:31] ERROR - file: /opt/fastdfs_package/fastdfs-nginx-module-1.20/src/common.c, line: 163, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
2022/12/10 00:51:31 [alert] 8103#0: worker process 8104 exited with fatal code 2 and cannot be respawned

解决四:

[root@lsigzmdun5 fastdfs_package]# cp fastdfs-5.04/conf/http.conf  fastdfs-5.04/conf/mime.types  /etc/fdfs
[root@lsigzmdun5 fastdfs_package]# /opt/fastdfs_package/nginx/sbin/nginx  -s reload
ngx_http_fastdfs_set pid=18978

再次访问 http://106.12.115.19/group1/M00/00/00/wKgABGOTXGGAfL1OAAJx4dxdmjc672.png

在这里插入图片描述
完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/78795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10 款开源工具

1. JIRA 2. Git 3. Jenkins 4. Selenium 5. Groovy 6、Spock 7. Maven 8. Gradle 9. Docker 10. Linux 本文主要介绍Java程序员应该在2019年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是&…

Java 并发编程<13>-ThreadPoolExecutor的springboot应用

Java 并发编程<13>-ThreadPoolExecutor的springboot应用 Java并发编程<10>安全集合 ...... Java 并发编程<1>-线程实现的方式 线程池简介 a .为什么使用线程池 降低系统资源消耗&#xff0c;通过重用已存在的线程&#xff0c;降低线程创建和销毁造成的消…

基于Surf+GTM的图像配准和拼接算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 SIFT采用的是DoG图像&#xff0c;而SURF采用的是Hessian矩阵&#xff08;SURF算法核心&#xff09;行列式近似值图像。在数学中&#xff0c;Hessian矩阵是一个自变量为向量的实值函数的二阶偏导数…

计算机网络(自顶向下)学习笔记——传输层

第三章—传输层 传输层位于应用层和网络层之间&#xff0c;是分层的网络体系结构中重要的部分&#xff0c;该层为运行在不同主机上的应用进程提供直接的通信服务起着至关重要的作用。在这里我们将讨论两个大的问题&#xff1a;将网络层在不同端系统之间的通信服务扩充到运行在…

机器学习-PCA主成份分析详细解说及代码实现

本站原创文章&#xff0c;转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com 目录 一. PCA主成分分析思想介绍 1.1 主成份分析思想 1.2 什么是主成份 二. PCA主成分分析的数学描述 2.1 主成份分析的数学表达 2.2 主成份系数矩阵A的约定 2.3 主成份分析需要输出什么 三…

Linux网络编程(一)——基础篇

目录 一、网络结构模式 &#xff08;一&#xff09;C/S结构 &#xff08;二&#xff09;B/S结构 二、MAC地址 三、IP地址 &#xff08;一&#xff09;IP地址编址方式 A类IP地址 B类IP地址 C类IP地址 D、E类IP地址 特殊的网址 IP分类的优缺点 &#xff08;二&#x…

解决org.apache.jasper.JasperException: 无法为JSP编译类

1.问题描述 org.apache.jasper.JasperException: 无法为JSP编译类: 在运行java web项目时&#xff0c;启动tomcat服务器报这样的操作&#xff0c;一般就是tomcat版本跟jdk版本不兼容的问题。我用的是jdk17&#xff0c;经过查阅相关资料得出一般使用jdk8就可以解决此类问题 2.…

微信小程序 | 小程序配置和架构

&#x1f5a5;️ 微信小程序 专栏&#xff1a;小程序配置和架构 &#x1f9d1;‍&#x1f4bc; 个人简介&#xff1a;一个不甘平庸的平凡人&#x1f36c; ✨ 个人主页&#xff1a;CoderHing的个人主页 &#x1f340; 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

JavaScript:cookie和storage

cookie 用于客户端存储会话信息。在浏览器中会对cookie做一些限制&#xff1a; ❑ 不超过300个cookie&#xff1b; ❑ 每个cookie不超过4096字节&#xff1b; ❑ 每个域不超过20个cookie&#xff1b; ❑ 每个域不超过81920字节。 每个域能设置的cookie总数也是受限的&#xf…

(5)Pytorch数据处理

Pytorch 数据处理 要点总结 1、功能 Dataset&#xff1a;准备数据集&#xff0c;一般会针对自己的数据集格式重写Dataset&#xff0c;定义数据输入输出格式 Dataloader&#xff1a;用于加载数据&#xff0c;通常不用改这部分内容 2、看代码时请关注 Dataloader中collate_fn 传入…

分布式部署:第一章:zookeeper集群和solrcloud及redisCluster集群搭建

2.1 Zookeeper集群简介 2.1.1为什么搭建Zookeeper集群 大部分分布式应用需要一个主控、协调器或者控制器来管理物理分布的子进程。目前&#xff0c;大多数都要开发私有的协调程序&#xff0c;缺乏一个通用机制&#xff0c;协调程序的反复编写浪费&#xff0c;且难以形成通用、…

17、基于Mybaits、Vue、axios、Element-ui的JavaWeb项目

目录 1、项目功能介绍 ​编辑 2、环境准备 创建项目 准备数据库 准备Mybatis核心配置文件 创建实体类与Mapper映射文件 补全项目结构 1、在pom.xml中导入相关依赖 2、导入axios、vue的js文件 3、导入Element-ui 3、查询所有功能的实现 3.1、后端的实现 3.1.1、d…

【人工智能与机器学习】——朴素贝叶斯与支持向量机(学习笔记)

&#x1f4d6; 前言&#xff1a;朴素贝叶斯&#xff08;Naive Bayes&#xff09;和支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是两种不同的机器学习算法&#xff0c;它们都用于分类。朴素贝叶斯算法基于贝叶斯定理来进行分类&#xff0c;它是一…

内存优化之掌握 APP 运行时的内存模型

在上一章&#xff0c;我们已经从操作系统的维度了解了一个进程的内存模型。这一节&#xff0c;我们将维度继续上升&#xff0c;从应用层出发看看一个 App 运行时的内存模型是怎样的。从 App 运行时的内存模型中我们可以知道导致内存增长的源头&#xff0c;从源头出发&#xff0…

【RCNN系列】Faster RCNN论文总结及源码

目标检测论文总结 【RCNN系列】 RCNN Fast RCNN Faster RCNN 文章目录目标检测论文总结前言一、Pipeline二、模型设计1.RPNHead2.Anchors3.RPN&#xff08;Region Proposal Networks&#xff09;4.RPN正负样本划分阈值5.训练策略三、总结前言 一些经典论文的总结。 一、Pipel…

RK3568平台开发系列讲解(驱动基础篇)Linux内核面向对象思想之继承

🚀返回专栏总目录 文章目录 一、私有指针二、抽象类三、接口沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在面向对象编程中,封装和继承其实是不分开的:封装就是为了更好地继承。我们将几个类共同的一些属性和方法抽取出来,封装成一个类,就是为了通过继承最大化…

【云原生】devops之jenkins中pipeline语法(2)

前言&#xff1a; pipeline语法分类一般来说&#xff0c;有四种。分别是环境配置、阶段步骤、行为动作、逻辑判断。 二、阶段步骤 &#xff08;1&#xff09;post 根据pipeline块或者stage块&#xff08;阶段&#xff09;完成的状态来进行一个或者多个附加步骤&#xff08;取决…

搭建高性能数据库服务⭐《Sharding-JDBC+Canal》⭐

本文主要记录本周的学习内容&#xff0c;搭建mysql的高性能数据库服务 源于 现最多被使用的数据库还是Msql&#xff0c;而MySQL本身不是一种分布式型数据库&#xff0c;在高性能要求下&#xff0c;简单的主从、复制已无法满足高性能要求。 而本文主要在提供读者一种高性能方案…

Java学习之equals方法练习

目录 第一题 题目要求 我的代码 创建Person类 main类 结果 重写equals 重写后的结果 老师代码 思路 结果 总结 Interger类 源代码 String类 源代码 第二题 运行结果 第三题 知识点 运行结果 第一题 题目要求 判断两个 Person 对象的内容是否相等&#xff0c;…

SQL开窗函数之基本用法和聚合函数

开窗函数 当我们需要进行一些比较复杂的子查询时&#xff0c;聚合函数就会非常的麻烦&#xff0c;因此可以使用开窗函数进行分组再运用函数查询。窗口函数既可以显示聚集前的数据&#xff0c;也可以显示聚集后的数据&#xff0c;可以在同一行中返回基础行的列值和聚合后的结果…