环境准备
服务器主机名 | ip | 说明 |
---|---|---|
tracker | 192.168.1.128 | 负载均衡服务 |
storage1 | 192.168.1.129 | 存储服务 |
storage2 | 192.168.1.130 | 存储服务 |
备注:实验时,务必关闭机器的iptables、selinux。
Tracker 服务器和storage服务器一样,都需要安装FastDFS组件,同时也都需要安装FastDFS的nginx组件,不同的地方就是Tracker服务器启动的是Tracker负载均衡服务,而storage服务器启动的是storage存储服务。
1、tracker 192.168.1.128
1.1 准备工作
CentOS 7
// 安装编译工具
yum -y groupinstall 'Development Tools'
yum -y install wget
yum -y install zip unzip
yum -y install gcc
// 上传所需压缩包文件至【/usr/local/fdfs】目录下
fastdfs-nginx-master.zip
master.zip
V5.05.tar.gz
// 解压至当前目录
unzip -d . master.zip
unzip -d . fastdfs-nginx-master.zip
tar zxvf V5.05.tar.gz -C /usr/local/fdfs
1.2 安装libfastcommon类库
FastDFS依赖libfastcommon类库
[root@guanz libfastcommon-master]# cd libfastcommon-master
[root@guanz libfastcommon-master]# ./make.sh
[root@guanz libfastcommon-master]# ./make.sh install
报错case:
./make.sh
问题:
./make.sh: line 14: gcc: command not found
./make.sh: line 15: ./a.out: No such file or directory
cc -Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -g -O3 -c -o hash.o hash.c
make: cc: Command not found
make: *** [hash.o] Error 127
解决:
yum install gcc
1.3 安装FastDFS
[root@guanz fdfs]# cd fastdfs-5.05/
[root@guanz fastdfs-5.05]# ./make.sh
[root@guanz fastdfs-5.05]# ./make.sh install
报错case:
./make.sh
问题:
make: *** [storage_service.o] Error 1
./make.sh: line 171: perl: command not found
./make.sh: line 172: perl: command not found
./make.sh: line 173: perl: command not found
./make.sh: line 174: perl: command not found
./make.sh: line 175: perl: command not found
./make.sh: line 176: perl: command not found
./make.sh: line 179: perl: command not found
解决:
yum -y install perl perl-devel
到此为止,已经安装了FastDFS的tracker和storage,只不过还没有进行配置。
进入/etc/fdfs目录下,拷贝conf文件。
[root@guanz fastdfs-5.05]# cd /etc/fdfs/
[root@guanz fdfs]# ll
total 20
-rw-r--r--. 1 root root 1461 Dec 21 11:45 client.conf.sample
-rw-r--r--. 1 root root 7829 Dec 21 11:45 storage.conf.sample
-rw-r--r--. 1 root root 7102 Dec 21 11:45 tracker.conf.sample
[root@guanz fdfs]# cp tracker.conf.sample tracker.conf
[root@guanz fdfs]# ll
total 28
-rw-r--r--. 1 root root 1461 Dec 21 11:45 client.conf.sample
-rw-r--r--. 1 root root 7829 Dec 21 11:45 storage.conf.sample
-rw-r--r--. 1 root root 7102 Dec 21 11:47 tracker.conf
-rw-r--r--. 1 root root 7102 Dec 21 11:45 tracker.conf.sample
1.4 修改tracker配置文件,并启动
1.4.1 修改配置文件
tracker.conf
// 创建数据文件和日志目录
[root@guanz fdfs]# mkdir -p /mnt/disk1/fastdfs_data/tracker
#一般只需改动以下几个参数即可:
disabled=false #启用配置文件,false表示启用
port=22122 #设置tracker的端口号
base_path=/mnt/disk1/fastdfs_data/tracker #设置tracker的数据文件和日志目录(需预先创建)
http.server_port=8888 #设置http端口号
store_group=group3 # 设置group
1.4.2 启动tracker
[root@guanz fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
1.4.3 查看运行状态
[root@guanz fdfs]# netstat -unltp | grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15973/fdfs_trackerd
[root@guanz fdfs]# ps -ef | grep fdfs
root 15973 1 0 11:53 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
root 15983 3032 0 11:53 pts/1 00:00:00 grep --color=auto fdfs
1.4.4 查看日志
tail -f /data/fdfs/logs/trackerd.log
1.4.5 设置开机自启动tracker
vim /etc/rc.local
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
whereis fdfs_trackerd #查看fdfs_trackerd所在路径
2、storage1服务器 192.168.1.129
2.1 安装步骤
第【1】、【2】步同Tracker服务器一样,直接从第【4】步配置文件开始。
2.2 修改配置文件
storage.conf
group_name=group2
port=23000
base_path=/mnt/disk1/fastdfs_data/storage
store_path0=/mnt/disk1/fastdfs_data/storage
tracker_server=192.168.1.128:22122
http.server_port=8888
3、storage2服务器 192.168.1.130
3.1 安装步骤
第【1】、【2】步同Tracker服务器一样,直接从第【4】步配置文件开始。
3.2 修改配置文件
storage.conf
group_name=group3
port=2300
base_path=/mnt/disk1/fastdfs_data/storage
store_path0=/mnt/disk1/fastdfs_data/storage
tracker_server=192.168.1.128:22122
http.server_port=8888
4. 安装nginx和fastdfs-nginx-module模块
前言
到目前为止,已经安装了Tracker服务器和Storage服务器,但是问题在于,通过Tracker上传下载都是通过nginx模块来指定放到哪一个组(group),并返回组名和路径。而stroage服务器需要通过组名和路径进行访问,所以无论Tracker服务器和Stroage服务器都需要安装该模块。
准备工作
① 下载fastdfs 的nginx模块
fastdfs-nginx-module-master
② 下载安装依赖
pcre库依赖
pcre-8.38.tar.gz
zlib-1.2.3.tar.gz
openssl依赖
openssl-1.0.1e.tar.gz
③ 安装nginx模块
ngx_openresty-1.7.10.1.tar.gz
4.1 安装pcre
// 解压
[root@guanz openssl-1.0.1e]# tar zxvf pcre-8.38.tar.gz -C .
// 进入解压目录,执行
[root@guanz openssl-1.0.1e]# cd pcre-8.38/
[root@guanz openssl-1.0.1e]# ./configure && make && make install
4.2 安装openssl
// 创建目录
[root@guanz openssl-1.0.1e]# mkdir openssl
// 解压
tar zxvf openssl-1.0.1e.tar.gz -C .
// 进入解压目录,执行。
[root@guanz openssl-1.0.1e]# cd openssl-1.0.1e/
[root@guanz openssl-1.0.1e]# ./config && make && make install
// 若报错:POD document had syntax errors at /usr/bin/pod2man line 69\. make: *** [install_docs]
// 执行语句,重新编译安装即可
rm -f /usr/bin/pod2man
[root@guanz openssl-1.0.1e]# ./config && make && make install
4.3 安装zlib
// 解压
[root@guanz zlib]# tar zxvf zlib-1.2.3.tar.gz -C .
// 进入解压目录,执行。
[root@guanz zlib]# cd zlib-1.2.3/
[root@guanz zlib-1.2.3]# ./configure && make && make install
4.4 安装ngx_openresty-1.7.10.1
// 解压
// 进入解压目录,执行
./configure --with-luajit --with-http_stub_status_module --with-http_realip_module --with-pcre=/data/fastdfs/pcre-8.38 --add-module=/data/fastdfs/fastdfs-nginx-module-master/src/ --with-http_ssl_module
./configure --with-luajit --with-http_stub_status_module --with-http_realip_module --with-pcre=/usr/fastdfs/pcre-8.38 --add-module=/usr/fastdfs/fastdfs-nginx-module-master/src/ --with-http_ssl_module --with-openssl=/usr/openssl/openssl-1.0.1e
./configure --prefix=/usr/local/nginx/ --add-module=/usr/fastdfs/fastdfs-nginx-module-master/src
./configure --with-luajit --with-http_stub_status_module --with-http_realip_module --with-pcre=/usr/local/fdfs/pcre-8.38 --add-module=/usr/local/fdfs/fastdfs-nginx-module-master/src/ --with-http_ssl_module --with-openssl=/usr/openssl/openssl-1.0.1e
// 执行
gmake
gmake install
// 拷贝文件 mod_fastdfs.conf http.conf ime.types
cp /usr/local/fdfs/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
cp /usr/local/fdfs/fastdfs-5.05/conf/http.conf /usr/local/fdfs/fastdfs-5.05/conf/mime.types /etc/fdfs/
// 修改mod*.conf文件。
// 创建文件夹
/mnt/disk1/fastdfs_data
drwxr-xr-x. 2 root root 6 Dec 21 21:58 client
drwxr-xr-x. 2 root root 6 Dec 21 21:58 storage_backup
drwxr-xr-x. 4 root root 30 Dec 21 11:53 tracker
4.5 安装nginx
// 解压
// 进入解压目录,执行
./configure && make && make install
// 修改配置文件
移动proxy.conf
// 创建路径
mkdir -p /var/cache/nginx/proxy_cache/
mkdir -p /log/nginx/ttc_log
tracker:
// 若报错:
// 进入nginx-1.17.3
./configure --with-stream
make && make install
storage:报错
无法启动,报找不到
// 进入nginx-1.17.3
./configure --prefix=/usr/local/nginx/ --add-module=/usr/local/fdfs/fastdfs-nginx-module-master/src
make && make install
4.6 相关配置文件配置
// 将配置文件拷贝到 /etc/fdfs/目录下,同时也将依赖的配置目录拷贝到/etc/fdfs目录下
cp /data/FastDFS/fastdfs-nginx-module-master/src mod_fastdfs.conf /etc/fdfs/
cp /root/fastdfs-master/conf/http.conf /root/fastdfs-master/conf/mime.types /etc/fdfs
修改配置文件 mod_fastdfs.conf
一般只需改动以下几个参数即可:
base_path=/home/.../fastdfs #保存日志目录
tracker_server=ip+:端口 #tracker服务器的IP地址以及端口号
storage_server_port=23000#storage服务器的端口号
group_name=group1#当前服务器的group名
url_have_group_name = true #文件url中是否有group名
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/home/fastdfs #存储路径
http.need_find_content_type=true#从文件扩展名查找文件类型(nginx时为true)
group_count = 2 #设置组的个数
在末尾增加2个组的具体信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs
建立M00至存储目录的符号连接:
ln -s /data/fdfs/data/ /data/fdfs/data/M00
ln -s
/mnt/disk1/fastdfs_data/storage/data/ /mnt/disk1/fastdfs_data/storage/data/M00
4.6.1 tracker相关配置文件
client.conf
base_path=/mnt/disk1/fastdfs_data/client
tracker_server=192.168.1.128:22122
mod_fastdfs.conf
tracker_server=192.168.1.128:22122
group_name=group1/group2/group3
store_path_count=3
store_path0=/usr/fastdfs/data/storage_1
store_path1=/usr/fastdfs/data/storage_2
store_path1=/usr/fastdfs/data/storage_3
storage_server_port=23000
group_count = 3
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/local/fdfs/data/storage_1
[group2]
group_name=group2
storage_server_port=23001
store_path_count=1
store_path0=/usr/local/fdfs/data/storage_2
[group3]
group_name=group3
storage_server_port=23002
store_path_count=1
store_path0=/usr/local/fdfs/data/storage_3
storage.conf
group_name=group1
base_path=/usr/local/fdfs/data/storage_1
store_path0=/usr/local/fdfs/data/storage_1
tracker_server=192.168.1.128:22122
http.server_port=8888
storage_2.conf
group_name=group2
port=23001
base_path=/usr/local/fdfs/data/storage_2
store_path0=/usr/local/fdfs/data/storage_2
tracker_server=192.168.1.128:22122
http.server_port=8889
storage_3.conf
group_name=group3
port=23002port=23002
base_path=/usr/local/fdfs/data/storage_3
store_path0=/usr/local/fdfs/data/storage_3
tracker_server=192.168.1.128:22122
http.server_port=8887
4.6.2 storage1相关配置文件
mod_fastdfs.conf
tracker_server=192.168.1.128:22122
storage_server_port=23000
group_name=group2
store_path0=/mnt/disk1/fastdfs_data/storage
group_count = 2
[group1]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/mnt/disk1/fastdfs_data/storage
[group2]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/mnt/disk1/fastdfs_data/storage
client.conf
tracker_server=192.168.1.128:22122
http.tracker_server_port=80
4.6.3 storage2 相关配置文件
mod_fastdfs.conf
tracker_server=192.168.1.128:22122
storage_server_port=23000
group_name=group3
store_path0=/mnt/disk1/fastdfs_data/storage
group_count = 2
[group1]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/mnt/disk1/fastdfs_data/storage
[group2]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/mnt/disk1/fastdfs_data/storage
client.conf
tracker_server=192.168.1.128:22122
http.tracker_server_port=80
4.7 配置启动nginx
Tracker服务器需要设定如何分配到Storage服务器
Storage服务器需要监听相应的接口,指定到文件
5.启动并测试
5.1开机自启动
tracker
编辑:vi /etc/rc.d/rc.local
storage1
编辑:vi /etc/rc.d/rc.local
storage2
编辑:vi /etc/rc.d/rc.local
5.2 关闭防火墙
iptables -F
5.3 测试
// 执行如下命令,上传一张图片
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf xwz.jpg
// 返回路径。
[root@guanz opt]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf xwz.jpg
group3/M00/00/03/wKgBgmBAsFKAEzpwAAG_bqug_v8373.jpg
浏览器输入地址:http://192.168.1.128:12345/group3/M00/00/03/wKgBgmBAsFKAEzpwAAG_bqug_v8373.jpg
至此,fastdfs服务搭建完成。