由于项目需要最近搭建了一遍fastdfs的主从服务和nginx配置,磕磕碰碰最终到达终点,好记性不如烂笔头,现将过程记录下。
1.环境
centos7 libevent nginx FastDFS
2.部署
将libevent、FastDFS和nginx的压缩包通过工具传到centos7的服务器上,我将FastDFS放在/home目录下,nginx放在/usr/local目录下,libevent放在/usr目录下
2.1 安装libevent
本文安装的是 libevent1.4.14b-stable ,下载地址: http://monkey.org/~provos/libevent/。下载好的libevent进行解压
tar zxvflibevent-1.4.14b-stable.tar.gz
进入解压后的目录,执行以下的shell代码
./configure -prefix=/usr
make clean
make
make install
安装libevent完成
2.2安装FastDFS
2.2.1 下载并解压
下载FastDFS的源程序,下载地址http://code.google.com/p/fastdfs/。
这里下载的是FastDFS_v5.02.tar.gz。
在home文件夹下创建 ccx文件夹
cd /home
mkdir ccx
在FastDFS_v5.02.tar.gz所在的文件下执行一下代码
sudotar vxzf FastDFS_v5.02.tar.gz -C/home/ccx/
这样解压出来的目录结构是 /home/ccx/FastDFS 后续用%FastDFS%表示该目录
2.2.2 修改变量并编译安装
在解压目录%FastDFS%下编辑make.sh文件,找到 #WITH_HTTPD=1 修改成 WITH_HTTPD=1 以支持http.
即:
cd %FastDFS% //进入解压目录
vim make.sh
找到
#WITH_HTTPD=1 //找不到的话就在最后新增一行
修改为
WITH_HTTPD=1
修改后保存退出,进入%FastDFS%目录并执行以下代码进行编译安装
cd %FastDFS%
./make.sh
./make.sh install
上述两步没有出错的话窗口内会出现
#ln -fs/usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
#ln -fs/usr/local/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so
sh ./fdfs_link_library.sh
表示安装成功。
本实例中,服务器A上部署了tracker和storage,服务器B上部署了storage和NGINX。A为主,B为从。NGINX用于浏览器获取fdfs中的数据。
2.2.3 配置文件
FastDFS的配置文件均在解压目录的conf文件夹下,具体作用如下所示:
Client.conf 客户端上传配置文件
Storage.conf 文件存储服务器配置文件
Tracker.conf 负责均衡调度服务器配置文件
http.conf http 服务器配置文件
配置文件需要根据服务器环境的不同,进行不同的配置。
具体可以参考 FastDFS 官方的安装配置 http://code.google.com/p/fastdfs/wiki/Setup
以及 FastDFS 原理介绍文档 http://code.google.com/p/fastdfs/wiki/Overview
2.2.4 tracker的配置与启动
在 /home/ccx 下新建目录 fastdfs_tracker,用于存储日志和 storage server等信息
进入目录 %FastDFS%/conf/ 中,编辑 tracker.conf 文件
cd /home/ccx/
mkdir fastdfs_tracker
cd /home/ccx/FastDFS/conf/
vim tracker.conf
编辑tracker.conf,找到相对应的代码进行修改:
1. base_path=/home/yuqing/fastdfs ——> base_path=/home/ccx/fastdfs_tracker
#改成你想要的 http 端口,将来http 下载文件的端口就是他了
2. http.server_port=8080 ——> http.server_port=8090
#http 支持
3. ##include http.conf ——> #include http.conf //这个地方找不到,可以不用改
#默认 4GB,如果空间不足,建议调小,否则会报 no free space 的异常,无法正常启动
4. reserved_storage_space = 4GB ——> reserved_storage_space = 1GB
reserved_storage_space= %10也可以不改
#tracker server 对 storage server 供服务的端口,使用默认的即可,也可以自定义
5. port=22122
#绑定Tracker的IP,要求实际的IP地址
6. bind_addr=192.168.204.128
支持HTTP:
将http.conf文件拷贝到/etc/fdfs目录下
cp %FastDFS%/conf/http.conf /etc/fdfs/
注:为了支持 http,必须将这个文件拷贝到此目录,否则无法启动,报 param http.XXX not exist or is empty 类似的错误
启动Tracker服务器
编写shell脚本:
vi start-tracker.sh(创建脚本)
/usr/local/bin/fdfs_trackerd /home/ccx/FastDFS/conf/tracker.conf(脚本内容)
chmod +x start-tracker.sh(给脚本附加可执行权限)
./start-tracker.sh(执行脚本即启动了tracker服务器)
进入/home/ccx/fastdfs_tracker/logs/目录下查看trackerd.log文本,trackerd.log文本为tracker的启动日志,如果看到下图类似代码,tracker server配置成功。
2.2.5 storage的配置与启动
在/home/ccx目录下 新建文件夹 fastdfs_storage 用于存储storage的日志等数据。
cd /home/ccx/
mkdir fastdfs_storage
在/home/目录下创建zhckpt文件,在zhckpt文件目录下创建storage文件,用于存放上传的数据信息。
cd /home
mkdir zhckpt
cd /home/zhckpt
mkdir storage
进入目录 %FastDFS%/conf/ 中,编辑 storage.conf 文件
cd /home/ccx/FastDFS/conf/
vim storage.conf
编辑 storage.conf,找到相对应的代码进行修改:
#用于存储storage的相关的log、group内的相关信息的目录
1. base_path=/home/yuqing/fastdfs ——> base_path=/home/ccx/fastdfs_storage
#文件的存储位置,在一台 storage server 上可以指定多个存储位置
2. store_path0=/home/yuqing/fastdfs ——> store_path0=/home/zhckpt/storage
#必须指定
3. group_name=group1
#修改成 tracker server 的 IP 和端口信息
4.tracker_server=192.168.209.121:22122 #必须指定 tracker_server=192.168.204.128:22122
#http 支持
5. ##include http.conf ——> #include http.conf //找不到,忽略
#绑定Tracker的IP,要求实际的IP地址
6. bind_addr=192.168.204.128
启动storage,编写shell脚本:
vi start-storage.sh(创建脚本)
/usr/local/bin/fdfs_storaged /home/ccx/FastDFS/conf/storage.conf (脚本内容)
chmod +x start-storage.sh(给脚本附加可执行权限)
./start-storage.sh(执行脚本即启动了tracker服务器)
进入/home/ccx/ fastdfs_storage/logs/目录下查看storaged.log文本,storaged.log文本为storage的启动日志,如果看到下图类似显示,storage server配置成功。
要注意的是,如果在Tracker Server和storage配置过程中出现错误,需要重新安装的时候,要注意查看他们的状态ps-ef|grep fdfs,如果处在开启状态,请关闭,否则会报错!
2.2.6 FastDFS上传配置
FastDFS 安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端 程序之前,首先需要配置 client.conf,然后再进行文件上传及下载。
目录fastdfs_tracker之前已经创建了,该名称可自定义,但此目录必须存在,用于存放文件上传log,由于本文中前面已经新建了该目录,本次操作不要再次新建目录。
cd/home/ccx/FastDFS/conf/
viclient.conf
编辑client.conf后找到相应代码修改:
#用于存储storage的相关的log、group内的相关信息的目录
1. base_path=/home/yuqing/fastdfs ——> base_path=/home/zhckpt/fastdfs_tracker
#修改成 tracker server 的 IP 和端口信息
2. tracker_server=192.168.209.121:22122 ——> tracker_server=192.168.204.128:22122
#修改端口信息
3. http.tracker_server_port=8080 ——> http.tracker_server_port=8090
#支持 http
4. ##include http.conf ——> #include http.conf
2.2.7 FastDFS上传文件a.txt测试
进入/usr/local/bin/目录,创建一个文件a.txt
cd /usr/local/bin
vim a.txt
编辑a.txt的内容,退出回到 /home/ccx/ 目录下。
以下方法任选一种:
1. 进入 /usr/local/bin/ 目录,启动 storage 服务器,执行 Shell 代码:
fdfs_test %FastDFS%/conf/client.confupload a.txt
2. 编写shell脚本:
vi test-upload.sh(创建脚本)
/usr/local/bin//fdfs_upload_file
/home/ccx/FastDFS/conf/client.conf start-tracker.sh
(编辑脚本内容)
chmod +x test-upload.sh(给脚本附加可执行权限)
chmod +x %FastDFS%/conf/client.conf
./test-upload.sh(执行脚本即启动了tracker服务器)
这两种方法如果有一种不可以,请尝试另一种。
如果命令行反馈信息如下,说明文件上传成功:
从服务的FastDFS的搭建和主服务一样,只不过不用搭建tracker,只部署storage即可。部署好之后,在tracker里上传的文件,可以在两个storage里都可以查看。
2.3 部署NGINX
nginx必须和想查看的storage部署在一个服务器上,本实例中将B中的storage作为查看使用,所以nginx也部署在B服务器上。
安装gcc
yum install gcc-c++
安装PCRE
yum install –y pcre pcre-devel
安装zlib
yum install –y zlib zlib-devel
安装OpenSSL
yum install –y openssl openssl-devel
本地使用的nginx是免安装版的,直接解压就可以使用,如果大家的nginx不是免安装版,需要先进行安装哦,在此就不叙述了,大家自行搜索下如何在centos下安装nginx即可。
将nginx.zip放到 /usr/local/ 目录下,解压nginx
unzip nginx.zip
进入解压后的目录 /usr/local/nginx/conf 目录下修改配置文件:
cd /usr/local/nginx/conf
vim nginx.conf
找到以下部分并进行修改:
将端口设置为80,server_name设置为 本机IP。
在文件最后一行(括号内)加上
include /usr/local/nginx/conf/image.conf
这是引用image.conf配置文件。
保存后退出。
还在 /usr/local/nginx/conf 目录下 编辑文件image.conf
vim image.conf
输入以下代码:
listen: 即为浏览器访问数据的端口号
server_name: 为本机IP
定义浏览器访问FastDFS的路径为 /group1/M00
因此需要在服务器B上设置软连接
在 /home/zhckpt/storage/data下创建目录group1
cd /home/zhckpt/storage/data
mkdir group1
ln -s /home/zhckpt/storage/data/ /home/zhckpt/storage/data/group1/M00
设置成功后再启动FastDFS和Nginx,再次上传一条数据到FastDFS中,如下图所示
复制输出的url地址,将IP改为nginx所在服务器IP,将端口修改为image.conf中配置的端口,在浏览器中输入即可获取到刚刚上传的数据。至此,所有服务搭建成功!