- 前言
- 第一部分 基础应用开发
- 第 1 章 Spring Boot 入门
- 第 2 章 在 Spring Boot 中使用数据库
- 第 3 章 Spring Boot 界面设计
- 第 4 章 提高数据库访问性能
- 第 5 章 Spring Boot 安全设计
- 第二部分 分布式应用开发
- 第 6 章 Spring Boot SSO
- 第 7 章 使用分布式文件系统
- 第 8 章 云应用开发
- 第 9 章 构建高性能的服务平台
- 第三部分 核心技术源代码分析
- 第 10 章 Spring Boot 自动配置实现原理
- 第 11 章 Spring Boot 数据访问实现原理
- 第 12 章 微服务核心技术实现原理
- 附录 A 安装 Neo4j
- 附录 B 安装 MongoDB
- 附录 C 安装 Redis
- 附录 D 安装 RabbitMQ
- 结束语
7.1 FastDFS 安装
FastDFS 分为服务端和客户端 API 两部分,服务端又分为跟踪器(Tracker)和存储节点(Storage)两个角色。跟踪器主要负责服务调度,起着负载均衡的作用。存储节点主要负责文件的存储、读取和同步等功能。客户端 API 提供了文件的上传、下载和删除等操作方法。
典型的 FastDFS 服务器的网络拓扑结构如图 7-1 所示,客户端连接跟踪器服务器集群,跟踪器管理存储节点集群,为客户端提供可用的存储节点。
图 7-1 FastDFS 服务器网络拓扑
FastDFS 支持动态扩展,当资源快要耗尽时,可以通过增加新卷(或新组)的方法,增加更多的存储节点。
存储节点的文件使用了分卷(或分组)的组织方式,所以一个文件的标识由卷名(或组名)、路径和文件名等部分组成。
为了演示使用 FastFDS,使用虚拟机安装了三个 Linux 系统。表 7-1 列出了三个服务器的 IP 地址、安装的操作系统和各自的用途。
表 7-1 FastFDS 服务器列表
下面将按照步骤说明安装的过程,由于使用 Nginx 提供文件的浏览访问功能,同时也需要安装 Nginx 服务,对于文件的组织方式使用了分组的方法,并建立了一个分组:group1。
7.1.1 下载安装包
登录 Tracker Server,使用下列指令切换到 opt 目录。
#cd /opt
然后使用 wget 指令下载下列各个安装包,最后将下载的文件拷贝到其他两台服务器的相同目录中(注:检出实例工程后,在 doc 目录中包含下列安装包)。
1.下载 FastDFS 5.01
#wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20 Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20 V5.01/FastDFS_v5.01.tar.gz
2.下载 nginx 1.7.0
#wget http://nginx.org/download/nginx-1.7.0.tar.gz
3.下载 fastdfs-nginx-module_v1.16
#wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20 Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
7.1.2 安装服务
三台服务器上都要安装 FastDFS 和 Nginx,其中 FastFDS 使用了默认的安装配置,Nginx 使用了自定义的安装配置。
要执行安装指令,系统中必须具有编译环境,如果系统还没有编译环境,可以使用下列指令增加编译环境。
#yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-deve
1.创建系统用户
#useradd fastdfs -M -s /sbin/nologin #useradd nginx -M -s /sbin/nologin
2.安装 FastFDS
#tar xf FastDFS_v5.01.tar.gz #cd FastDFS #./make.sh #./make.sh install
3.安装 Nginx
#cd .. #tar xf fastdfs-nginx-module_v1.16.tar.gz #tar xf nginx-1.7.0.tar.gz #cd nginx-1.7.0 #./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --add-module= ../fastdfs-nginx-module/src #make #make install
注意 在 Tracker Server 上安装 Nginx,不需要--add-module=../fastdfs-nginx-module/src 这个配置项,而两个 Storage Server 的安装必须加上这个配置项。
7.1.3 Tracker Server 配置
1.创建数据及日志存放目录
#mkdir -p /data/fastdfs/tracker
2.修改 tracker.conf 配置
#vi /etc/fdfs/tracker.conf
更改下列两行配置:
base_path=/data/fastdfs/tracker group_name=group1
3.修改 nginx.conf 配置
#vi /usr/local/nginx/conf/nginx.conf
修改完成后如代码清单 7-1 所示,这是 Tracker Server 的一个负载均衡配置(代码内容可以从工程的 doc 目录 nginx.conf-tracker 文件中复制进来)。注意这里的 Tracker Server 开放访问端口为 84(非必须,只因为 80 端口已经作为其他用途)。
代码清单 7-1 Tracker Server 的 Nginx 配置
user nginx nginx; worker_processes 4; pid /usr/local/nginx/nginx.pid; worker_rlimit_nofile 51200; events { use epoll; worker_connections 20480; } 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" "$request_time"'; access_log /usr/local/nginx/logs/access.log main; upstream server_group1{ server 192.168.1.215; server 192.168.1.216; } server { listen 84; server_name 192.168.1.214; location /group1 { include proxy.conf; proxy_pass http://server_group1; } } }
4.配置 Tracker Server 启动程序
使用如下指令配置 Tracker Server 的启动程序,并将其设置为随系统启动自动启动。
#cp /opt/FastDFS/init.d/fdfs_trackerd /etc/init.d/ #chkconfig --add fdfs_trackerd #chkconfig fdfs_trackerd on
5.配置 Nginx 的启动程序
使用下面指令创建一个启动文件:
#vi /etc/init.d/nginx
然后编辑(可以复制实例工程中 doc 目录的 nginx 文件内容)如代码清单 7-2 所示的内容。
代码清单 7-2 Nginx 启动程序
#!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it's not for everyone. # processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid RETVAL=0 prog="nginx" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 # Start nginx daemons functions. start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } # Stop nginx daemons functions. stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid } # reload nginx service functions. reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL
将上面文件保存后,使用下列指令,修改为任何人可执行,并将其设定为随系统启动自动启动:
#chmod 755 /etc/init.d/nginx #chkconfig --add nginx #chkconfig nginx on
7.1.4 Storage Server 配置
两台 Storage Server 都要进行下列相关的配置。
1.创建数据及日志保存目录
#mkdir -p /data/fastdfs/storage/data
2.修改 storage.conf 配置
# vi /etc/fdfs/storage.conf
修改下列配置项,其他保持默认设置:
group_name=group1 base_path=/data/fastdfs store_path0=/data/fastdfs/storage tracker_server=192.168.1.214:22122 run_by_group=fastdfs run_by_user=fastdfs file_distribute_path_mode=1 rotate_error_log=true
3.修改 mod_fastdfs.conf 配置
#cp /opt/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ #vi /etc/fdfs/mod_fastdfs.conf
修改下列各项配置:
connect_timeout=30 tracker_server=192.168.1.214:22122 group_name=group1 url_have_group_name = true store_path_count=1 store_path0=/data/fastdfs/storage
4.修改 nginx.conf 配置
Storage Server 的 Nginx 配置如代码清单 7-3 所示,监听 80 端口,并使用 fastdfs-nginx-module 模块(代码内容保存在工程的 doc 目录 nginx.conf-storage 文件中)。
代码清单 7-3 Storage Server 的 Nginx 配置
user nginx nginx; worker_processes 4; pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 1024; events { use epoll; worker_connections 1024; } http { include mime.types; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 20m; limit_rate 1024k; 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 /usr/local/nginx/logs/access.log main; server { listen 80; server_name localhost; location /group1/M00{ root /data/fastdfs/storage/data; ngx_fastdfs_module; } } }
使用下列指令创建一个 M00 软连接,让配置中的 M00 同样指向 data 目录。
#ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00
5.配置 Storage Server 的启动程序
#cp /opt/FastDFS/init.d/fdfs_storaged /etc/init.d/ #chkconfig --add fdfs_storaged #chkconfig fdfs_storaged on
6.配置 Nginx 的启动程序
Nginx 的启动程序配置与 Tracker Server 的配置相同。如果不使用自定义的启动程序,也可以使用下列指令启动 Nginx。
#/usr/local/nginx/sbin/nginx
7.1.5 启动服务
1.启动 Tracker Server
#service fdfs_trackerd start #service nginx start
2.启动 Storage Server
#service fdfs_storaged start #service nginx start
启动后,可以使用下列指令来查看各个服务的进程。
#ps -ef|grep fdfs #ps-ef|grep nginx
如果能查看到服务进程,一般就说明已经启动成功。
7.1.6 客户端测试
1.在 Tracker Server 中配置一个客户端
#vi /etc/fdfs/client.conf
修改下列配置项:
base_path=/data/fastdfs tracker_server=192.168.10.214:22122
2.查看服务的运行情况
在 Tracker Server 使用下列指令可以查看服务的运行情况:
#fdfs_monitor /etc/fdfs/client.conf
3.测试文件上传
如果在当前路径(例如/opt)中存在一个图片文件:01.jpg,即可使用下列指令来测试上传文件:
#fdfs_upload_file /etc/fdfs/client.conf 01.jpg
上传成功后将返回已经保存的文件标识,它包含组名、路径和文件名,如下所示:
group1/M00/00/00/wKgB2FdH892AclCqAAA2FfBeCgg517.jpg
4.使用浏览器访问文件
使用上面配置的 Tracker Server 的 Web 服务端口,就可以使用下面完整的 URL 访问上面上传的文件:
http://192.168.1.214:84/group1/M00/00/00/wKgB2FdH892AclCqAAA2FfBeCgg517.jpg
注意 上面这个链接只是本地局域网的地址,如果要在互联网中使用,必须使用外网 IP 或者域名。
现在,就可以在安装的两台 Storage Server 服务器中其中一台的/data 目录中找到已经保存的文件。
上面测试成功,表明 FastFDS 安装成功,并且已经正常运行,接着介绍如何在应用系统中使用分布式文件系统。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论