1. FastDFS 安装

安装VMware 虚拟机

安装CentOS7 虚拟机。

FastDFS—tracker 安装

分别在 192.168.101.3 和 192.168.101.4 上安装tracker。注:初次安装可只安装一台 tracker,快速体验。

下载

tracker 和 storage 使 用 相 同 的 安 装 包 , 下 载 地 址 : https://github.com/happyfish100/FastDFS

本教程下载:FastDFS_v5.05.tar.gz

FastDFS 安装环境

FastDFS 是 C 语言开发,建议在 linux 上运行,本教程使用 Centos7 作为安装环境。

安装 FastDFS 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,需要安装 gcc:yum install gcc-c++

安装libevent

FastDFS 依赖 libevent 库,需要安装: yum -y install libevent

安装libfastcommon

libfastcommon 是 FastDFS 官方提供的,libfastcommon 包含了 FastDFS 运行所需要的一些基础库。

将 libfastcommonV1.0.7.tar.gz 拷贝至/usr/local/下cd /usr/local

tar -zxvf libfastcommonV1.0.7.tar.gz cd libfastcommon-1.0.7

./make.sh

./make.sh install

注意:libfastcommon 安装好后会自动将库文件拷贝至/usr/lib64 下,由于 FastDFS 程序引用 usr/lib 目录所以需要将/usr/lib64 下的库文件拷贝至/usr/lib 下。 {#注意libfastcommon-安装好后会自动将库文件拷贝至usrlib64-下由于-fastdfs-程序引用-usrlib-目录所以需要将usrlib64-下的库文件拷贝至usrlib-下 .unnumbered}

要拷贝的文件如下:

image.png

tracker 编译安装

将 FastDFS_v5.05.tar.gz 拷贝至/usr/local/下tar -zxvf FastDFS_v5.05.tar.gz

cd FastDFS

./make.sh 编译

./make.sh install 安装

安装成功将安装目录下的 conf 下的文件拷贝到/etc/fdfs/下。

image.png

配置

安装成功后进入/etc/fdfs 目录:

image.png

拷贝一份新的tracker 配置文件:

cp tracker.conf.sample tracker.conf 修改tracker.conf

vi tracker.conf

base_path=/home/yuqing/FastDFS 改为:

base_path=/home/FastDFS 配置 http 端口: http.server_port=80

启动

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

启动的日志显示先停止 5619 进程(实际环境不是 5619)再启动,如下图:

image.png

注意:如果没有显示上图要注意是否正常停止原有进程。

FastDFS—storage 安装

分别在 192.168.101.5、192.168.101.6、192.168.101.7、192.168.101.8 上安装 storage。

注:初次安装可只安装一台 storage,快速体验。

安装libevent

同 tracker 安装

安装libfastcommon

同 tracker 安装。

storage 编译安装

同 tracker 编译安装。

配置

安装成功后进入/etc/fdfs 目录:

image.png

拷贝一份新的storage 配置文件:

cp storage.conf.sample storage.conf

修改storage.conf vi storage.conf

group_name=group1

base_path=/home/yuqing/FastDFS 改为:base_path=/home/ fastdfs

store_path0=/home/yuqing/FastDFS

改为:store_path0=/home/fastdfs/fdfs_storage 如果有多个挂载磁盘则定义多个 store_path,如下

store_path1=…

store_path2=…

tracker_server=192.168.101.3:22122配置 tracker 服务器:IP #如果有多个则配置多个tracker tracker_server=192.168.101.4:22122

配置 http 端口http.server_port=80

启动

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

启动的日志显示先停止 8931 进程(实际环境不是 8931)再启动,如下图:

image.png

注意:如果没有显示上图要注意是否正常停止原有进程。

上传图片测试

  1. 通过fdfs_test 程序

FastDFS 安装成功可通过/usr/bin/fdfs_test 程序来测试上传、下载等操作。

修改/etc/fdfs/client.conf

tracker_server 根据自己部署虚拟机的情况配置 。

base_path=/home/fastdfs
tracker_server=192.168.101.3:22122
tracker_server=192.168.101.4:22122

使用格式:

/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件

比如将/home 下的图片上传到 FastDFS 中:

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.png

打印如下日志:

 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.

 [2015-05-18 02:07:10] DEBUG - base_path=/home/FastDFS,
 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=192.168.101.5, port=23000

 server 2. group_name=, ip_addr=192.168.101.6, port=23000

 group_name=group1, ip_addr=192.168.101.5, port=23000

 storage_upload_by_filename

 group_name=group1,

 remote_filename=M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485.png

 source ip address: 192.168.101.5

 file timestamp=2015-05-18 02:07:11

 file size=5103

http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_ big.png 就是文件的下载路径。

对应storage 服务器上的

/home/fastdfs/fdfs_storage/data/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_b ig.png 文件。

由于现在还没有和nginx 整合无法使用 http 下载。

FastDFS 和nginx 整合

  1. nginx 代理

单独安装 nginx 代理服务,它的作用是代理访问storage 上的文件,实现负载均衡。nginx 的安装细节参考 nginx 文档,这里使用单机 nginx,也可以使用两台 nginx 组成高可用或者采用lvs+nginx 访问Storage 上的 nginx。

创建 nginx-fdfs.conf 配置文件:

#storage群group1组
upstream storage_server_group1{
server 192.168.101.5:80 weight=10;
server 192.168.101.6:80 weight=10; }
#storage群group2组
upstream storage_server_group2{
server 192.168.101.7:80 weight=10; server 192.168.101.8:80 weight=10; }
server {
listen 80;
		server_name ccc.test.com;
		location /group1{
		proxy_redirect off;
		proxy_set_header Host $host;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_pass http://storage_server_group1;
		}
		location /group2{
		 proxy_redirect off;
		  proxy_set_header Host $host;
		  proxy_set_header X-Real-IP $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		   proxy_pass http://storage_server_group2; } }

在Storage 上安装nginx

在 storage server 上安装 nginx 的目的是对外通过 http 访问 storage server 上的文件。使用 nginx 的模块 FastDFS-nginx-module 的作用是通过 http 方式访问 storage 中的文件,当storage 本机没有要找的文件时向源storage 主机代理请求文件。

FastDFS-nginx-module

将 FastDFS-nginx-module_v1.16.tar.gz 传至 fastDFS 的 storage 服务 器 的

/usr/local/下,执行如下命令: cd /usr/local

tar -zxvf FastDFS-nginx-module_v1.16.tar.gz cd FastDFS-nginx-module/src

修改 config 文件将/usr/local/路径改为/usr/

image.png

将 FastDFS-nginx-module/src 下的 mod_FastDFS.conf 拷贝至/etc/fdfs/下cp mod_FastDFS.conf /etc/fdfs/

并修改 mod_FastDFS.conf 的内容: vi /etc/fdfs/mod_FastDFS.conf base_path=/home/FastDFS

tracker_server=192.168.101.3:22122 tracker_server=192.168.101.4:22122 url_have_group_name=trueurl 中包含 group 名称store_path0=/home/fastdfs/fdfs_storage #指定文件存储路径#如果有多个

将 libfdfsclient.so 拷贝至/usr/lib 下

cp /usr/lib64/libfdfsclient.so /usr/lib/

创建 nginx/client 目录

mkdir -p /var/temp/nginx/client

nginx 安装

将 nginx-1.8.0.tar.gz 拷贝到/usr/local 下解压 nginx-1.8.0.tar.gz

进入 nginx-1.8.0 目录,执行如下配置命令:

下边红色部分表示添加 FastDFS-nginx-module 模块

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/FastDFS-nginx-module/src

make

make install

nginx 配置文件

新建一个 nginx 配置文件 nginx-fdfs.conf.

添加虚拟主机:

server { listen 80;
server_name 192.168.101.65;
location /group1/M00/{
root /home/FastDFS/fdfs_storage/data;
ngx_FastDFS_module;
}
}

说明:

server_name 指定本机 ip

location /group1/M00/:group1 为 nginx 服务FastDFS 的分组名称,M00 是 FastDFS 自动生成编号,对应 store_path0=/home/FastDFS/fdfs_storage,如果 FastDFS 定义store_path1,这里就是 M01

测试

通过java 客户端上传文件,使用浏览器 http 访问文件,这里访问上传图片测试的文件:

访问storage:

http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_

big.png

ip 地址改为 192.168.101.6 也可以访问到文件,因为同一个分组的 storage 文件互相同步。

访问tracker:

http://192.168.101.3/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_ big.png

ip 地址改为 192.168.101.4 也可以访问到文件。

使用域名访问 (推荐): {#使用域名访问-推荐 .unnumbered}

nginx 对外由 vip 提供服务,使用域名访问如下: 比如 vip 对应的域名为 img.test.com:

http://img.test.com/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_b ig.png