分布式文件系统fastdfs系统搭建
本次安装是使用目前余庆老师开源的最新 V5.05 版本,是余庆老师放在 Github 上的,和目前你能在网络上搜索到的 Google Code 的 V4.06 或更低版本不一样。
安装环境:
分布式文件系统 - FastDFS 在 CentOS 下配置安装部署
安装 libfastcommon 和 FastDFS
1.下载安装 libfastcommon ,这里是通过wget下载(我喜欢这种方式)。
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
解压 libfastcommon,命令:
tar -zxvf V1.0.7.tar.gz
编译,进入libfastcommon-1.0.7目录,命令:
cd libfastcommon-1.0.7
./make.sh
安装,命令:
./make.sh install
显示这样的画面,就是安装 libfastcommon 成功啦。
2.下载安装 FastDFS,这里也是通过wget下载。
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
解压 FastDFS ,命令:
tar -zxvf V5.05.tar.gz
编译,进入fastfds-5.05目录,命令:
cd fastdfs-5.05
./make.sh
安装,命令:
./make.sh install
显示这样的画面,就是安装 FastDFS 成功啦。
配置 Tracker 服务
上述安装成功后,在/etc/目录下会有一个fdfs的目录,进入它。会看到三个.sample后缀的文件,这是作者给我们的示例文件,我们需要把其中的tracker.conf.sample文件改为tracker.conf配置文件并修改它。看命令:
cp tracker.conf.sample tracker.conf
vim tracker.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
当然前提是你要有或先创建了/data/fastdfs目录。port=22122这个端口参数不建议
Mkdir /data/fastdfs -p
修改,除非你已经占用它了。
修改完成保存并退出 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.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
这时候我们就可以使用service fdfs_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配置文件并修改它。还看命令:
cp storage.conf.sample storage.conf
vim storage.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/data1 # 存储路径
store_path1=/data/fastdfs/storage/data2
store_path2=/data/fastdfs/storage/data3
store_path3=/data/fastdfs/storage/data4
#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.1.183:22122 #tracker服务器的IP地址以及端口号
当然你的/fastdfs目录下要有storage文件夹,没有就创建一个,不然会报错的,日志以及文件都会在这个下面,启动时候会自动生成许多文件夹。stroage的port=23000这个端口参数也不建议修改,默认就好,除非你已经占用它了。
Mkdir –p /data/fastdfs/storage
修改完成保存并退出 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 服务,也没有报错了。那他俩是不是在通信呢?我们可以监视一下:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
看到我红线处ACTIVE这样就 ok 啦!
其实这个时候你就可以进行上传测试了,但可能会下载不了,所以,我们把成功的喜悦留在下一篇吧。
Nginx上传测试
2016-11-08 23:17:33
一、安装 Nginx 和 fastdfs-nginx-module
1.下载 Nginx 和 fastdfs-nginx-module ,这里是通过wget下载(我喜欢这种方式)。
wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
2.解压 fastdfs-nginx-module ,记着这时候别用tar解压了,因为是 .zip 文件,正确命令:unzip master.zip
3.配置 nginx 安装,加入fastdfs-nginx-module模块。这是和普通 Nginx 安装不一样的地方,因为加载了模块。
./configure --add-module=../fastdfs-nginx-module-master/src/
安装命令,都安装一下之后我们再次进行 Nginx 的安装,显示下面的界面就是安装成功啦!
这时候,我们可以看一下 Nginx 下安装成功的版本及模块,命令:
· /usr/local/nginx/sbin/nginx -V
二、配置 fastdfs-nginx-module 和 Nginx
1.配置mod-fastdfs.conf
,并拷贝到/etc/fdfs
文件目录下。
· cd /software/fastdfs-nginx-module-master/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.1.183:22122 #tracker服务器地址及端口
·
· # 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 #文件 url 中是否有 group 名
·
· # 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-5.05
下面的配置中还没有存在/etc/fdfs
中的拷贝进去
· cd /software/fastdfs-5.05/conf
· cp anti-steal.jpg http.conf mime.types /etc/fdfs/
2.配置 Nginx。编辑nginx.conf
文件:
· cd /usr/local/nginx/conf
· vi 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
刷新浏览器,可以看到如下画面,说明我们 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
· fdfs_test /etc/fdfs/client.conf upload 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
怎么还依然报错阿???
· upload file fail, error no: 2, error info: No such file or directory
哈哈,你是不是测试上传命令中要上传的test.txt
文件路径有问题,嗯,那我改一下命令:
测试上传:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload libfastcommon-1.0.7.tar.gz
其中有两个需要注意的group_name和remote_filename,这个在我们后面的文件下载需要用到
group_name=group1, remote_filename=M00/02/32/CgAUD1s6716ATKtBAAMd3jd5Lxc105.png
成功, 返回文件信息及上传后的文件 HTTP 地址。
查看是否在通信:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
参考博客:
http://www.cnblogs.com/mafly/p/fastdfs_conf.html
http://blog.mayongfa.cn/193.html