您的位置:首页 > 运维架构 > Linux

64位CentOS安装FastDFS分布式文件系统

2017-12-05 14:37 204 查看

分布式文件系统 - FastDFS 在64位CentOS 下配置安装部署

以前总在网上找文章解决问题,现在上网方便,自己也留个博客,别总私藏在自己脑子里面作为自己的经验。
参考了Mafly的文章,写的很好。唯有随着时间的变迁,一些地址失效,现重新整理一下,方便大家照猫画虎。
本着“能yum在线安装可用,就不手动”的懒人原则,现在开始。
分布式文件系统 -FastDFS 简单了解一下的朋友应该知道,本次安装是使用目前余庆老师开源的最新 v5.12 版本,是余庆老师放在 Github 上的,感谢老师的无私奉献。

一、安装libfastcommon和FastDFS

1.安装git并下载安装 libfastcommon 

yum-y install git

gitclone https://github.com/happyfish100/libfastcommon
安装gcc,已经有gcc环境的请忽略

yum-y install gcc

cdlibfastcommon/

编译

./make.sh

安装,命令:

./make.sh install

2.下载安装 FastDFS

gitclone https://github.com/happyfish100/fastdfs
cdfastdfs

./make.sh

./make.sh install

二、配置 Tracker 服务

/etc/
目录下会有一个
fdfs
的目录,进入它。会看到三个
.sample
后缀的文件,这是作者给我们的示例文件,我们需要把其中的
tracker.conf.sample
文件改为
tracker.conf
配置文件并修改它。看命令:

cd /etc/fdfs/

cp tracker.conf.sampletracker.conf

创建了
/data/fastdfs
目录。

mkdir –p
/data/fastdfs


 

vimtracker.conf

打开
tracker.conf
文件,只需要找到你只需要该这两个参数就可以了。

# the base path to store data and log files

base_path=/data/fastdfs

 

# HTTP port on this tracker server

http.server_port=80

port=22122
这个端口参数不建议修改,除非你已经占用它了。

修改完成保存并退出 vim
,这时候我们可以使用
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
来启动 Tracker服务,但是这个命令不够优雅,怎么做呢?使用
ln
-s
 建立软链接:

ln -s/usr/bin/fdfs_trackerd/usr/local/bin

ln -s/usr/bin/stop.
4000
sh/usr/local/bin

ln -s/usr/bin/restart.sh/usr/local/bin

这时候我们就可以使用
servicefdfs_trackerd start
来优雅地启动 Tracker服务了,是不是比刚才带目录的命令好记太多了(懒是社会生产力)。你也可以启动过服务看一下端口是否在监听,命令:

·         启动服务:service fdfs_trackerd start

·         查看监听:netstat -unltp|grep fdfs

看到
22122
端口
正常被监听后,这时候就算Tracker服务安装成功啦!

三、配置 Storage 服务

现在开始配置 Storage
服务,由于我这是单机器测试,你把Storage服务放在多台服务器也是可以的,它有 
Group(
)
的概念,同一组内服务器互备同步,这里不再演示。直接开始配置,依然是进入
/etc/fdfs
的目录操作,首先进入它。会看到三个
.sample
后缀的文件,我们需要把其中的
storage.conf.sample
文件改为
storage.conf
配置文件并修改它。还看命令:

cd
/etc/fdfs


cp storage.conf.samplestorage.conf

创建文件夹storage,日志以及文件都会在这个下面,启动时候会自动生成许多文件夹。

mkdir –p
/data/fastdfs/storage


 

vimstorage.conf

打开
storage.conf
文件后,找到这两个参数进行修改:

# the base path to store data and log files

base_path=/data/fastdfs/storage

 

# store_path#, based 0, if store_path0 not exists, it's value is base_path

# the paths must be exist

store_path0=/data/fastdfs/storage

#store_path1=/home/yuqing/fastdfs2

 

# tracker_server can ocur more than once, and tracker_server format is

#  "host:port", host can be hostname or ip address

tracker_server=192.168.198.129:22122

stroage服务的
port=23000
这个端口参数也不建议修改,默认就好,除非你已经占用它了。

修改完成保存并退出 vim
,这时候我们依然想优雅地启动Storage服务,带目录的命令不够优雅,这里还是使用
ln -s
建立软链接:

ln -s /usr/bin/fdfs_storaged /usr/local/bin

执行命令启动服务:

service fdfs_storaged start

启动成功,没有错误了。查看一下监听:

·         netstat -unltp|grep fdfs

很好,
22122
23000
端口都在监听了,这个时候你去
/data/fastdfs/storage
文件夹下看的话,会出现一大堆文件夹,而且进去还有一大堆,哈哈,这就是存放文件的啦!下一篇会讲它们的作用和怎么存储的。

四、确认Tracker
和 Storage 服务通信成功

应该是完成了。我们安装配置并启动了 Tracker和 Storage服务,也没有报错了。那他俩是不是在通信呢?我们可以监视一下:

/usr/bin/fdfs_monitor/etc/fdfs/storage.conf



看到我红线处
ACTIVE
这样就 ok 啦!

其实这个时候你就可以进行上传测试了,但下载不了。

由于余老师在 V4.05 以后的版本就把内置 HTTP服务去掉了,推荐大家结合 Nginx 使用 fastdfs-nginx-module 模块,所以,就算这篇你测试上传成功了,你也访问不了,哈哈哈...

 

分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

配合 Nginx 来进行文件的上传下载,这一篇就安装 Nginx 以及结合 fastdfs-nginx-module 模块使用。

四、安装 Nginx的前提依赖

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

2. PCRE pcre-devel 安装
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl兼容的正则表达式库。nginx的
http 模块使用 pcre来解析正则表达式,所以需要在 linux上安装 pcre库,pcre-devel是使用
pcre 开发的一个二次开发库。nginx也需要此库。命令:
yum install -y pcre pcre-devel

3. zlib 安装
zlib 库提供了很多种压缩和解压缩的方式, nginx使用 zlib对
http 包的内容进行 gzip,所以需要在 Centos上安装 zlib库。
yum install -y zlib zlib-devel

 

4. OpenSSL 安装
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL协议,并提供丰富的应用程序供测试或其它目的使用。

nginx 不仅支持 http协议,还支持 https(即在ssl协议上传输http),所以需要在
Centos 安装 OpenSSL库。

五、安装 Nginx 和 fastdfs-nginx-module

1.下载 Nginx和 fastdfs-nginx-module ,这里是通过
wget
下载(我喜欢这种方式)。

wget -c https://nginx.org/download/nginx-1.13.7.tar.gz
tar -zxvf nginx-1.13.7.tar.gz

git clone https://github.com/happyfish100/fastdfs-nginx-module
2.配置 nginx安装,加入
fastdfs-nginx-module
模块。这是和普通
Nginx 安装不一样的地方,因为加载了模块。

cdnginx-1.13.7

./configure--add-module=../fastdfs-nginx-module/src/



都安装一下之后我们再次进行 Nginx的安装

make  

make install

 

这时候,我们可以看一下 Nginx下安装成功的版本及模块,命令:

/usr/local/nginx/sbin/nginx –V

小坑:报错信息如下,这是什么鬼?

/usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

 解决办法:

64位CentOS下

cd /lib64

因为事先已经安装过pcre库,所以纳闷为何找不到库。查看库的位置:

ll libpcre*

lrwxrwxrwx. 1root root     16 Apr 27 18:42 /lib/libpcre.so.0 ->libpcre.so.0.0.1

-rwxr-xr-x. 1root root 190732 Aug 19  2010/lib/libpcre.so.0.0.1

pcre库存在,只是名字不是libpcre.so.1,而是libpcre.so.0。尝试建立一个新的链接,解决这个问题:

 ln -s libpcre.so.0.0.1 libpcre.so.1

再次查看一下:

 ldd  /usr/local/nginx/sbin/nginx







六、配置fastdfs-nginx-module和Nginx

1.配置
mod-fastdfs.conf
,并拷贝到
/etc/fdfs
文件目录下。

 

cd fastdfs-nginx-module/src

 

vim mod_fastdfs.conf

 

cp mod_fastdfs.conf /etc/fdfs

修改
mod-fastdfs.conf
配置只需要修改我标注的这三个地方就行了,其他不需要也不建议改变。

·         # FastDFS tracker_server can ocur more than once, and tracker_server format is

·         #  "host:port", host can be hostname or ip address

·         # valid only when load_fdfs_parameters_from_tracker is true

·         tracker_server=192.168.198.129:22122

·          

·         # if the url / uri including the group name

·         # set to false when uri like /M00/00/00/xxx

·         # set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx

·         # default value is false

·         url_have_group_name = true

·          

·         # store_path#, based 0, if store_path0 not exists, it's value is base_path

·         # the paths must be exist

·         # must same as storage.conf

·         store_path0=/data/fastdfs/storage

·         #store_path1=/home/yuqing/fastdfs1

 

接着我们需要把
fastdfs
下面的配置中还没有存在
/etc/fdfs
中的拷贝进去

cd fastdfs/conf

·         cp anti-steal.jpg http.conf mime.types /etc/fdfs/

 

2.配置 Nginx。编辑
nginx.conf
文件:

·         cd /usr/local/nginx/conf

·         vim nginx.conf

 

在配置文件中加入:

·         location /group1/M00 {

·             root /data/fastdfs/storage/;

·             ngx_fastdfs_module;

·         }

由于我们配置了
group1/M00
的访问,我们需要建立一个
group1
文件夹,并建立
M00
data
的软链接。

·           mkdir /data/fastdfs/storage/data/group1

·           ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/group1/M00

启动 Nginx
,会打印出fastdfs模块的pid,看看日志是否报错,正常不会报错的

·         /usr/local/nginx/sbin/nginx



打开浏览器,访问一下发现并不能访问,也并没有报错,但显示如下画面。糟糕了,怎么办?对了,我好像没关闭防火墙。



开放
80
端口
访问权限。在
iptables
中加入重启就行,或者你直接关闭防火墙,本地测试环境可以这么干,但到线上万万不能关闭防火墙的。

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

/etc/rc.d/init.d/iptables save

或者

·         vi /etc/sysconfig/iptables

·         -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启防火墙,使设置生效:

·         service iptables restart

再次刷新浏览器,可以看到如下画面,说明我们 Nginx结合 fastdfs-nginx-module模块安装并配置成功啦!



我最后说一下怎么在已经安装过 Nginx的服务器上安装配置 fastdfs-nginx-module模块? 因为,一般我们线上服务器都是已经安装过
Nginx的,所以这个时候,我们就直接进入 Nginx的存放目录,进行配置后编译,就不需要执行最后安装
make install
这一步了,接着重启就行了。

七、上传测试

完成上面的步骤后,我们已经安装配置完成了全部工作,接下来就是测试了。因为执行文件全部在
/usr/bin
目录下,我们切换到这里,并新建一个
test.txt
文件,随便写一点什么,我写了
This
is a test file. by:mafly
这句话在里边。然后测试上传:

·         cd /usr/bin

·         vim test.txt

/usr/bin/fdfs_test/etc/fdfs/client.conf
upload /usr/bin/test.txt

很不幸,并没有成功,报错了。

·         ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/client.conf fail, errno: 2, error info: No such file or directory

·         ERROR - file: ../client/client_func.c, line: 402, load conf file "/etc/fdfs/client.conf" fail, ret code: 2

一般什么事情第一次都不是很顺利,这很正常,通过错误提示我看到,好像没有找到
client.conf
这个文件,现在想起来的确没有配置这个文件,那我们现在去配置一下图中的两个参数:

·         cd /etc/fdfs

·         cp client.conf.sample client.conf

·         vim client.conf


·         /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/bin/test.txt


成功啦!!! 返回文件信息及上传后的文件HTTP地址,你打开浏览器访问一下试试



总结一下

这篇文章一步一步的讲了通过 Nginx结合
fastdfs-nginx-module
模块来进行上传测试及下载工作,整体进行了FastDFS的安装与配置,分布式的配置也几乎和这没差别,只不过是增加了不同组和多台服务器,有机会希望你亲自试试。

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  FastDFS nginx centos yum