一、安装

(一)下载FastDFS安装包

FastDFS官方论坛:http://www.csource.org

下载1:http://sourceforge.net/projects/fastdfs/files/

下载2:https://code.google.com/p/fastdfs/downloads/list

本手册使用CentOS 6.5 x86_64版操作系统,按照以下网络结构进行部署:

所需要下载的压缩包有:

FastDFS源代码:FastDFS_v5.01.tar.gz

nginx模块源代码:fastdfs-nginx-module_v1.15.tar.gz

nginx服务器源代码:nginx-1.4.7.tar.gz

nginx cache purge插件源代码:ngx_cache_purge-2.1.tar.gz

nginx依赖的pcre库源代码:pcre-8.34.tar.gz

nginx依赖的zlib库源代码:zlib-1.2.8.tar.gz

FastDFS.zip

(二)安装tracker

1. 安装

首先在172.16.1.202上安装FastDFS tracker,使用FastDFS_v5.01.tar.gz源代码包。

  1. 首先将代码包复制到系统的/usr/local/src内(这一步可选),然后使用tar命令解压。
  2. [root@tracker opt]# cp FastDFS_v5.01.tar.gz /usr/local/src/
    [root@tracker opt]# cd /usr/local/src/
    [root@tracker src]# tar zxf FastDFS_v5.01.tar.gz
    [root@tracker src]# cd FastDFS
    [root@tracker FastDFS]# ll
    总用量 128
    drwxrwxr-x. 3 500 500 4096 2月 6 18:07 client
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 common
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 conf
    -rw-rw-r--. 1 500 500 35067 7月 28 2008 COPYING-3_0.txt
    -rw-rw-r--. 1 500 500 29691 2月 2 13:17 HISTORY
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 init.d
    -rw-rw-r--. 1 500 500 7639 1月 5 14:08 INSTALL
    -rwxrwxr-x. 1 500 500 5531 12月 7 15:19 make.sh
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 php_client
    -rw-rw-r--. 1 500 500 2380 7月 28 2008 README
    -rwxrwxr-x. 1 500 500 1768 4月 12 2010 restart.sh
    -rwxrwxr-x. 1 500 500 1680 4月 10 2010 stop.sh
    drwxrwxr-x. 4 500 500 4096 2月 6 18:07 storage
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 test
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 tracker

运行make.sh,确认make成功。期间如果有错误,可能会是缺少依赖的软件包,需安装后再次make。

[root@tracker FastDFS]# ./make.sh

运行make.sh install,确认install成功。

[root@tracker FastDFS]# ./make.sh install

安装完成后,所有可执行文件在/usr/local/bin下,以fdfs开头:

[root@tracker FastDFS]# ll /usr/local/bin/fdfs*
-rwxr-xr-x. 1 root root 522918 3月 25 14:57 /usr/local/bin/fdfs_appender_test
-rwxr-xr-x. 1 root root 522871 3月 25 14:57 /usr/local/bin/fdfs_appender_test1
-rwxr-xr-x. 1 root root 514023 3月 25 14:57 /usr/local/bin/fdfs_append_file
-rwxr-xr-x. 1 root root 513433 3月 25 14:57 /usr/local/bin/fdfs_crc32
-rwxr-xr-x. 1 root root 513967 3月 25 14:57 /usr/local/bin/fdfs_delete_file
-rwxr-xr-x. 1 root root 514377 3月 25 14:57 /usr/local/bin/fdfs_download_file
-rwxr-xr-x. 1 root root 514133 3月 25 14:57 /usr/local/bin/fdfs_file_info
-rwxr-xr-x. 1 root root 525064 3月 25 14:57 /usr/local/bin/fdfs_monitor
-rwxr-xr-x. 1 root root 1179682 3月 25 14:57 /usr/local/bin/fdfs_storaged
-rwxr-xr-x. 1 root root 529845 3月 25 14:57 /usr/local/bin/fdfs_test
-rwxr-xr-x. 1 root root 527774 3月 25 14:57 /usr/local/bin/fdfs_test1
-rwxr-xr-x. 1 root root 655809 3月 25 14:57 /usr/local/bin/fdfs_trackerd
-rwxr-xr-x. 1 root root 514213 3月 25 14:57 /usr/local/bin/fdfs_upload_appender
-rwxr-xr-x. 1 root root 514999 3月 25 14:57 /usr/local/bin/fdfs_upload_file

所有配置文件在/etc/fdfs下

[root@tracker FastDFS]# ll /etc/fdfs/
总用量 60
-rw-r--r--. 1 root root 1461 3月 13 15:15 client.conf
-rw-r--r--. 1 root root 858 3月 13 15:15 http.conf
-rw-r--r--. 1 root root 31172 3月 13 15:15 mime.types
-rw-r--r--. 1 root root 3837 3月 25 10:03 mod_fastdfs.conf
-rw-r--r--. 1 root root 7515 3月 24 10:36 storage.conf
-rw-r--r--. 1 root root 6989 3月 13 15:15 tracker.conf

2. 配置

编辑配置文件目录下的tracker.conf,设置相关信息并保存

[root@tracker FastDFS]# vim /etc/fdfs/tracker.conf

#一般只需改动以下几个参数即可:
disabled=false #启用配置文件
port=22122 #设置tracker的端口号
base_path=/fdfs/tracker #设置tracker的数据文件和日志目录(需预先创建)
http.server_port=8080 #设置http端口号
#如需要进行性能调优,可以参照附录的配置文件的详细说明。

3. 运行

运行tracker之前,先要把防火墙中对应的端口打开(本例中为22122)

[root@tracker FastDFS]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT
[root@tracker FastDFS]# /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]

启动tracker,确认启动是否成功。(查看是否对应端口22122是否开始监听)

[root@tracker FastDFS]# /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
[root@tracker FastDFS]# netstat -unltp | grep fdfs
tcp 0 0.0.0.0:22122 0.0.0.0:* LISTEN 1766/fdfs_trackerd

可查看tracker的日志是否启动成功或是否有错误

[root@tracker FastDFS]# cat /fdfs/tracker/logs/trackerd.log

设置开机自动启动

[root@tracker FastDFS]# vim /etc/rc.d/rc.local

将运行命令行添加进文件:/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

(三)安装Storage

1. 安装

首先在172.16.1.203上安装FastDFS tracker,使用FastDFS_v5.01.tar.gz源代码包。

  1. 首先将代码包复制到系统的/usr/local/src内(这一步可选),然后使用tar命令解压
  2. [root@storage1 opt]# cp FastDFS_v5.01.tar.gz /usr/local/src/
    [root@storage1 opt]# cd /usr/local/src/
    [root@storage1 src]# tar zxf FastDFS_v5.01.tar.gz
    [root@storage1 src]# cd FastDFS
    [root@storage1 FastDFS]# ll
    总用量 128
    drwxrwxr-x. 3 500 500 4096 2月 6 18:07 client
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 common
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 conf
    -rw-rw-r--. 1 500 500 35067 7月 28 2008 COPYING-3_0.txt
    -rw-rw-r--. 1 500 500 29691 2月 2 13:17 HISTORY
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 init.d
    -rw-rw-r--. 1 500 500 7639 1月 5 14:08 INSTALL
    -rwxrwxr-x. 1 500 500 5531 12月 7 15:19 make.sh
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 php_client
    -rw-rw-r--. 1 500 500 2380 7月 28 2008 README
    -rwxrwxr-x. 1 500 500 1768 4月 12 2010 restart.sh
    -rwxrwxr-x. 1 500 500 1680 4月 10 2010 stop.sh
    drwxrwxr-x. 4 500 500 4096 2月 6 18:07 storage
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 test
    drwxrwxr-x. 2 500 500 4096 2月 6 18:07 tracker

运行make.sh,确认make成功。期间如果有错误,可能会是缺少依赖的软件包,需安装后再次make。

[root@tracker FastDFS]# ./make.sh

运行make.sh install,确认install成功。

[root@tracker FastDFS]# ./make.sh install

安装完成后,所有可执行文件在/usr/local/bin下,以fdfs开头:

[root@tracker FastDFS]# ll /usr/local/bin/fdfs*
-rwxr-xr-x. 1 root root 522918 3月 25 14:57 /usr/local/bin/fdfs_appender_test
-rwxr-xr-x. 1 root root 522871 3月 25 14:57 /usr/local/bin/fdfs_appender_test1
-rwxr-xr-x. 1 root root 514023 3月 25 14:57 /usr/local/bin/fdfs_append_file
-rwxr-xr-x. 1 root root 513433 3月 25 14:57 /usr/local/bin/fdfs_crc32
-rwxr-xr-x. 1 root root 513967 3月 25 14:57 /usr/local/bin/fdfs_delete_file
-rwxr-xr-x. 1 root root 514377 3月 25 14:57 /usr/local/bin/fdfs_download_file
-rwxr-xr-x. 1 root root 514133 3月 25 14:57 /usr/local/bin/fdfs_file_info
-rwxr-xr-x. 1 root root 525064 3月 25 14:57 /usr/local/bin/fdfs_monitor
-rwxr-xr-x. 1 root root 1179682 3月 25 14:57 /usr/local/bin/fdfs_storaged
-rwxr-xr-x. 1 root root 529845 3月 25 14:57 /usr/local/bin/fdfs_test
-rwxr-xr-x. 1 root root 527774 3月 25 14:57 /usr/local/bin/fdfs_test1
-rwxr-xr-x. 1 root root 655809 3月 25 14:57 /usr/local/bin/fdfs_trackerd
-rwxr-xr-x. 1 root root 514213 3月 25 14:57 /usr/local/bin/fdfs_upload_appender
-rwxr-xr-x. 1 root root 514999 3月 25 14:57 /usr/local/bin/fdfs_upload_file

所有配置文件在/etc/fdfs下

[root@storage1 FastDFS]# ll /etc/fdfs/
总用量 60
-rw-r--r--. 1 root root 1461 3月 13 15:15 client.conf
-rw-r--r--. 1 root root 858 3月 13 15:15 http.conf
-rw-r--r--. 1 root root 31172 3月 13 15:15 mime.types
-rw-r--r--. 1 root root 3837 3月 25 10:03 mod_fastdfs.conf
-rw-r--r--. 1 root root 7515 3月 24 10:36 storage.conf
-rw-r--r--. 1 root root 6989 3月 13 15:15 tracker.conf

2. 配置

编辑配置文件目录下的storage.conf,设置相关信息并保存

[root@tracker FastDFS]# vim /etc/fdfs/storage.conf

#一般只需改动以下几个参数即可:
disabled=false #启用配置文件

group_name=group1 #组名,根据实际情况修改

port=23000        #设置storage的端口号

base_path=/fdfs/storage #设置storage的日志目录(需预先创建)

store_path_count=1      #存储路径个数,需要和store_path个数匹配

store_path0=/fdfs/storage #存储路径

tracker_server=172.16.1.202:22122 #tracker服务器的IP地址和端口号

http.server_port=8080 #设置http端口号

#如需要进行性能调优,可以参照附录的配置文件的详细说明。

3. 运行

运行tracker之前,先要把防火墙中对应的端口打开(本例中为23000)

[root@tracker FastDFS]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT
[root@tracker FastDFS]# /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]

启动tracker,确认启动是否成功。(查看是否对应端口23000是否开始监听)

[root@tracker FastDFS]# /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf restart

data path: /fdfs/storage/data, mkdir sub dir...

mkdir data path: 00 ...

mkdir data path: 01 ...

mkdir data path: 02 ...

mkdir data path: 03 ...

...

data path: /fdfs/storage/data, mkdir sub dir done.

[root@storage1 FastDFS]# netstat -unltp | grep fdfs

tcp    0    0.0.0.0:23000       0.0.0.0:*           LISTEN      1766/fdfs_storaged

可查看tracker的日志是否启动成功或是否有错误

[root@tracker FastDFS]# cat /fdfs/storage/logs/storaged.log

确认启动成功后,可以运行fdfs_monitor查看storage服务器是否已经登记到tracker服务器

[root@storage1 FastDFS]# /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf
[2014-03-26 01:51:20] DEBUG - base_path=/fdfs/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 172.16.1.202:22122 group count: 1 Group 1:
group name = group1
disk total space = 27789 MB
disk free space = 23920 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 8080
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0 Storage 1:
id = 172.16.1.203
ip_addr = 172.16.1.203 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 01:48:19
up time = 2014-03-26 01:48:19
total storage = 27789 MB
free storage = 23920 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id=
if_trunk_server= 0
total_upload_count = 0
success_upload_count = 0
total_append_count = 0
success_append_count = 0
total_modify_count = 0
success_modify_count = 0
total_truncate_count = 0
success_truncate_count = 0
total_set_meta_count = 0
success_set_meta_count = 0
total_delete_count = 0
success_delete_count = 0
total_download_count = 0
success_download_count = 0
total_get_meta_count = 0
success_get_meta_count = 0
total_create_link_count = 0
success_create_link_count = 0
total_delete_link_count = 0
success_delete_link_count = 0
total_upload_bytes = 0
success_upload_bytes = 0
total_append_bytes = 0
success_append_bytes = 0
total_modify_bytes = 0
success_modify_bytes = 0
stotal_download_bytes = 0
success_download_bytes = 0
total_sync_in_bytes = 0
success_sync_in_bytes = 0
total_sync_out_bytes = 0
success_sync_out_bytes = 0
total_file_open_count = 0
success_file_open_count = 0
total_file_read_count = 0
success_file_read_count = 0
total_file_write_count = 0
success_file_write_count = 0
last_heart_beat_time = 2014-03-26 01:51:03
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00

看到“172.16.1.203 ACTIVE”即可确认storage运行正常。

 

设置开机自动启动

[root@storage FastDFS]# vim /etc/rc.d/rc.local

将运行命令行添加进文件:

/usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf restart

之后依次在172.16.1.204~208上全部安装上storage并确认运行正常。注意配置文件中group名参数需要根据实际情况调整,本例中group是这样分配的:

group1:172.16.1.203,172.16.1.204

group2:172.16.1.205,172.16.1.206

group3:172.16.1.207,172.16.1.208

另外每个group中所有storage的端口号必须一致。

(四) 在storage上安装nginx

在storage上安装的nginx主要为了提供http的访问服务,同时解决group中storage服务器的同步延迟问题。

1. 安装

首先在172.16.1.203上安装nginx,使用nginx-1.4.7.tar.gz源代码包以及FastDFS的nginx插件fastdfs-nginx-module_v1.15.tar.gz。

首先将代码包和插件复制到系统的/usr/local/src内(可选),然后使用tar命令解压

运行./configure进行安装前的设置,主要设置安装路径、FastDFS插件模块目录、pcre库目录、zlib库目录。

如果提示错误,可能缺少依赖的软件包,需先安装依赖包,再次运行./configure

[root@storage1 nginx-1.4.7]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src --with-pcre=/usr/local/src/pcre-8.34/ --with-zlib=/usr/local/src/zlib-1.2.8

运行make进行编译,确保编译成功。运行make install进行安装

[root@storage1 nginx-1.4.7]# make
[root@storage1 nginx-1.4.7]# make install

将FastDFS的nginx插件模块的配置文件copy到FastDFS配置文件目录。

[root@storage1 nginx-1.4.7]# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

安装完成后,nginx所有文件在/usr/local/nginx下

2. 配置

l 编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置添加storage信息并保存。

[root@storage1 nginx-1.4.7]# vim /usr/local/nginx/conf/nginx.conf
将server段中的listen端口号改为8080:
listen 8080;
在server段中添加:
location ~/group[1-3]/M00 {
root /fdfs/storage/data;
ngx_fastdfs_module;
}

l 编辑/etc/fdfs配置文件目录下的mod_fastdfs.conf,设置storage信息并保存。

[root@storage1 nginx-1.4.7]# vim /etc/fdfs/mod_fastdfs.conf

一般只需改动以下几个参数即可:
base_path=/fdfs/storage #保存日志目录
tracker_server=172.16.1.202:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
group_name=group1 #当前服务器的group名
url_have_group_name = true #文件url中是否有group名
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/fdfs/storage #存储路径
http.need_find_content_type=true #从文件扩展名查找文件类型(nginx时为true)
group_count = 3 #设置组的个数
在末尾增加3个组的具体信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fdfs/storage [group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/fdfs/storage [group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/fdfs/storage

建立M00至存储目录的符号连接

[root@storage1 nginx-1.4.7]# ln -s /fdfs/storage/data /fdfs/storage/data/M00
[root@storage1 nginx-1.4.7]# ll /fdfs/storage/data/M00
lrwxrwxrwx. 1 root root 19 3月 26 03:44 /fdfs/storage/data/M00 -> /fdfs/storage/data/

3. 运行

运行nginx之前,先要把防火墙中对应的端口打开(本例中为8080)

[root@storage1 nginx-1.4.7]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
[root@storage1 nginx-1.4.7]# /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]

启动nginx,确认启动是否成功。(查看是否对应端口8080是否开始监听)

[root@storage1 nginx-1.4.7]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=40638
[root@storage1 nginx-1.4.7]# netstat -unltp | grep nginx
tcp 0 0.0.0.0:8080 0.0.0.0:* LISTEN 40639/nginx

查看nginx的日志是否启动成功或是否有错误。

[root@storage1 nginx-1.4.7]# cat /usr/local/nginx/logs/error.log

在error.log中没有错误,既启动成功。可以打开浏览器,直接访问http://172.16.1.203:8080,查看是否弹出nginx欢迎页面。

之后依次在172.16.1.204~208上全部安装上nginx并确认运行正常。

设置开机自动启动。

[root@storage1 nginx-1.4.7]# vim /etc/rc.d/rc.local
将运行命令行添加进文件:/usr/local/nginx/sbin/nginx

(五)在tracker上安装nginx

在storage上安装的nginx主要为了提供http的访问服务,同时解决group中storage服务器的同步延迟问题。

1. 安装

首先在172.16.1.203上安装nginx,使用nginx-1.4.7.tar.gz源代码包以及FastDFS的nginx插件fastdfs-nginx-module_v1.15.tar.gz。

首先将代码包和插件复制到系统的/usr/local/src内(可选),然后使用tar命令解压

l 运行./configure进行安装前的设置,主要设置安装路径、nginx cache purge插件模块目录、pcre库目录、zlib库目录。

如果提示错误,可能缺少依赖的软件包,需先安装依赖包,再次运行./configure

[root@tracker nginx-1.4.7]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.1 --with-pcre=/usr/local/src/pcre-8.34/ --with-zlib=/usr/local/src/zlib-1.2.8

运行make进行编译,确保编译成功。运行make install进行安装

[root@tracker nginx-1.4.7]# make
[root@tracker nginx-1.4.7]# make install

2. 配置

编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置添加storage信息并保存。

[root@tracker nginx-1.4.7]# vim /usr/local/nginx/conf/nginx.conf
worker_processes  4;                  #根据CPU核心数而定
events {
worker_connections 65535; #最大链接数
use epoll; #新版本的Linux可使用epoll加快处理性能
}
http {
#设置缓存参数
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
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_cache/tmp;
#设置group1的服务器
upstream fdfs_group1 {
server 172.16.1.203:8080 weight=1 max_fails=2 fail_timeout=30s;
server 172.16.1.204:8080 weight=1 max_fails=2 fail_timeout=30s;
}
#设置group2的服务器
upstream fdfs_group2 {
server 172.16.1.205:8080 weight=1 max_fails=2 fail_timeout=30s;
server 172.16.1.206:8080 weight=1 max_fails=2 fail_timeout=30s;
}
#设置group3的服务器
upstream fdfs_group3 {
server 172.16.1.207:8080 weight=1 max_fails=2 fail_timeout=30s;
server 172.16.1.208:8080 weight=1 max_fails=2 fail_timeout=30s;
} server {
#设置服务器端口
listen 8080;
#设置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;
}
#设置group3的负载均衡参数
location /group3/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_group3;
expires 30d;
}
#设置清除缓存的访问权限
location ~ /purge(/.*) {
allow 127.0.0.1;
allow 172.16.1.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}

3. 运行

运行nginx之前,先要把防火墙中对应的端口打开(本例中为8080)

[root@tracker nginx-1.4.7]# iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
[root@tracker nginx-1.4.7]# /etc/init.d/iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]

启动nginx,确认启动是否成功。(查看是否对应端口8080是否开始监听)

[root@tracker nginx-1.4.7]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=40638
[root@tracker nginx-1.4.7]# netstat -unltp | grep nginx
tcp 0 0.0.0.0:8080 0.0.0.0:* LISTEN 40639/nginx

尝试上传一个文件到FastDFS,然后访问试试。先配置client.conf文件

[root@tracker nginx-1.4.7]# vim /etc/fdfs/client.conf
修改以下参数:
base_path=/fdfs/tracker #日志存放路径
tracker_server=172.16.1.202:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=8080 #tracker服务器的http端口号

4. 上传

使用/usr/local/bin/fdfs_upload_file上传一个文件,程序会自动返回文件的URL

[root@tracker nginx-1.4.7]# /usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /mnt/monk.jpg
group3/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg

然后使用浏览器访问:

http://172.16.1.202:8080/group3/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg

查看nginx的access.log日志,可以看到访问返回200成功。

[root@tracker nginx-1.4.7]# tail -n 10 -f /usr/local/nginx/logs/access.log
172.16.1.201 - - [26/Mar/2014:13:15:00 +0800] "GET /group3/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg HTTP/1.1" 200 35374 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"

查看nginx的cache目录,可以看到已经生成了缓存文件

[root@tracker nginx-1.4.7]# ll /var/cache/nginx/proxy_cache/ -R
/var/cache/nginx/proxy_cache/:
总用量 8
drwx------. 3 nobody nobody 4096 3月 26 12:57 6
drwxr-xr-x. 2 nobody root 4096 3月 26 13:14 tmp /var/cache/nginx/proxy_cache/6:
总用量 4
drwx------. 2 nobody nobody 4096 3月 26 13:08 11 /var/cache/nginx/proxy_cache/6/11:
总用量 36
-rw-------. 1 nobody nobody 35686 3月 26 13:08 b1f6fb1f7266f796765b6d6965021116

如果要手动清除缓存,可以在文件URL之前加上purge:

http://172.16.1.202:8080/purge/group3/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg

设置开机自动启动。

[root@tracker nginx-1.4.7]# vim /etc/rc.d/rc.local
将运行命令行添加进文件:/usr/local/nginx/sbin/nginx

二、使用

1. 上传文件

FastDFS提供了多种方式上传文件:

  • 使用fdfs_upload_file上传(之前已经有演示)
  • 使用C语言客户端接口上传
  • 使用PHP客户端接口上传
  • 使用Java客户端接口上传
  • 使用Python客户端接口上传
  • 使用.NET客户端接口上传

根据具体情况选择使用。上传均支持断点续传。

2. 下载文件

  • 使用fdfs_download_file通过tracker服务器下载
  • 使用nginx通过http方式直接从storage下载(支持断点续传,作者推荐)

3. 监视服务器资源

使用fdfs_monitor查看tracker和所有group的运行情况。

[root@tracker tmp]# /usr/local/bin/fdfs_monitor /etc/fdfs/client.conf
2014-03-26 15:01:07] DEBUG - base_path=/fdfs/tracker, 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 172.16.1.202:22122 group count: 3 Group 1:
group name = group1
disk total space = 27789 MB
disk free space = 23825 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8080
store path count = 1
subdir count per path = 256
current write server index = 1
current trunk file id = 0 Storage 1:
id = 172.16.1.203
ip_addr = 172.16.1.203 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 01:48:19
up time =
total storage = 27789 MB
free storage = 23844 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id=
if_trunk_server= 0
total_upload_count = 1
success_upload_count = 1
......
Storage 2:
id = 172.16.1.204
ip_addr = 172.16.1.204 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 18:53:19
up time = 2014-03-26 18:53:19
total storage = 27789 MB
free storage = 23825 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id= 172.16.1.203
if_trunk_server= 0
...... Group 2:
group name = group2
disk total space = 27789 MB
disk free space = 23825 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8080
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0 Storage 1:
id = 172.16.1.205
ip_addr = 172.16.1.205 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 19:37:36
up time = 2014-03-26 19:37:36
total storage = 27789 MB
free storage = 23825 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id=
......
Storage 2:
id = 172.16.1.206
ip_addr = 172.16.1.206 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 22:38:04
up time = 2014-03-26 22:38:04
total storage = 27789 MB
free storage = 23825 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id= 172.16.1.205
...... Group 3:
group name = group3
disk total space = 27789 MB
disk free space = 23825 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8080
store path count = 1
subdir count per path = 256
current write server index = 1
current trunk file id = 0 Storage 1:
id = 172.16.1.207
ip_addr = 172.16.1.207 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 22:50:28
up time = 2014-03-26 22:50:28
total storage = 27789 MB
free storage = 23825 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id= 172.16.1.208
......
Storage 2:
id = 172.16.1.208
ip_addr = 172.16.1.208 ACTIVE
http domain =
version = 5.01
join time = 2014-03-26 22:49:37
up time = 2014-03-26 22:49:37
total storage = 27789 MB
free storage = 23825 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8080
current_write_path = 0
source storage id=
......

配置FastDFS的更多相关文章

  1. 安装配置fastDFS文件服务器 - Linux

    一.配置linux环境 1.新建虚拟机 把上次安装的CentOS7的文件复制一份,并改名 打开VM>打开虚拟机,选择刚才复制好的虚拟机,并启动.这样做的目的主要是为了保留一份最基础的母本,为了将 ...

  2. centos7配置fastdfs集群(5.09)

    centos7配置fastdfs集群(5.09) 2017年03月10日 23:34:26 带鱼兄 阅读数 1564    版权声明:本文为博主原创文章,转载请注明出处. https://blog.c ...

  3. 在虚拟机中配置FastDFS+Nginx模块

    先上部署图 提示一下, ip 192.168.72.138 上面部署了两个group, 分别为 group1和g2. 另外, 同组之内的 port 要保持一致. 一.安装准备 1. #每台机器都添加两 ...

  4. 集群 安装 配置FastDFS

    FastDFS 集群 安装 配置 这篇文章介绍如何搭建FastDFS 集群 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载 ...

  5. ubuntu配置fastdfs+Nginx

    全程参考主线来自:https://blog.csdn.net/xiaoxie762457/article/details/80690841(文中图片失效不造成影响) Nginx安装主要参考:https ...

  6. 如何在Linux Centos上部署配置FastDFS

    一.准备工作: 1.准备下面包文件 -- FastDFS_v5.08.tar.gz -- libevent-2.0.22-stable.tar.gz -- libfastcommon-master.z ...

  7. centos6.5安装配置fastdfs+nginx实现分布式图片服务器

    一.准备 yum groupinstall -y "Development Tools"yum install -y wget libevent-devel pcre-devel ...

  8. centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置

    前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...

  9. FastDFS 自动部署和配置脚本

    写了一个自动安装和配置FastDFS的脚本,还没有写好关于nginx的配置.先贴上,如下: 自动安装FastDFS,(这部分是之前同事写好的) #!/bin/bash #instll gcc echo ...

随机推荐

  1. Python读取xml报错解析--ExpatError: not well-formed (invalid token)

    xml文件内容如代码所示存入的名字为login.xml: <?xml version="1.0" encoding="utf-8"?> <in ...

  2. Avalon学习

    1.认识AvalonAvalon是一个简单易用的迷你的MVVM框架,作者是博客园的司徒正美,去哪儿.搜狐等等都用这个框架.没有任何依赖,兼容性非常好,支持IE6,不到5000行,压缩后不到50KB.官 ...

  3. DDD的思考

    概述 DDD领域驱动设计,它是对面向对象的的分析和设计(OOAD,Object Orient Analysis Design)的一个补充,对技术框架进行了分层规划,同时对每个类进行了策略和类型划分.领 ...

  4. apache linux 安装

    sudo apt-get install zlib1g-dev 1.到官网下载,然后解压httpd-2.4.18.tar.gz 2.下载apr-1.5.2.tar.gz并解压    http://ar ...

  5. WCF消息拦截,利用消息拦截做身份验证服务

    本文参考  http://blog.csdn.net/tcjiaan/article/details/8274493  博客而写 添加对信息处理的类 /// <summary> /// 消 ...

  6. ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statemen

    转自:http://www.cnblogs.com/iosdev/archive/2013/07/15/3190431.html mysql 配置文件目录:/etc/my.cnf root 密码为空的 ...

  7. win8.1/win10 UEFI + GPT 安装(测试机型:华硕S56CM)

    本教程简要介绍在UEFI 启动模式下在GPT分区表中,最简单的方法安装 Windows 10 x64 位系统.(并非傻瓜教程,安装者总要有一定的经验基础)下面先简单介绍一下UEFI和GTP. UEFI ...

  8. JavaScript中new和this

    [TOC] new var obj = new Base(); 相当于: var obj = {}; //创建空对象obj obj.__proto__ = Base.prototype; //将空对象 ...

  9. bat学习

    http://www.cnblogs.com/gaohongchen01/p/4042047.html http://www.cnblogs.com/amylis_chen/p/3585339.htm ...

  10. POJ 1840 Eqs 二分+map/hash

    Description Consider equations having the following form: a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 The co ...