Mac上怎么装FastDFS?报错
项目中用到了FastDFS来做文件存储。最近重构的时候,因为经常处于移动办公的状态,所以访问公司的服务器不是很方便,所以感觉有必要在本机上搭建一套FastDFS的测试环境。
FastDFS是什么?
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 FastDFS里面有两种角色:Tracker、Storage。Tracker主要做调度工作,在访问上起负载均衡的作用。Storage存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的meta data进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的key为width,value为1024。文件meta data是文件属性列表,可以包含多个键值对。
Docker方式 因为之前用Docker用的比较多,所以首先想到的是用Docker来运行FastDFS。上hub.docker.io上找了找镜像,最后选择了luhuiguo/fastdfs这个镜像。很快写了一个docker-compose脚本: 1version: '3.3' 2services: 3 tracker: 4 image: luhuiguo/fastdfs 5 ports: 6 - '22122:22122' 7 command: 8 - tracker 9 volumes: 10 # let container use same timezone as host 11 - /etc/localtime:/etc/localtime 12 - /opt/docker/fastdfs/tracker:/var/fdfs 13 storage: 14 image: luhuiguo/fastdfs 15 ports: 16 - '23000:23000' 17 links: 18 - tracker 19 command: 20 - storage 21 environment: 22 TRACKER_SERVER: 192.168.255.199:22122 23 GROUP_NAME: group1 24 volumes: 25 - /etc/localtime:/etc/localtime 26 - /opt/docker/fastdfs/storage:/var/fdfs 执行起来,看起来也是正常的。但是使用程序访问的时候却失败了。抛出了异常:java.net.SocketTimeoutException: connect timed out。通过跟踪代码发现了原因:使用docker的时候,storage向tracker汇报的地址是docker内部的地址,而这个地址在Mac本机是无法直接访问的。通过代码访问Tracker的时候返回的地址就是docker内部的地址,自然会出现SocketTimeoutException了。
1.1 network host模式 因为知道docker有host这一网络模式,可以使docker容器使用与宿主机一样的网络。感觉上这样或许可以解决上面的问题,而且镜像的说明中也提到了这一点。于是加上了network_mode: host。但是启动之后发现还是一样的错误。经过搜索找到了原因:
**Mac上的Docker实际上是通过虚拟化方式运行在Mac系统上的。通过xhyve技术模拟出来一台Linux主机,然后在其中跑Docker进程。当使用host模式跑的时候,docker使用的是这个虚拟出来的Linux主机的网络作为Host网络,无法直接使用Mac主机的网络。因此依然无法连接是正常的。**也就是说,在Mac主机上,host这种网络是无法使用的。
本机编译执行 既然使用Docker无法运行FastDFS,那只能通过编译源码来运行了。最新版本的FastDFS已经可以直接在Mac上编译了(不需要修改源码)。因此这种方法也不难。主要步骤如下:
2.0 关闭系统保护 从OSX 10.11开始,Mac对关键目录进行了保护(例如:/bin, /usr/bin等)。而要编译FastDFS却是要安装文件到/usr/bin等目录下,所以首先需要禁用系统保护。关闭的方法如下:
重启系统,重启的过程中按住Command+R进入Recovery模式; 从菜单中选择“终端”或“Terminal”进入命令行模式; 输入命令csrutil disable关闭保护模式,然后输入reboot重启系统即可。 2.1 libfastcommon FastDFS依赖于libfastcommon,因此需要首先编译、安装libfastcommon,步骤如下:
1unzip libfastcommon-1.0.35.zip 2cd libfastcommon-1.0.35 3./make.sh 4./make.sh install 2.2 fastdfs FastDFS源码通过Github下载。下面以最新的5.10为例。编译、安装步骤如下:
1unzip fastdfs-5.10.zip 2cd fastdfs-5.10 3./make.sh 4./make.sh install 安装成功后,FastDFS相关的可执行文件被安装到/usr/bin目录下。相关的配置文件被放在/etc/fdfs下,这和在Linux上安装的结果是一样的。
2.3 启动tracker 下面首先启动Tracker服务。首先准备存储数据的目录,Tracker将会在该目录中保存运行时信息以及日志文件:
1mkdir -p /opt/tools/fastdfs/tracker 2chown -R cap:cap /opt/tools/fastdfs/tracker 然后准备配置文件,从sample文件复制一份以便修改:
1cd /etc/fdfs 数控等离子切割机 数控等离子切割机 2cp tracker.conf.sample tracker.conf 然后修改配置文件/etc/fdfs/tracker.conf,在Mac上单机安装只需要修改base_path,修改成上面刚刚创建的目录:
1base_path=/opt/tools/fastdfs/tracker 然后启动fastdfs,启动完成之后应该占用了22122端口:
1/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf 2netstat -nl | grep 22122 启动服务使用如下命令:
1/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start 停止服务可以使用如下命令:
1/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop 2.4 启动storage 首先还是准备目录供Storage节点使用:
1mkdir -p /opt/tools/fastdfs/storage 2chown -R cap:cap /opt/tools/fastdfs/storage 准备配置文件:
1cp storage.conf.sample storage.conf 修改配置文件:
1# 基本路径,日志等存储在该目录下 2base_path=/opt/tools/fastdfs/storage 3# 存储目录,可以存在多个。FastDFS会按照调度方法使用这些不同的目录。默认使用Round Robin调度方法。 4store_path0=/opt/tools/fastdfs/storage 5# 如果部署集群的话,只要多写几个tracker_server就可以了。 6tracker_server=192.168.255.199:22122 启动服务可以使用如下命令:
1/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start 停止服务命令:
1/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
赞0
踩0