博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS搭建单机版fastdfs:多分组模式
阅读量:6003 次
发布时间:2019-06-20

本文共 38889 字,大约阅读时间需要 129 分钟。

hot3.png

环境准备:以下所有部署操作都在vm虚拟机环境下进行实现,如果转为生产环境只需配置对应ip地址即可,linux下基础配置请参考文摘CentOs6.5基本环境配置(一):基本环境配置  我们在配置fastdfs时候需要和nginx进行整合,我们需要的软件有

fastdfs-nginx-module_v1.16.tar FastDFS_v5.05.tar  libfastcommon-master nginx-1.10.2.tar

我们先准备一些必要的环境

yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel libevent

安装完后 我们先安装fastdfs libcommon 

如果linux下没有安装unzip 的话 先通过 yum install -y unzip zip 进行安装

我们把所有有关fastdfs的文件都存放在fastdfs目录下 定义一个文件夹存放fastdfs 

mkdir fastdfs

 解压libcomon 我们把它放在libcommon包下创建包

mkdir libcommon

解压libfastcommon-master.zip 到libcommon包下

unzip libfastcommon-master.zip -d /root/fastdfs/libcommon

进入libfastcommon-master进行编译及安装

cd libfastcommon-master/./make.sh./make.sh install

默认是安装在 usr/lib64下面 

我们需要对/usr/lib64下一些核心执行程序创建软连接,我们把软连接文件存放在libcommon 包下的soft-connection下面 首先先创建soft-connection包

mkdir soft-connection

然后进行软连接的创建

ln -s /usr/lib64/libfastcommon.so /root/fastdfs/libcommon/soft-connection/libfastcommon.soln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.soln -s /usr/lib64/libfdfsclient.so /root/fastdfs/libcommon/soft-connection/libfdfsclient.soln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

创建完后我们进入到soft-connection包下可以看到我们所创建的软连接信息

以上我们的安装fastdfs必要的包libfastcommon就安装完了,下面我们在单机版本中安装tracker(追踪器)

首先创建在fastdfs下创建fast-tracker文件夹 用来存放 tracker数据,然后解压FastDFS_v5.05.tar.gz到fast-tracker文件夹下

cd ~/fastdfsmkdir fast-trackertar -zxvf FastDFS_v5.05.tar.gz -C ~/fastdfs/fast-tracker

进入解压后的FastDFS文件夹进行编译及安装

cd FastDFS./make.sh ./make.sh install

安装完后 在/usr/bin 存放编译后的文件 在/etc/fdfs 存放配置文件

安装玩tracker后我们需要对tracker进行服务配置

进入fastdfs配置文件存放路径 cd /etc/fdfs 复制 tracker.conf.sample 为  tracker.conf

cp  tracker.conf.sample  tracker.conf

修改tracker.conf配置文件信息

# is this config file disabled# false for enabled# true for disableddisabled=false# bind an address of this host# empty for bind all addresses of this hostbind_addr=# the tracker server portport=22122# connect timeout in seconds# default value is 30sconnect_timeout=30# network timeout in seconds# default value is 30snetwork_timeout=60# the base path to store data and log files#用于存放store data 和log 日志 改变成我们自己路径即可base_path=/root/fastdfs/fast-tracker/data-and-log# max concurrent connections this server supportedmax_connections=256# accept thread count# default value is 1# since V4.07accept_threads=1# work thread count, should <= max_connections# default value is 4# since V2.00work_threads=4# the method of selecting group to upload files# 0: round robin# 1: specify group# 2: load balance, select the max free space group to upload filestore_lookup=2# which group to upload file# when store_lookup set to 1, must set store_group to the group namestore_group=group2# which storage server to upload file# 0: round robin (default)# 1: the first server order by ip address# 2: the first server order by priority (the minimal)store_server=0# which path(means disk or mount point) of the storage server to upload file# 0: round robin# 2: load balance, select the max free space path to upload filestore_path=0# which storage server to download file# 0: round robin (default)# 1: the source storage server which the current file uploaded todownload_server=0# reserved storage space for system or other applications.# if the free(available) space of any stoarge server in# a group <= reserved_storage_space,# no file can be uploaded to this group.# bytes unit can be one of follows:### G or g for gigabyte(GB)### M or m for megabyte(MB)### K or k for kilobyte(KB)### no unit for byte(B)### XX.XX% as ratio such as reserved_storage_space = 10%reserved_storage_space = 10%#standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info#unix group name to run this program,#not set (empty) means run by the group of current userrun_by_group=#unix username to run this program,#not set (empty) means run by current userrun_by_user=# allow_hosts can ocur more than once, host can be hostname or ip address,# "*" means match all ip addresses, can use range like this: 10.0.1.[1-15,20] or# host[01-08,20-25].domain.com, for example:# allow_hosts=10.0.1.[1-15,20]# allow_hosts=host[01-08,20-25].domain.comallow_hosts=*# sync log buff to disk every interval seconds# default value is 10 secondssync_log_buff_interval = 10# check storage server alive interval secondscheck_active_interval = 120# thread stack size, should >= 64KB# default value is 64KBthread_stack_size = 64KB# auto adjust when the ip address of the storage server changed# default value is truestorage_ip_changed_auto_adjust = true# storage sync file max delay seconds# default value is 86400 seconds (one day)# since V2.00storage_sync_file_max_delay = 86400# the max time of storage sync a file# default value is 300 seconds# since V2.00storage_sync_file_max_time = 300# if use a trunk file to store several small files# default value is false# since V3.00use_trunk_file = false# the min slot size, should <= 4KB# default value is 256 bytes# since V3.00slot_min_size = 256# the max slot size, should > slot_min_size# store the upload file to trunk file when it's size <=  this value# default value is 16MB# since V3.00slot_max_size = 16MB# the trunk file size, should >= 4MB# default value is 64MB# since V3.00trunk_file_size = 64MB# if create trunk file advancely# default value is false# since V3.06trunk_create_file_advance = false# the time base to create trunk file# the time format: HH:MM# default value is 02:00# since V3.06trunk_create_file_time_base = 02:00# the interval of create trunk file, unit: second# default value is 38400 (one day)# since V3.06trunk_create_file_interval = 86400# the threshold to create trunk file# when the free trunk file size less than the threshold, will create# the trunk files# default value is 0# since V3.06trunk_create_file_space_threshold = 20G# if check trunk space occupying when loading trunk free spaces# the occupied spaces will be ignored# default value is false# since V3.09# NOTICE: set this parameter to true will slow the loading of trunk spaces# when startup. you should set this parameter to true when neccessary.trunk_init_check_occupying = false# if ignore storage_trunk.dat, reload from trunk binlog# default value is false# since V3.10# set to true once for version upgrade when your version less than V3.10trunk_init_reload_from_binlog = false# the min interval for compressing the trunk binlog file# unit: second# default value is 0, 0 means never compress# FastDFS compress the trunk binlog when trunk init and trunk destroy# recommand to set this parameter to 86400 (one day)# since V5.01trunk_compress_binlog_min_interval = 0# if use storage ID instead of IP address# default value is false# since V4.00use_storage_id = false# specify storage ids filename, can use relative or absolute path# since V4.00storage_ids_filename = storage_ids.conf# id type of the storage server in the filename, values are:## ip: the ip address of the storage server## id: the server id of the storage server# this paramter is valid only when use_storage_id set to true# default value is ip# since V4.03id_type_in_filename = ip# if store slave file use symbol link# default value is false# since V4.01store_slave_file_use_link = false# if rotate the error log every day# default value is false# since V4.02rotate_error_log = false# rotate error log time base, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59# default value is 00:00# since V4.02error_log_rotate_time=00:00# rotate error log when the log file exceeds this size# 0 means never rotates log file by log file size# default value is 0# since V4.02rotate_error_log_size = 0# keep days of the log files# 0 means do not delete old log files# default value is 0log_file_keep_days = 0# if use connection pool# default value is false# since V4.05use_connection_pool = false# connections whose the idle time exceeds this time will be closed# unit: second# default value is 3600# since V4.05connection_pool_max_idle_time = 3600# HTTP port on this tracker serverhttp.server_port=8080# check storage HTTP server alive interval seconds# <= 0 for never check# default value is 30http.check_alive_interval=30# check storage HTTP server alive type, values are:#   tcp : connect to the storge server with HTTP port only,#        do not request and get response#   http: storage check alive url must return http status 200# default value is tcphttp.check_alive_type=tcp# check storage HTTP server alive uri/url# NOTE: storage embed HTTP server support uri: /status.htmlhttp.check_alive_uri=/status.html

 

测试tracker服务启动

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

查看tracker服务是否启动成功,如果出现以下则为成功了

ps aux |grep trackerroot       2000  0.1  0.2  78732  2832 ?        Sl   00:45   0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restartroot       2008  0.0  0.0 103264   880 pts/1    S+   00:45   0:00 grep tracker

我们也可以通过logs下日志文件查看启动日志(如果tracker启动失败的话)

安装完tracker后我们需要安装storage(存储),由于是单机版本的我们不需要再次重复tracker的步骤,如果做非单机版需要再次重复tracker的步骤然后修改storage.conf文件,我们现在直接修改storage.conf文件即可

在我们修改配置前需要先设置下存放文件的地址,我们放在 /fastdfs/fast-storage下 定义一个 storage-images-data 

cd /fastdfs/fast-storagemkdir storage-images-data 

进入fdfs 把storage.conf.sample 复制一份storage.conf,

cd /etc/fdfs/cp storage.conf.sample storage.conf

然后修改配置文件

# is this config file disabled# false for enabled# true for disableddisabled=false# the name of the group this storage server belongs to## comment or remove this item for fetching from tracker server,# in this case, use_storage_id must set to true in tracker.conf,# and storage_ids.conf must be configed correctly.# group名称,如果涉及多个group只需要进行名称及必要地放改变即可group_name=group1# bind an address of this host# empty for bind all addresses of this hostbind_addr=# if bind an address of this host when connect to other servers# (this storage server as a client)# true for binding the address configed by above parameter: "bind_addr"# false for binding any address of this hostclient_bind=true# the storage server portport=23000# connect timeout in seconds# default value is 30sconnect_timeout=30# network timeout in seconds# default value is 30snetwork_timeout=60# heart beat interval in secondsheart_beat_interval=30# disk usage report interval in secondsstat_report_interval=60# the base path to store data and log files# data 和 log 存放路径,指定自己所定义的目录地址即可base_path=/root/fastdfs/fast-storage/data-and-log# max concurrent connections the server supported# default value is 256# more max_connections means more memory will be usedmax_connections=256# the buff size to recv / send data# this parameter must more than 8KB# default value is 64KB# since V2.00buff_size = 256KB# accept thread count# default value is 1# since V4.07accept_threads=1# work thread count, should <= max_connections# work thread deal network io# default value is 4# since V2.00work_threads=4# if disk read / write separated##  false for mixed read and write##  true for separated read and write# default value is true# since V2.00disk_rw_separated = true# disk reader thread count per store base path# for mixed read / write, this parameter can be 0# default value is 1# since V2.00disk_reader_threads = 1# disk writer thread count per store base path# for mixed read / write, this parameter can be 0# default value is 1# since V2.00disk_writer_threads = 1# when no entry to sync, try read binlog again after X milliseconds# must > 0, default value is 200mssync_wait_msec=50# after sync a file, usleep milliseconds# 0 for sync successively (never call usleep)sync_interval=0# storage sync start time of a day, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59sync_start_time=00:00# storage sync end time of a day, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59sync_end_time=23:59# write to the mark file after sync N files# default value is 500write_mark_file_freq=500# path(disk or mount point) count, default value is 1store_path_count=1# store_path#, based 0, if store_path0 not exists, it's value is base_path# the paths must be exist# 图片实际存放了路径store_path0=/root/fastdfs/fast-storage/storage-images-data#store_path1=/home/yuqing/fastdfs2# subdir_count  * subdir_count directories will be auto created under each# store_path (disk), value can be 1 to 256, default value is 256subdir_count_per_path=256# tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip addresstracker_server=192.168.174.99:22122#standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info#unix group name to run this program,#not set (empty) means run by the group of current userrun_by_group=#unix username to run this program,#not set (empty) means run by current userrun_by_user=# allow_hosts can ocur more than once, host can be hostname or ip address,# "*" means match all ip addresses, can use range like this: 10.0.1.[1-15,20] or# host[01-08,20-25].domain.com, for example:# allow_hosts=10.0.1.[1-15,20]# allow_hosts=host[01-08,20-25].domain.comallow_hosts=*# the mode of the files distributed to the data path# 0: round robin(default)# 1: random, distributted by hash codefile_distribute_path_mode=0# valid when file_distribute_to_path is set to 0 (round robin),# when the written file count reaches this number, then rotate to next path# default value is 100file_distribute_rotate_count=100# call fsync to disk when write big file# 0: never call fsync# other: call fsync when written bytes >= this bytes# default value is 0 (never call fsync)fsync_after_written_bytes=0# sync log buff to disk every interval seconds# must > 0, default value is 10 secondssync_log_buff_interval=10# sync binlog buff / cache to disk every interval seconds# default value is 60 secondssync_binlog_buff_interval=10# sync storage stat info to disk every interval seconds# default value is 300 secondssync_stat_file_interval=300# thread stack size, should >= 512KB# default value is 512KBthread_stack_size=512KB# the priority as a source server for uploading file.# the lower this value, the higher its uploading priority.# default value is 10upload_priority=10# the NIC alias prefix, such as eth in Linux, you can see it by ifconfig -a# multi aliases split by comma. empty value means auto set by OS type# default values is emptyif_alias_prefix=# if check file duplicate, when set to true, use FastDHT to store file indexes# 1 or yes: need check# 0 or no: do not check# default value is 0check_file_duplicate=0# file signature method for check file duplicate## hash: four 32 bits hash code## md5: MD5 signature# default value is hash# since V4.01file_signature_method=hash# namespace for storing file indexes (key-value pairs)# this item must be set when check_file_duplicate is true / onkey_namespace=FastDFS# set keep_alive to 1 to enable persistent connection with FastDHT servers# default value is 0 (short connection)keep_alive=0# you can use "#include filename" (not include double quotes) directive to# load FastDHT server list, when the filename is a relative path such as# pure filename, the base path is the base path of current/this config file.# must set FastDHT server list when check_file_duplicate is true / on# please see INSTALL of FastDHT for detail##include /home/yuqing/fastdht/conf/fdht_servers.conf# if log to access log# default value is false# since V4.00use_access_log = false# if rotate the access log every day# default value is false# since V4.00rotate_access_log = false# rotate access log time base, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59# default value is 00:00# since V4.00access_log_rotate_time=00:00# if rotate the error log every day# default value is false# since V4.02rotate_error_log = false# rotate error log time base, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59# default value is 00:00# since V4.02error_log_rotate_time=00:00# rotate access log when the log file exceeds this size# 0 means never rotates log file by log file size# default value is 0# since V4.02rotate_access_log_size = 0# rotate error log when the log file exceeds this size# 0 means never rotates log file by log file size# default value is 0# since V4.02rotate_error_log_size = 0# keep days of the log files# 0 means do not delete old log files# default value is 0log_file_keep_days = 0# if skip the invalid record when sync file# default value is false# since V4.02file_sync_skip_invalid_record=false# if use connection pool# default value is false# since V4.05use_connection_pool = false# connections whose the idle time exceeds this time will be closed# unit: second# default value is 3600# since V4.05connection_pool_max_idle_time = 3600# use the ip address of this storage server if domain_name is empty,# else this domain name will ocur in the url redirected by the tracker serverhttp.domain_name=# the port of the web server on this storage serverhttp.server_port=8888

测试storage服务启动,如果出现以下则证明我们启动成功了

/usr/bin/fdfs_storaged /etc/fdfs/storage.confps aux |grep storageroot       2037  0.0  6.6  80852 66776 ?        Sl   00:51   0:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restartroot       2067  1.0  0.0 103264   880 pts/1    S+   00:53   0:00 grep storage

进入 storage-images-data 文件下 data文件可以看到生成一个256*256的目录文件

追踪器和存储我们都已经配置完毕了,用fast自带的客户端我们进行下测试,也可以通过fdfs命令进行上传 先配置下client.conf文件

cd /etc/fdfscp client.conf.sample client.conf
# connect timeout in seconds# default value is 30sconnect_timeout=30# network timeout in seconds# default value is 30snetwork_timeout=60# the base path to store log filesbase_path=/root/fastdfs/fast-client/data-and-log# tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip addresstracker_server=192.168.174.99:22122#standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info# if use connection pool# default value is false# since V4.05use_connection_pool = false# connections whose the idle time exceeds this time will be closed# unit: second# default value is 3600# since V4.05connection_pool_max_idle_time = 3600# if load FastDFS parameters from tracker server# since V4.05# default value is falseload_fdfs_parameters_from_tracker=false# if use storage ID instead of IP address# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# default value is false# since V4.05use_storage_id = false# specify storage ids filename, can use relative or absolute path# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# since V4.05storage_ids_filename = storage_ids.conf#HTTP settingshttp.tracker_server_port=80#use "#include" directive to include HTTP other settiongs##include http.conf

然后我们进行上传测试 

自带客户端上传模式/usr/bin/fdfs_test /etc/fdfs/client.conf upload ~/inits/1.png 命令模式上传/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/inits/1.png

如果出现下面情况说明我们已经配置成功了

但是我们仅仅配置成功了fastdfs ,对于外网访问还是需要nginx去进行配合我们没有配置,fastdfs和nginx的配置我们需要fastdfs-nginx-module_v1.16.tar.gz 这个模块进行,如果已经配置了nginx的小伙伴可以参考nginx平滑升级 追加新模块,或者 通过 nginx里面 --add-module moduleName 进行重新编译安装 

由于我们采用虚拟机进行配置的一切都是新的,所以我们就先从头开始配置就可以了.

创建nginx文件夹 在当前文件夹下创建3个文件夹 一个nginx源文件 nginx-install ,一个nginx编译后的启动文件 nginx-start,一个和fastdfs做关联模块的文件夹nginx-fastdfs

mkdir nginx-fastdfsmkdir nginx-installmkdir nginx-strat

首先解压nginx源文件到nginx-install文件夹下

tar -zxvf nginx-1.10.3.tar.gz -C ~/nginx/nginx-install

然后解压nginx和fast关联模块到nginx-fastdfs文件夹下

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C ~/nginx/nginx-fastdfs

我们先改动下nginx和fast模块的配置信息 cd  /nginx/nginx-fastdfs/fastdfs-nginx-module/src

vi config 去掉CORE_INCS 下的local 修改后如下图

修改完关联模块配置文件后我们进行nginx 编译及安装  --prefix指定默认路径 --add 新增模块

./configure --prefix=/root/nginx/nginx-strat --add-module=/root/nginx/nginx-fastdfs/fastdfs-nginx-module/src

配置完后执行 make 然后执行 make install 进行编译及安装

配置完nginx后 需要对nginx和 fastdfs进行整合配置 拷贝 fastdfs-nginx-module 文件夹下的mod_fastdfs.conf到 /etc/fdfs文件夹下

cp /root/nginx/nginx-fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs

 然后进行修改 配置追踪器路径,group配置等等

# connect timeout in seconds# default value is 30sconnect_timeout=2# network recv and send timeout in seconds# default value is 30snetwork_timeout=30# the base path to store log filesbase_path=/root/fastdfs/fast-nginx/data-and-log# if load FastDFS parameters from tracker server# since V1.12# default value is falseload_fdfs_parameters_from_tracker=true# storage sync file max delay seconds# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# since V1.12# default value is 86400 seconds (one day)storage_sync_file_max_delay = 86400# if use storage ID instead of IP address# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# default value is false# since V1.13use_storage_id = false# specify storage ids filename, can use relative or absolute path# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# since V1.13storage_ids_filename = storage_ids.conf# FastDFS tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip address# valid only when load_fdfs_parameters_from_tracker is truetracker_server=192.168.174.99:22122# the port of the local storage server# the default value is 23000storage_server_port=23000# the group name of the local storage servergroup_name=group1# if the url / uri including the group name# set to false when uri like /M00/00/00/xxx# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx# default value is falseurl_have_group_name = true# path(disk or mount point) count, default value is 1# must same as storage.confstore_path_count=1# store_path#, based 0, if store_path0 not exists, it's value is base_path# the paths must be exist# must same as storage.confstore_path0=/root/fastdfs/fast-storage/storage-images-data#store_path1=/home/yuqing/fastdfs1# standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info# set the log filename, such as /usr/local/apache2/logs/mod_fastdfs.log# empty for output to stderr (apache and nginx error_log file)log_filename=# response mode when the file not exist in the local file system## proxy: get the content from other storage server, then send to client## redirect: redirect to the original storage server (HTTP Header is Location)response_mode=proxy# the NIC alias prefix, such as eth in Linux, you can see it by ifconfig -a# multi aliases split by comma. empty value means auto set by OS type# this paramter used to get all ip address of the local host# default values is emptyif_alias_prefix=# use "#include" directive to include HTTP config file# NOTE: #include is an include directive, do NOT remove the # before include#include http.conf# if support flv# default value is false# since v1.15flv_support = true# flv file extension name# default value is flv# since v1.15flv_extension = flv# set the group count# set to none zero to support multi-group# set to 0  for single group only# groups settings section as [group1], [group2], ..., [groupN]# default value is 0# since v1.14group_count = 0# group settings for group #1# since v1.14# when support multi-group, uncomment following section#[group1]#group_name=group1#storage_server_port=23000#store_path_count=2#store_path0=/home/yuqing/fastdfs#store_path1=/home/yuqing/fastdfs1# group settings for group #2# since v1.14# when support multi-group, uncomment following section as neccessary#[group2]#group_name=group2#storage_server_port=23000#store_path_count=1#store_path0=/home/yuqing/fastdfs

复制FastDFS文件夹下http.conf 和 mime.types 文件到 /et/fdfs文件夹下(如果不配置会出现nginx跳转fastdfs图片服务器连接报错如下图)

复制文件过去

cp /fastdfs/fast-tracker/FastDFS/conf/mime.types /etc/fdfscp /fastdfs/fast-tracker/FastDFS/conf/http.conf /etc/fdfs

基本都配置完了 我们需要配置nginx的信息了进入nginx的conf文件夹下 vi nginx.conf

# 为了防止有些输入无权限访问,我们设置最大权限rootuser  root;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 {        #配置nginx拦截时候需要和配置的storage里面端口号保持一致        listen       8888;        server_name  192.168.174.99;        #charset koi8-r;        #access_log  logs/host.access.log  main;        # 拦截包含 /group1/M00请求,使用fastdfs 采用 nginx_fastdfs_module进行转发       location ~/group([0-9])/M00 {            #alias /fastdfs/storage/data;            ngx_fastdfs_module;       }        #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;        }        # proxy the PHP scripts to Apache listening on 127.0.0.1:80        #        #location ~ \.php$ {        #    proxy_pass   http://127.0.0.1;        #}        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000        #        #location ~ \.php$ {        #    root           html;        #    fastcgi_pass   127.0.0.1:9000;        #    fastcgi_index  index.php;        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;        #}        # deny access to .htaccess files, if Apache's document root        # concurs with nginx's one        #        #location ~ /\.ht {        #    deny  all;        #}    }    # another virtual host using mix of IP-, name-, and port-based configuration    #    #server {    #    listen       8000;    #    listen       somename:8080;    #    server_name  somename  alias  another.alias;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}    # HTTPS server    #    #server {    #    listen       443 ssl;    #    server_name  localhost;    #    ssl_certificate      cert.pem;    #    ssl_certificate_key  cert.key;    #    ssl_session_cache    shared:SSL:1m;    #    ssl_session_timeout  5m;    #    ssl_ciphers  HIGH:!aNULL:!MD5;    #    ssl_prefer_server_ciphers  on;    #    location / {    #        root   html;    #        index  index.html index.htm;    #    }    #}}

 

需要注意的是在nginx.conf文件夹下server的端口号一定要和storage.conf文件下配置的端口号保持一致

因为是虚拟机配置的,我们也需要检查下防火墙端口的关闭,如果关闭了我们就不需要管了,如果想开启,请参考文章 linux 防火墙配置

我们暂时先关闭防火墙进行访问测试

临时生效,重启后复原开启: service iptables start 关闭: service iptables stop2) 永久性生效,重启后不会复原开启: chkconfig iptables on 关闭: chkconfig iptables off

 

通过外网测试我们刚才上传的文件

OK,以上我们单机配置nginx+fastdfs 就配置完了,但是我们所配置的是一个tracke 一个 storage 我们需要的是一个 tracker 多个 storage 小伙伴继续往下看

首先复制一份storage.conf 

cp storage.conf storage_group2.conf

修改storage_group2.conf文件,我们只需修改组名称、端口号、日志存放路径和资源存放路径即可

先创建日志存放路径和资源存放路径依旧在fast-storage文件夹下

mkdir data-and-log-group2mkdir storage-images-data-group2
# is this config file disabled# false for enabled# true for disableddisabled=false# the name of the group this storage server belongs to## comment or remove this item for fetching from tracker server,# in this case, use_storage_id must set to true in tracker.conf,# and storage_ids.conf must be configed correctly.# group名称,如果涉及多个group只需要进行名称及必要地放改变即可group_name=group2# bind an address of this host# empty for bind all addresses of this hostbind_addr=# if bind an address of this host when connect to other servers# (this storage server as a client)# true for binding the address configed by above parameter: "bind_addr"# false for binding any address of this hostclient_bind=true# the storage server portport=23001# connect timeout in seconds# default value is 30sconnect_timeout=30# network timeout in seconds# default value is 30snetwork_timeout=60# heart beat interval in secondsheart_beat_interval=30# disk usage report interval in secondsstat_report_interval=60# the base path to store data and log files# data 和 log 存放路径,指定自己所定义的目录地址即可base_path=/root/fastdfs/fast-storage/data-and-log-group2# max concurrent connections the server supported# default value is 256# more max_connections means more memory will be usedmax_connections=256# the buff size to recv / send data# this parameter must more than 8KB# default value is 64KB# since V2.00buff_size = 256KB# accept thread count# default value is 1# since V4.07accept_threads=1# work thread count, should <= max_connections# work thread deal network io# default value is 4# since V2.00work_threads=4# if disk read / write separated##  false for mixed read and write##  true for separated read and write# default value is true# since V2.00disk_rw_separated = true# disk reader thread count per store base path# for mixed read / write, this parameter can be 0# default value is 1# since V2.00disk_reader_threads = 1# disk writer thread count per store base path# for mixed read / write, this parameter can be 0# default value is 1# since V2.00disk_writer_threads = 1# when no entry to sync, try read binlog again after X milliseconds# must > 0, default value is 200mssync_wait_msec=50# after sync a file, usleep milliseconds# 0 for sync successively (never call usleep)sync_interval=0# storage sync start time of a day, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59sync_start_time=00:00# storage sync end time of a day, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59sync_end_time=23:59# write to the mark file after sync N files# default value is 500write_mark_file_freq=500# path(disk or mount point) count, default value is 1store_path_count=1# store_path#, based 0, if store_path0 not exists, it's value is base_path# the paths must be exist# 图片实际存放了路径store_path0=/root/fastdfs/fast-storage/storage-images-data-group2#store_path1=/home/yuqing/fastdfs2# subdir_count  * subdir_count directories will be auto created under each# store_path (disk), value can be 1 to 256, default value is 256subdir_count_per_path=256# tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip addresstracker_server=192.168.174.99:22122#standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info#unix group name to run this program,#not set (empty) means run by the group of current userrun_by_group=#unix username to run this program,#not set (empty) means run by current userrun_by_user=# allow_hosts can ocur more than once, host can be hostname or ip address,# "*" means match all ip addresses, can use range like this: 10.0.1.[1-15,20] or# host[01-08,20-25].domain.com, for example:# allow_hosts=10.0.1.[1-15,20]# allow_hosts=host[01-08,20-25].domain.comallow_hosts=*# the mode of the files distributed to the data path# 0: round robin(default)# 1: random, distributted by hash codefile_distribute_path_mode=0# valid when file_distribute_to_path is set to 0 (round robin),# when the written file count reaches this number, then rotate to next path# default value is 100file_distribute_rotate_count=100# call fsync to disk when write big file# 0: never call fsync# other: call fsync when written bytes >= this bytes# default value is 0 (never call fsync)fsync_after_written_bytes=0# sync log buff to disk every interval seconds# must > 0, default value is 10 secondssync_log_buff_interval=10# sync binlog buff / cache to disk every interval seconds# default value is 60 secondssync_binlog_buff_interval=10# sync storage stat info to disk every interval seconds# default value is 300 secondssync_stat_file_interval=300# thread stack size, should >= 512KB# default value is 512KBthread_stack_size=512KB# the priority as a source server for uploading file.# the lower this value, the higher its uploading priority.# default value is 10upload_priority=10# the NIC alias prefix, such as eth in Linux, you can see it by ifconfig -a# multi aliases split by comma. empty value means auto set by OS type# default values is emptyif_alias_prefix=# if check file duplicate, when set to true, use FastDHT to store file indexes# 1 or yes: need check# 0 or no: do not check# default value is 0check_file_duplicate=0# file signature method for check file duplicate## hash: four 32 bits hash code## md5: MD5 signature# default value is hash# since V4.01file_signature_method=hash# namespace for storing file indexes (key-value pairs)# this item must be set when check_file_duplicate is true / onkey_namespace=FastDFS# set keep_alive to 1 to enable persistent connection with FastDHT servers# default value is 0 (short connection)keep_alive=0# you can use "#include filename" (not include double quotes) directive to# load FastDHT server list, when the filename is a relative path such as# pure filename, the base path is the base path of current/this config file.# must set FastDHT server list when check_file_duplicate is true / on# please see INSTALL of FastDHT for detail##include /home/yuqing/fastdht/conf/fdht_servers.conf# if log to access log# default value is false# since V4.00use_access_log = false# if rotate the access log every day# default value is false# since V4.00rotate_access_log = false# rotate access log time base, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59# default value is 00:00# since V4.00access_log_rotate_time=00:00# if rotate the error log every day# default value is false# since V4.02rotate_error_log = false# rotate error log time base, time format: Hour:Minute# Hour from 0 to 23, Minute from 0 to 59# default value is 00:00# since V4.02error_log_rotate_time=00:00# rotate access log when the log file exceeds this size# 0 means never rotates log file by log file size# default value is 0# since V4.02rotate_access_log_size = 0# rotate error log when the log file exceeds this size# 0 means never rotates log file by log file size# default value is 0# since V4.02rotate_error_log_size = 0# keep days of the log files# 0 means do not delete old log files# default value is 0log_file_keep_days = 0# if skip the invalid record when sync file# default value is false# since V4.02file_sync_skip_invalid_record=false# if use connection pool# default value is false# since V4.05use_connection_pool = false# connections whose the idle time exceeds this time will be closed# unit: second# default value is 3600# since V4.05connection_pool_max_idle_time = 3600# use the ip address of this storage server if domain_name is empty,# else this domain name will ocur in the url redirected by the tracker serverhttp.domain_name=# the port of the web server on this storage serverhttp.server_port=8888

修改mod_fastdfs.conf文件,修改组名和组个数配置 多个组名称用"/"分隔

# connect timeout in seconds# default value is 30sconnect_timeout=2# network recv and send timeout in seconds# default value is 30snetwork_timeout=30# the base path to store log filesbase_path=/root/fastdfs/fast-nginx/data-and-log# if load FastDFS parameters from tracker server# since V1.12# default value is falseload_fdfs_parameters_from_tracker=true# storage sync file max delay seconds# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# since V1.12# default value is 86400 seconds (one day)storage_sync_file_max_delay = 86400# if use storage ID instead of IP address# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# default value is false# since V1.13use_storage_id = false# specify storage ids filename, can use relative or absolute path# same as tracker.conf# valid only when load_fdfs_parameters_from_tracker is false# since V1.13storage_ids_filename = storage_ids.conf# FastDFS tracker_server can ocur more than once, and tracker_server format is#  "host:port", host can be hostname or ip address# valid only when load_fdfs_parameters_from_tracker is truetracker_server=192.168.174.99:22122# the port of the local storage server# the default value is 23000storage_server_port=23000# the group name of the local storage servergroup_name=group1/group2# if the url / uri including the group name# set to false when uri like /M00/00/00/xxx# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx# default value is falseurl_have_group_name = true# path(disk or mount point) count, default value is 1# must same as storage.confstore_path_count=1# store_path#, based 0, if store_path0 not exists, it's value is base_path# the paths must be exist# must same as storage.confstore_path0=/root/fastdfs/fast-storage/storage-images-data#store_path1=/home/yuqing/fastdfs1# standard log level as syslog, case insensitive, value list:### emerg for emergency### alert### crit for critical### error### warn for warning### notice### info### debuglog_level=info# set the log filename, such as /usr/local/apache2/logs/mod_fastdfs.log# empty for output to stderr (apache and nginx error_log file)log_filename=# response mode when the file not exist in the local file system## proxy: get the content from other storage server, then send to client## redirect: redirect to the original storage server (HTTP Header is Location)response_mode=proxy# the NIC alias prefix, such as eth in Linux, you can see it by ifconfig -a# multi aliases split by comma. empty value means auto set by OS type# this paramter used to get all ip address of the local host# default values is emptyif_alias_prefix=# use "#include" directive to include HTTP config file# NOTE: #include is an include directive, do NOT remove the # before include#include http.conf# if support flv# default value is false# since v1.15flv_support = true# flv file extension name# default value is flv# since v1.15flv_extension = flv# set the group count# set to none zero to support multi-group# set to 0  for single group only# groups settings section as [group1], [group2], ..., [groupN]# default value is 0# since v1.14group_count = 2# group settings for group #1# since v1.14# when support multi-group, uncomment following section[group1]group_name=group1storage_server_port=23000store_path_count=1store_path0=/root/fastdfs/fast-storage/storage-images-data#store_path1=/home/yuqing/fastdfs1# group settings for group #2# since v1.14# when support multi-group, uncomment following section as neccessary[group2]group_name=group2storage_server_port=23001store_path_count=1store_path0=/root/fastdfs/fast-storage/data-and-log-group2

重启服务即可生效重启后我们在通过fastdfs自带的client进行group2上传测试 我们在上传时候指定上传到哪个storage下 及 我们所要指定的分组下面 

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf ~/inits/1.png 192.168.174.99:23001

这样我们测试也通过,以上单机版本多分组模式就搭建完了

转载于:https://my.oschina.net/LevelCoder/blog/1648818

你可能感兴趣的文章
平面上的点和直线上的点一样多
查看>>
文件处理
查看>>
What are words-Chris Medina
查看>>
Office Online简介
查看>>
MySQL数据库优化总结
查看>>
最终排名 结构体
查看>>
网络聊天室
查看>>
前端资料
查看>>
storm 为什么要存在不透明分区事务
查看>>
flink第一个应用
查看>>
Django 路由系统
查看>>
poj2828 BuyTickets 线段树
查看>>
CentOS 配置JDK环境
查看>>
PHP日志压缩下载
查看>>
pyqt5 Button.click 报错:argument 1 has unexpected type 'NoneType'
查看>>
MySQL 表总字段长度的限制 摘录
查看>>
顾沛《抽象代数》2.0"环、子环和商环"习题解答
查看>>
复位电路设计——利用PLL锁定信号(lock)产生复位信号
查看>>
Java精选笔记_集合【List(列表)接口】
查看>>
面向对象----信息的封装和隐藏
查看>>