前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS操作系统搭建FastDFS分布式文件系统

CentOS操作系统搭建FastDFS分布式文件系统

作者头像
沈唁
发布2018-05-24 17:14:43
5260
发布2018-05-24 17:14:43
举报
文章被收录于专栏:沈唁志沈唁志

FastDFS 是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

昨天晚上就看到群友在群里问谁会装 FastDFS,我本着一颗善良之心,就答应给装一下,虽然是 JAVA 的,反正今天老板让加班也没事干,就折腾一下吧。从早上更新 Xshell 又重装 Xshell,到下午才给搞好,真是累。由于 FastDFS 集群搭建非常复杂,对于初期学习 FastDFS 来说,搭建个单机版的作为入门更为实际一些。

我用的是 CentOS7.3,本文也就说 CentOS7 的防火墙关闭方法了,CentOS 7.0 默认使用的是 firewall 作为防火墙

代码语言:javascript
复制
systemctl stop firewalld.service #停止 firewall
systemctl disable firewalld.service #禁止 firewall 开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示 notrunning,开启后显示 running)

第一步:安装所需要的命令

使用命令进行安装即可,有 gcc、vim、zip、unzip,以及 Nginx 所需要的依赖 pcre、zlib、openssl 库等

代码语言:javascript
复制
yum install make cmake gcc gcc-c++ 
yum install vim-enhanced 
yum install zip unzip 
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

第二步:上传安装文件到 Linux 服务器

为了便于管理,我们在 Linux 服务器上新建一个/usr/local/software 目录,专门用于存放安装包,如下所示

代码语言:javascript
复制
[root@shenyanzhi ~]# mkdir /usr/local/software  

下面我们把需要用到的安装包都上传到/usr/local/software 目录下,我们可以使用 XShell 和 Xftp5 相结合来方便的进行上传下载操作,所用到的安装包在文末提供。

第三步:安装 libfastcommon

解压并进入目录,然后编译安装

代码语言:javascript
复制
[root@shenyanzhi software]# unzip libfastcommon-master.zip -d /usr/local/fast/
[root@shenyanzhi software]# cd /usr/local/fast/libfastcommon-master/
[root@shenyanzhi libfastcommon-master]# ./make.sh && ./make.sh install

第四步:创建软链接

FastDFS 主程序设置的目录为/usr/local/lib/,所以我们需要创建/usr/lib64/下的一些核心执行程序的软连接文件,如下所示。

代码语言:javascript
复制
[root@shenyanzhi libfastcommon-master]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so  
[root@shenyanzhi libfastcommon-master]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so  
[root@shenyanzhi libfastcommon-master]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so  
[root@shenyanzhi libfastcommon-master]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 

第五步:安装 FastDFS

进入到 software 下,解压 FastDFS_v5.05.tar.gz 文件,编译安装。配置文件在/etc/fdfs/下

代码语言:javascript
复制
[root@shenyanzhi fast]# cd /usr/local/software/ 
[root@shenyanzhi software]# ll
[root@shenyanzhi software]# tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/ 
[root@shenyanzhi software]# cd /usr/local/fast/FastDFS/ 
[root@shenyanzhi FastDFS]# ./make.sh && ./make.sh install

因为 FastDFS 服务脚本设置的 bin 目录为/usr/local/bin/下,但是实际我们安装在了/usr/bin/下面,所以我们需要修改 FastDFS 配置文件中的路径,也就是需要修改两个配置文件

使用命令vim /etc/init.d/fdfs_storaged进入编辑模式,然后直接输入”:”,光标会定位到最后一行,在”:”后输入”%s+/usr/local/bin+/usr/bin”。输入完之后回车,会提示修改了 7 处。为了确保所有的/usr/local/bin 都被替换了,我们可以再打开文件确认一下。

接着修改第二个配置文件,我们使用命令vim /etc/init.d/fdfs_trackerd进入编辑模式,接着按照上面那样输入”:%s+/usr/local/bin+/usr/bin “并按回车,同样会提醒我们修改了 7 处。

第六步:配置跟踪器

进入到/etc/fdfs 目录并且复制一份 tracker.conf.sample 并命名为 tracker.conf,使用命令 vim /etc/fdfs/tracker.conf 进入编辑模式,然后修改 base_path 的值为/fastdfs/tracker。配置文件中配置的/fastdfs/tracker 目前是不存在的,因此需要创建一下该目录

代码语言:javascript
复制
[root@shenyanzhi bin]# cd /etc/fdfs/ 
[root@shenyanzhi fdfs]# ll
[root@shenyanzhi fdfs]# cp tracker.conf.sample tracker.conf 
[root@shenyanzhi fdfs]# mkdir -p /fastdfs/tracker 

启动 tracker,启动完之后,可以看到这个目录下多了两个目录 data 和 logs

代码语言:javascript
复制
[root@shenyanzhi tracker]# /etc/init.d/fdfs_trackerd start   
[root@shenyanzhi tracker]# cd /fastdfs/tracker/ && ll  

设置开机自启动,在 rc.local 文件中添加/etc/init.d/fdfs_trackerd start,如下所示。

代码语言:javascript
复制
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/etc/init.d/fdfs_trackerd start

第七步:配置 FastDFS 存储

进入/etc/fdfs 目录,复制一份 storage.conf.sample 文件并命名为 storage.conf,修改 storage.conf 文件,使用命令vim /etc/fdfs/storage.conf进入编辑模式,对以下四项进行修改,tracker_server 填写为外网 IP,自行设置,并创建存储目录/fastdfs/storage

代码语言:javascript
复制
base_path=/fastdfs/storage  
store_path0=/fastdfs/storage  
tracker_server=192.168.1.1:22122  
http.server_port=8888  

启动 storage,启动后再看/fastdfs/storage 目录,可以看到多了 data 和 logs

代码语言:javascript
复制
[root@shenyanzhi storage]# /etc/init.d/fdfs_storaged start
[root@shenyanzhi storage]# cd /fastdfs/storage/ && ll 

查看 FastDFS tracker 和 storage 是否启动成功,当看到如下所示信息时说明都启动成功了

代码语言:javascript
复制
[root@shenyanzhi storage]# ps -ef | grep fdfs
root 20803 1 0 15:42 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root 20879 1 0 15:52 ? 00:00:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
root 20894 20822 0 15:52 pts/2 00:00:00 grep --color=auto fdfs

我们进入到 /fastdfs/storage/data/目录下,可以看到两级共 256*256 个目录,每级都是从 00 到 FF,如下只是列出了第一级的目录,点进去每个目录都还有 00 到 FF 共 256 个目录。

设置 storage 开机自启动,添加一行/etc/init.d/fdfs_storaged start,同上,这里就不演示了。

第八步:测试图片上传

进入到/etc/fdfs 目录下并复制一份 client.conf.sample 并更名为 client.conf,

使用命令vim /etc/fdfs/client.conf进入编辑模式并修改如下两项内容,如下所示。

代码语言:javascript
复制
base_path=/fastdfs/tracker  
tracker_server=192.168.1.1:22122  

下面使用 fdfs_upload_file 脚本进行文件上传操作,如下所示。可以看到已经上传成功了,返回的是图片的保存位置:

代码语言:javascript
复制
[root@shenyanzhi bin]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/software/shenyanzhi.png
group1/M00/00/00/rBD83lq_Q_-AB1H_AAAxNQHnUn4955.png

第九步:FastDFS 与 Nginx 相结合

进入 software 目录下,解压 nginx-1.6.2.tar.gz 到/usr/local/目录下,然后安装 fastdfs-nginxmodule_v1.16.tar.gz(fast 与 nginx 相结合的模块安装包), 进入/usr/local/software目录并解压。

代码语言:javascript
复制
[root@shenyanzhi software]# tar -zxvf nginx-1.6.2.tar.gz -C /usr/local/  
[root@shenyanzhi software]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/ 

进入到/usr/local/fast目录下可以看到解压的 fastdfs-nginx-module 目录,然后进入到fastdfs-nginx-module/src/目录下,可以看到 config 文件,修改该 conf 文件,我们把文件的第四行配置中的/usr/local/include 都改为/usr/include,共两处

修改该 conf 文件

进入到 nginx-1.6.2/目录下并执行配置和编译安装,复制 fastdfs-nginx-module 中的配置文件,到/etc/fdfs目录中

代码语言:javascript
复制
[root@shenyanzhi software]# cd nginx-1.6.2 && ./configure --prefix=/usr/local/nginx
[root@shenyanzhi nginx-1.6.2]#  make && make install 
[root@shenyanzhi nginx-1.6.2]# cd /usr/local/fast/fastdfs-nginx-module/src/ 
[root@shenyanzhi src]# cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 

/etc/fdfs/目录下,修改我们刚 copy 过来的 mod_fastdfs.conf 文件,需要修改的项如下,其中第一项是超时时长,第三项是允许外界通过 http 方式访问资源。

代码语言:javascript
复制
connect_timeout=10  
tracker_server=192.168.1.1:22122  
url_have_group_name = true  
store_path0=/fastdfs/storage  

复制 FastDFS 里的 2 个文件,到/etc/fdfs目录中,创建一个软连接,在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录

代码语言:javascript
复制
[root@shenyanzhi fdfs]# cd /usr/local/fast/FastDFS/conf/  
[root@shenyanzhi conf]# cp http.conf mime.types /etc/fdfs/ 
[root@shenyanzhi conf]# ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00  

进入到/usr/local/nginx/conf/目录下,修改 nginx.conf 文件,修改的内容如下图示

修改 nginx.conf 文件

设置 Nginx 开机自启动,这样下次重启设备之后,tracker、storage、nginx 都自动启动了,直接就可以使用服务,添加/usr/local/nginx/sbin/nginx

启动 Nginx

代码语言:javascript
复制
[root@shenyanzhi conf]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=6809

现在我们便可以通过 http 的方式访问我们刚才上传的图片了(我们刚才上传图片返回的地址是 group1/M00/00/00/rBD83lq_Q_-AB1H_AAAxNQHnUn4955.png),如下图所示。

成功上传的图片

至此,一个 CentOS7.3 操作系统搭建的 FastDFS 分布式文件系统便搭建完毕了!!!

相关文件

沈唁志|一个PHPer的成长之路! 原创文章采用CC BY-NC-SA 4.0协议进行许可,转载请注明:转载自:CentOS操作系统搭建FastDFS分布式文件系统

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一步:安装所需要的命令
  • 第二步:上传安装文件到 Linux 服务器
  • 第三步:安装 libfastcommon
  • 第四步:创建软链接
  • 第五步:安装 FastDFS
  • 第六步:配置跟踪器
  • 第七步:配置 FastDFS 存储
  • 第八步:测试图片上传
  • 第九步:FastDFS 与 Nginx 相结合
  • 相关文件
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档