fastDFS 环境搭建
1、单服务器搭建 fastDFS 环境
环境
本文系统环境是 Linux 系统。CentOS 以 root 用户登陆,安装 1 个 Tracker 和
1 个 Storage,不考虑复杂情况,后面再考虑搭建分布式环境以及性能优化。
# cat /proc/version, uname –a, cat /etc/issue
工具
服务器
Server1:
相关压缩包
安装
将上述三个压缩包拷贝到/root/shitao/fastDFS 目录下
安装
解压缩并编译
1、解压:# tar zxvf
2、切换到解压后文件夹:# cd
3、编译:# ./
一般编译 libfastcommon 辅助包不会存在问题,主要是会影响到 fastdfs。
安装
1、# ./ install
将/usr/lib64/ 文件向/usr/lib/下复制一份
1、# cp /usr/lib64/ /usr/lib
安装
解压缩并编译
1、# tar zxvf
2、# cd
3、# ./
这里第一次安装时用的 + 集成,在 编译时会
发生错误,错误信息如下:
改成较新版本 , 编译正常。
安装
# ./ install
安装后在/usr/bin/目录下有以 fdfs 开头的文件都是编译出来的; 配置文件都放到
/etc/fdfs 文件夹。
把/root/FastDFS/conf 目录下的所有的配置文件都复制到/etc/fdfs 下(亦可通过配置
/root/FastDFS/conf 目录下的三个 .sample 的示例配置文件来配置。这三个文件和
/etc/fdfs 下没有带后缀的同名文件,内容是一样的,并不影响)
# cp -r /root/shitao/fastDFS/ /etc/fdfs/
主要包含一下文件:
服务配置
配置文件 、、 需要授权才能读写,授权指令:
# chmod 777 ***.conf
tacker 服务配置:
: vim /etc/fdfs/
disabled=false
bind_addr=
port=22122
base_path=/root/Data/fastdfs/tracker
storage 服务配置:
: vim /etc/fdfs/
disable=fasle
group_name=group1
bind_addr=
port=23000
buff_size = 256KB
base_path=/root/Data/fastdfs/storage
base_path0=/root/Data/fastdfs/storage
tracker_server=:22122
client 服务配置:
: vim /etc/fdfs/
base_path=/root/Data/fastdfs/client
tracker_server=:22122
在启动 storage 时候,发现无法启动,/root/Data/fastdfs/storage 目录下查看 storage 日志如下:
Storage 需要配置 group_name,以及存在 buff_size 过小,设置 group_name=group1
,buff_size = 256KB,完成后启动 Storage,启动正常。
服务启动
tracker 服务启动:
# /usr/bin/fdfs_trackerd /etc/fdfs/
如果有文件夹不存在错误,则手动创建文件夹:
# mkdir -p /root/Data/fastdfs/tracker
storage 服务启动
# /usr/bin/fdfs_ storaged /etc/fdfs/
重启命令如下:
1、# /usr/bin/fdfs_trackerd /etc/fdfs/ restart
2、# /usr/bin/fdfs_storaged /etc/fdfs/ restart
停止命令如下:
1、# /usr/bin/fdfs_trackerd /etc/fdfs/ stop
2、# /usr/bin/fdfs_storaged /etc/fdfs/ stop
服务启动情况:
#netstat -unltp | grep fdfs
查看客户端信息:
1、# fdfs_monitor /etc/fdfs/
如果提示/root/Data/fastdfs/client 路径不存在,则需要手动创建。
查看 storage 是否注册到 tracker 中:
# /usr/bin/fdfs_monitor /etc/fdfs/
设置开机启动:
# vim /etc/
在开机启动中添加 tracker 服务或者 storage 重启命令,如下。
上传下载测试:
这里我们使用 fastDFS 自带的测试图片进行测试,也可以自己自建文件。
上传文件
Linux 上传指令:
# /usr/bin/fdfs_test /etc/fdfs/ upload /etc/fdfs/conf/
如下图所示上传成功:
查看文件:
Linux 查看指令:
# fdfs_file_info /etc/fdfs/
group1/M00/00/00/
下载文件
Linux 下载指令:
# fdfs_download_file /etc/fdfs/
group1/M00/00/00/
当我们在浏览器输入上传成功图片 url 时,发现浏览器无法访问此地址,如下图。因为我们
还缺少 Nginx 服务器提供 http 服务。所以接下来需要安装 Nginx 相关软件,并做必要的配
置。
Nginx 和 fastdfs-nginx-module 配置:
正式安装 Nginx 之前,需要确认下 Linux 系统是否有编译环境 gcc g++ 开发库,Centos
下的 g++安装包的名字叫做 gcc-c++,这是与 Centos 与 Ubuntu 不同的地方。安装命令如下:
# yum install gcc gcc-c++
执行完该命令后,g++/gfortran 都被安装成功了,或者更新需要执行更新。
安装 Ngnix 需要安装一些依赖 lib 包:
(1)pcre:重写 rewrite;
(2)zlib:gzip 压缩;
(3)openssl:使用 ssl;
pcre 安装
(1)下载:(也可以通过 Windows 下载上传到 Linux 系统,用 rz 指令)
# wget
(2)解压:
# tar
(3)切换目录:
# cd
(4)配置安装路径:
# ./configure --prefix=/usr/local/related/pcre
(5)编译
# make
(6)安装
# make install
zlib 安装
(1)下载:(也可以通过 Windows 下载上传到 Linux 系统,用 rz 指令)
# wget
(2)解压:
# tar zxvf
(3)切换目录:
# cd
(4)配置安装路径:
# ./configure --prefix=/usr/local/related/zlib
(5)编译
# make
(6)安装
# make install
openssl 安装
(1)下载:(也可以通过 Windows 下载上传到 Linux 系统,用 rz 指令)
# wget
(2)解压:
# tar zxvf
(3)切换目录:
# cd
(4)配置安装路径:
# ./config --prefix=/usr/local/related/openssl
(5)编译
# make
(6)安装
# make install
fastdfs-nginx-module 安装
首先下载 fastdfs-nginx-module,下载地址:
解压 fastdfs-nginx-module 包,并修改 fastdfs-nginx-module/src/config 下配置文件,把其中的
一共三处的 local 路径去掉。(即删掉/local)
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
这个是很重要的,不然在 nginx 编译的时候会报错的。
1、# tar zxvf
2、# cp fastdfs-nginx-module/src/ /etc/fdfs/
3、# cd /etc/fdfs
4、# vim
配置如下:
# the base path to store log files
base_path=/root/Data/fastdfs/storage/logs
# valid only when load_fdfs_parameters_from_tracker is true
tracker_server=:22122
# the port of the local storage server
# the default value is 23000
storage_server_port=23000
# the group name of the local storage server
group_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 false
url_have_group_name = true
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
# must same as
store_path0=/root/Data/fastdfs/storage
然后进入 FastDFS 安装时的解压过的目录,将 和 拷贝到/etc/fdfs 目录下:
1、cd /root/shitao/fastDFS/
2、cp /etc/fdfs/
3、cp /etc/fdfs/
在 Nginx 启动时,需要加载 ,不然会报错。
然后再按如下步骤安装 Nginx(也可以先安装 Nginx,再做 fastdfs-nginx-module 相关配
置)。
Nginx 安装
(1)下载:(也可以通过 Windows 下载上传到 Linux 系统,用 rz 指令)
# wget
(2)解压:
# tar zxvf
(3)切换目录:
# cd
(4)配置安装路径:
# ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/ --
pid-path=/usr/local/nginx/ --with-http_ssl_module --with-pcre=/root/shitao/fastDFS/pcre-
--with-zlib=/root/shitao/fastDFS/ --with-openssl=/root/shitao/fastDFS/openssl-
--lock-path=/usr/lock/ --error-log-path=/usr/log/nginx/ --http-log-
path=/usr/log/nginx/ --with-http_gzip_static_module --http-client-body-temp-
path=/usr/tmp/nginx/client --http-proxy-temp-path=/usr/tmp/nginx/proxy --http-fastcgi-temp-
path=/usr/tmp/nginx/fastcgi --http-uwsgi-temp-path=/usr/tmp/nginx/uwsgi --http-scgi-temp-
path=/usr/tmp/nginx/scgi --add-module=/root/shitao/fastDFS/fastdfs-nginx-module/src
备注:/root/shitao/fastDFS/ 是 lib 包的安装路径
这里注意需要添加 fastdfs-nginx-module 模块
--add-module=/root/shitao/fastDFS/fastdfs-nginx-module/src
(5)编译
# make
(6)安装
# make install
配置 storage nginx:
在 配 置 时 更 改 了 nginx 相 关 的 路 径 , 如 上 图 , 这 里 配 置 文 件 的 路 径 是 :
/usr/local/nginx/,默认安装路径是:/usr/local/nginx/conf/.
1、# cd /usr/local/nginx
2、# vim
user root;
server {
listen 80;
server_name localhost;
location /group1/M00/{
root /root/Data/fastdfs/storage/data;
ngx_fastdfs_module;
}
}
配置文件中需要修改 user 权限为 user root,不然在启动 Nginx 会发生权限不够,启动失败。
如果发生 mkdir() "/usr/tmp/nginx/client" failed (2: No such file or directory)这样错误,手动创
建: mkidr –p /usr/tmp/nginx/client 文件夹即可。
启动 Nginx:
# /usr/local/nginx/nginx -c /usr/local/nginx/
查看 Nginx 进程:
# ps -ef|grep nginx
测试 Nginx
在浏览器输入服务器地址:端口号,回车即可看到如下页面,说明 Nginx 配置成功。
上传图片测试:
使用 fastdfs 客户端上传一张图片至服务器:指令如下:
# /usr/bin/fdfs_test /etc/fdfs/ upload
/etc/fdfs/testpic/
上传成功 fastDFS 会返回图片具体信息,图片大小、上传时间、服务器地址、分组、储
存的 url 路径等等信息,详细见下图。
在浏览器输入 fastdfs 返回的 url 地址:
浏览器:
2、分布式 fastDFS 系统搭建
在之前单服务搭建 fastDFS 系统中已经介绍如何搭建 tracker 和 storage 服务,现在有三
台服务:
Server1:,作为 tracker、Nginx 负载均衡以及缓存;
Server2:,作为分组 group_name=group1 的 storage;
Server3:,作为分组 group_name=group2 的 storage2;
FastDFS 分布式系统结构图,如下:
总共 1 台 tracker,2 台 storage(2 个 group),在 CentOS 下测试通过。FastDFS 使用
,nginx 为 ,nginx cache purge 为 。
依赖包安装:
下载如下需要的软件包,前面第一节已经完成
FastDFS 源代码:
nginx 模块源代码:
nginx 服务器源代码:
nginx cache purge 插件源代码:
nginx 依赖的 pcre 库源代码:
nginx 依赖的 zlib 库源代码:
nginx 依赖的 openssl 库源代码:
tracker 安装
在服务器上 上安装 tracker,作为 tracker 服务器。具体请参考 , 节 tracker
内容。
一般只需改动以下几个参数即可:
disabled=false #启用配置文件
port=22122 #设置 tracker 的端口号
base_path=/root/data/fastdfs/tracker #设置 tracker 的数据文件和日志目录(需预先创建)
_port=80 #设置 http 端口号
启动 tracker 之前需要关闭防火墙:
# service iptables status #查看防火墙状态
# service iptables stop #关闭防火墙
启动 tracker 服务:
# /usr/bin/fdfs_trackerd /etc/fdfs/
查看 tracker 服务:
# netstat -unltp | grep fdfs
查看 tracker 服务日志:
# cat /root/data/fastdfs/tracker/logs/
设置开机启动:
# vim /etc/
在开机启动中添加 tracker 服务重启命令,如下。
stroage 安装
在服务器上 、 上分别安装 storage,作为 storage 服务器。
具体请参考 , 节 storage 内容。
作为 group1,配置文件如下:
disabled=false
group_name=group1
port=23000
base_path=/root/Data/fastdfs/storage
store_path0=/root/Data/fastdfs/storage
tracker_server=:22122 #tracker 服务器 ip,端口号
_port=80
作为 group2,配置文件如下:
disabled=false
group_name=group2
port=23000
base_path=/root/Data/fastdfs/storage2
store_path0=/root/Data/fastdfs/storage2
tracker_server=:22122 #tracker 服务器 ip,端口号
_port=80
分别启动 storage 和 storage2 服务,设置开机启动等,具体请参考 节 storage 内容。
storage 上 Nginx 安装
Storage 安装 Nginx 同 节,具体请参考 安装。
storage 配置():
(1) 配置:
# the base path to store log files
base_path=/root/Data/fastdfs/storage/logs
tracker_server=:22122
storage_server_port=23000
# the group name of the local storage server
group_name=group1
url_have_group_name = true
# must same as
store_path_count=1
# must same as
store_path0=/root/Data/fastdfs/storage
group_count = 2
# group settings for group #1
# since
# when support multi-group, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/root/Data/fastdfs/storage
# group settings for group #2
# since
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/Data/fastdfs/storage2
(2)Nginx 配置:
user root;
worker_processes 4;
server {
listen 80;
server_name localhost;
location / {
root html;
index ;
}
location /group1/M00/ {
root /root/Data/fastdfs/storage/date;
ngx_fastdfs_module;
}
Storage2 配置()
(1) 配置:
# the base path to store log files
base_path=/root/Data/fastdfs/storage2/logs
tracker_server=:22122
storage_server_port=23000
# the group name of the local storage server
group_name=group2
url_have_group_name = true
# must same as
store_path_count=1
# must same as
store_path0=/root/Data/fastdfs/storage2
group_count = 2
# group settings for group #1
# since
# when support multi-group, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/root/Data/fastdfs/storage
# group settings for group #2
# since
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/Data/fastdfs/storage2
(2)Nginx 配置:
user root;
worker_processes 4;
server {
listen 80;
server_name localhost;
location / {
root html;
index ;
}
location /group2/M00/ {
root /root/Data/fastdfs/storage/date;
ngx_fastdfs_module;
}
然后启动分别 storage 和 storage2 的 Nginx 服务,具体参考 节,这里不做详细介绍。
tracker 上 Nginx 安装
与 storage 上的 nginx 区别,trcker 上的 Nginx 主要做负载均衡和缓存,所以需要添加 nginx
cache purge 插件。当然之前 pcre 库目录、zlib 库目录、gcc 等基础组件也需要安装,tracker
上不需要 fastdfs-nginx-module,配置替换成 nginx cache
Nginx 安装
运行 nginx 指令./configure 之前需要安装依赖:
nginx cache purge 插件源代码:
nginx 依赖的 pcre 库源代码:
nginx 依赖的 zlib 库源代码:
nginx 依赖的 openssl 库源代码:
然后在运行
./configure --prefix=/usr/local/nginx --sbin-path=/usr/local/nginx/nginx --conf-
path=/usr/local/nginx/ --pid-path=/usr/local/nginx/ --with-http_ssl_module --
with-pcre=/root/shitao/fastdfs/ --with-zlib=/root/shitao/fastdfs/ --with-
openssl=/root/shitao/fastdfs/ --lock-path=/usr/lock/ --error-log-
path=/usr/log/nginx/ --http-log-path=/usr/log/nginx/ --with-
http_gzip_static_module --http-client-body-temp-path=/usr/tmp/nginx/client --http-proxy-temp-
path=/usr/tmp/nginx/proxy --http-fastcgi-temp-path=/usr/tmp/nginx/fastcgi --http-uwsgi-temp-
path=/usr/tmp/nginx/uwsgi --http-scgi-temp-path=/usr/tmp/nginx/scgi --add-
module=/root/shitao/fastdfs/
运行 make 进行编译,确保编译成功。
# make
运行 make install 进行安装
# Make install
至此 nginx 以及 nginx cache purge 插件模块安装完成。
Nginx 配置
编辑/usr/local/nginx 配置文件目录下的 ,设置负载均衡以及缓存
user root;
worker_processes 4;
events {
worker_connections 65535;
use epoll; #can increase processing speed
}
http {
include ;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
tcp_nopush on;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
#cache configure,url/ time/ size
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /var/cache/nginx/proxy_cache/tmp;
# group1 的服务器
upstream fdfs_group1 {
server :80 weight=1 max_fails=2 fail_timeout=30s;
# server :8080 weight=1 max_fails=2 fail_timeout=30s;
}
##设置 group2 的服务器
upstream fdfs_group2 {
server :80 weight=1 max_fails=2 fail_timeout=30s;
#server :8080 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name localhost;
#设置 group1 的负载均衡参数
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
#设置 group2 的负载均衡参数
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
#设置清除缓存的访问权限
location ~ /purge(/.*) {
allow ;
allow
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
至此,nginx 以及 nginx cache purge 插件模块设置完成。
Nginx 服务启动:
进入 nginx 安装目录 sbin 下:/usr/local/nginx,输入命令./nginx -t
configuration file /usr/local/nginx/ test is successful 配置正确,然后启动 nginx:
# /usr/local/nginx/nginx -c /usr/local/nginx/
查看 nginx 服务进程:
# ps -ef|grep nginx
配置
编辑/etc/fdfs/下 文件,配置 client。
# vim /etc/fdfs/
client 配置如下:
# the base path to store log files
base_path=/root/data/fastdfs/tracker
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=:22122
#HTTP settings
_server_port=80
使用/usr/bin/fdfs_test /etc/fdfs/ upload /etc/fdfs/test/ 上传测试图片到
fastdfs 服务器,返回信息如下:
返回 url 地址:
在浏览器 url 地址:
3、双 Tracker FastDFS 系统
双 Tracker 模式,两台 Tracker 做主备关系,当一台 down 机后另一台可以提供正常访问,
提高系统的稳定性。
第一台服务器: group1
第二台服务器: group2
和 都需要需要配置 ,,,
, 文件,两台服务器都需要做负载均衡及缓存。其中相关 lib 依
赖包安装前面都有介绍。
配置如下:
# vim /etc/fdfs/
disabled=false #启用配置文件
bind_addr= #解析主机地址,空则解析所有主机
port=22122 #tracker 服务端口
connect_timeout=30 #连接超时时间 30S
network_timeout=60 #网络超时时间 60S
base_path=/root/Data/fastdfs/tracker #tracker 基础数据存储路径及日志存放路径
max_connections=256 #最大并发连接数
work_threads=4 #工作线程数,最好和 cpu 核数保持一致
store_lookup=0 #选择上传文件模式 0 代表 group 轮询 1 指定特定 group 2 选择空间最大的
store_group=group1 #上传文件组,如果模式为 1,则必须设置成核特定 group 一致的组名
store_server=0 #选择存储服务器上传文件 0 代表轮询,1 根据通过 IP 第的顺序 2 通过优先级
store_path=0 #选择哪块存储盘上传文件 0 代表轮询,2 代表优先最大存储空间盘(路径)
download_server=0 #选择哪台存储服务器下载文件 0 代表轮询,1 代表当前文件上传的源服务器
reserved_storage_space = 10% #系统保留存储空间 10%
配置如下:
# vim /etc/fdfs/
group_name=group1 #存储组名
bind_addr= #解析主机地址,空则解析所有主机
client_bind=true #当连接其他服务器时解析该主机地址
port=23000 #storage 端口 23000
base_path=/root/Data/fastdfs/storage #基础存储数据和日志文件
store_path0=/root/Data/fastdfs/storage #group 所占用的目录或硬盘,有几个写几个
tracker_server=:22122 #指定 tracker1 服务器
tracker_server=:22122 #指定 tracker2 服务器
_port=8088 #指定 storage 访问端口号
配置如下:
# vim /etc/fdfs/
base_path=/root/Data/fastdfs/storage #基础存储数据和日志文件
tracker_server=:22122 #指定 tracker1 服务器
tracker_server=:22122 #指定 tracker2 服务器
_port=8080 #指定 tracker 访问端口号
配置如下:
# vim /etc/fdfs/
base_path=/root/Data/fastdfs/storage/logs #基础存储数据和日志文件
tracker_server=:22122 #指定 tracker1 服务器
tracker_server=:22122 #指定 tracker2 服务器
storage_server_port=23000 #storage 端口 23000
group_name=group1 #存储组名
url_have_group_name = true #url 地址是否包含组名
store_path0=/root/Data/fastdfs/storage #group 所占用的目录,必须跟 storage 一致
group_count = 2 #storage 组数
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/root/Data/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/root/data/fastdfs/storage
Nginx 配置如下:
vim /usr/local/nginx/
user root;
events {
worker_connections 65535;
use epoll;
}
http {
include ;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
tcp_nopush on;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /var/cache/nginx/proxy/var/cache/nginx/proxy_cache/tmp;
upstream fdfs_group1 {
server :8088 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server :8088 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 8080; # tracker balance
server_name localhost;
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
location ~ /purge(/.*) {
allow ;
allow
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
}
server{
listen 8088; #storage
server_name localhost;
location /group1/M00/ {
root /root/Data/fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /;
location = / {
root html;
}
}
执行过程中可能出现防火墙封口:
关闭防火墙:
iptables -L;iptables -F;service iptables stop
1)先启动两个 tracker 服务
# /usr/bin/fdfs_trackerd /etc/fdfs/
2)再启动两个 storage
# /usr/bin/fdfs_storaged /etc/fdfs/
查看服务启动情况
# ps –ef|grep fdfs
查看 和 文件,是否有报错
# tail -f /root/Data/fastdfs/tracker/logs/
3)查看 fdfs_monitor 服务状态信息
# fdfs_monitor /etc/fdfs/
4)启动 Nginx 服务
# /usr/local/nginx/nginx –c /usr/local/nginx/
查看 nginx 启动状态
查看 nginx 日志,看是否存在报错
# tail -f /usr/log/nginx/
5)测试上传下载服务:
上传测试图片:任意一台 tracker 都能上传图片
# /usr/bin/fdfs_test /etc/fdfs/ upload /etc/fdfs/
浏览器下载图片:任意一台 tracker 都能下载图片
:8080/group1/M00/00/00/
:8080/group1/M00/00/00/
附录:fastDFS 常用指令
1、 启动 FastDFS
(1)tracker:
/usr/local/bin/fdfs_trackered %FastDFS%/
(2)storage:
/usr/local/bin/fdfs_storaged %FastDFS%/
也可以简写成:
(1)tracker:
fdfs_trackered %FastDFS%/
(2)storage:
fdfs_storaged %FastDFS%/
其中的%FastDFS%指的是 FastDFS 的所在目录,根据自己的情况进行替换即可。
2、关闭 FastDFS
(1)tracker:
/usr/local/bin/ fdfs_tracker
(2)storage:
/usr/local/bin/ fdfs_storage
或者
killall fdfs_trackered
killall fdfs_storaged
3、 重启 FastDFS
(1)tracker:
/usr/local/bin/ fdfs_trackered
(2)storage:
/usr/local/bin/ fdfs_storaged
4、 查看集群情况
在任意一台 storage(tracker 也可以)
/usr/local/bin/fdfs_monitor %FastDFS%/
5、 删除一个 storage
在任意一台 storage(tracker 也可以)
/usr/local/bin/fdfs_monitor %FastDFS%/ delete group2
6、 测试上传
/usr/local/bin/fdfs_test /etc/fdfs/ upload
附录:Nginx 常用指令
启动: ./nginx
/usr/local/nginx/nginx –c /usr/local/nginx/
重启:./nginx -s reload
停止:./nginx -s stop
pkill -9 nginx