来源:https://github.com/happyfish100/fastdfs/wiki
1、编译环境
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
报错:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
原因:Centos8于2021年年底停止了服务,大家再在使用yum源安装时候,出现上述错误,CentOS 8 的yum源失效了,需要更新下yum源
(1)进入yum的repos目录
cd /etc/yum.repos.d/
(2)修改所有的CentOS文件内容
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
(3)更新yum源为阿里镜像
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all
yum makecache
(4)yum安装测试是否可以yum安装
yum install wget –y
2、磁盘目录
说明 | 位置 |
---|---|
所有安装包 | /user/local/src |
数据存储位置 | /home/dfs/ |
mkdir /home/dfs #创建数据存储目录
cd /usr/local/src #切换到安装目录准备下载安装包
3、安装libfatscommon
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/
./make.sh && ./make.sh install #编译安装
4、安装FastDFS
cd ../ #返回上一级目录
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/
./make.sh && ./make.sh install #编译安装
#配置文件准备
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
报错
原因:
如果是从github上下载或拉取或者是从官方上下载的安装包很有可能是最新的,但是最新的里面它其实是缺少文件的,所以我之前在下载时按照其他一些博主的安装步骤是不对的(很多博主发文的时候时间较早),缺少了 libserverframe
网络框架
解决:
git clone https://github.com/happyfish100/libserverframe.git --depth 1
cd libserverframe/
./make.sh && ./make.sh install #编译安装
cd ../ #返回上一级目录
然后继续执行安装FastDFS步骤
5、安装fastdfs-nginx-module
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
6、安装nginx
wget http://nginx.org/download/nginx-1.15.4.tar.gz #下载nginx压缩包
tar -zxvf nginx-1.15.4.tar.gz #解压
cd nginx-1.15.4/
#添加fastdfs-nginx-module模块
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/
make && make install #编译安装
7、部署
# /home/dfs下新建三个文件夹分别存放tracker、storage、client的日志和数据
cd /home/dfs
mkdir tracker
mkdir storage
mkdir client
# 修改/home/dfs及下属所有文件的权限
chmod -R 777 /home/dfs
(1)tracker部署
# 服务器ip为 192.168.52.2, 192.168.52.3, 192.168.52.4
# 我建议用ftp下载下来这些文件 本地修改
vim /etc/fdfs/tracker.conf
# 配置文件解读
# 将追踪器和部署的主机的IP地址进程绑定, 也可以不指定
# 如果不指定, 会自动绑定当前主机IP, 如果是云服务器建议不要写
bind_addr=
# 追踪器监听的端口
port=22122
# 追踪器存储日志信息的目录, xxx.pid文件, 必须是一个存在的目录
base_path=/home/dfs/tracker
(2)storage部署
vim /etc/fdfs/storage.conf
# 配置文件解读
# 当前存储节点对应的主机属于哪一个组
group_name=group1
# 当前存储节点和所应该的主机进行IP地址的绑定, 如果不写, 有fastdfs自动绑定
bind_addr=
# 存储节点绑定的端口
port=23000
# 存储节点写log日志的路径
base_path=/home/dfs/storage
# 存储节点提供的存储文件的路径个数
store_path_count=1
# 具体的存储路径
store_path0=/home/dfs/storage
# 追踪器的地址信息
tracker_server=192.168.52.2:22122 # 服务器1
# tracker_server=192.168.52.3:22122 # 服务器2,有多个主机要进行分布式部署时添加
# tracker_server=192.168.52.4:22122 # 服务器3,有多个主机要进行分布式部署时添加
(3)client部署
vim /etc/fdfs/client.conf
# 客户端写log日志的目录
# 该路径必须存在
# 当前的用户对于该路径中的文件有读写权限
base_path=/home/dfs/client
# 要连接的追踪器的地址信息
tracker_server=192.168.52.2:22122 # 服务器1
# tracker_server=192.168.52.3:22122 # 服务器2
# tracker_server=192.168.52.4:22122 # 服务器3
8、启动
(1)防火墙
#不关闭防火墙的话无法使用
systemctl stop firewalld.service #关闭
systemctl restart firewalld.service #重启
# 云服务器需要配置安全组以及防火墙开放端口
# 防火墙开放端口使用以下命令
systemctl status firewalld # 查看防火墙状态
firewall-cmd --zone=public --list-ports # 查看当前防火墙开放的端口有哪些
firewall-cmd --zone=public --add-port=22122/tcp --permanent # 开放22122端口
firewall-cmd --zone=public --add-port=23000/tcp --permanent # 开放23000端口
firewall-cmd --zone=public --add-port=22/tcp --permanent # 若没配置过先开放22端口
systemctl restart firewalld.service # 重启防火墙服务
(2)第一个启动追踪器 - 守护进程
修改 /usr/lib/systemd/system/fdfs_trackerd.service 中的 PIDFile,格式为:
PIDFile=$base_path/data/fdfs_trackerd.pid
比如:
PIDFile=/home/dfs/tracker/data/fdfs_trackerd.pid
systemctl start fdfs_trackerd #启动tracker服务
systemctl restart fdfs_trackerd #重启动tracker服务
systemctl stop fdfs_trackerd #停止tracker服务
systemctl enable fdfs_trackerd #开机自启动
(3)第二个启动存储节点 - 守护进程
修改 /usr/lib/systemd/system/fdfs_storaged.service 中的 PIDFile,格式为:
PIDFile=$base_path/data/fdfs_storaged.pid
比如:
PIDFile=/home/dfs/storage/data/fdfs_storaged.pid
systemctl start fdfs_storaged #启动storage服务
systemctl restart fdfs_storaged #重动storage服务
systemctl stop fdfs_storaged #停止storage服务
systemctl enable fdfs_storaged #开机自启动
(4)最后启动客户端 - 普通进程
# 上传测试,返回ID表示成功 如:group1/M00/00/00/L3PdMWVTY-mAJ8edAA-itrfn0m4.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
# 可以在group1对应的路径去找到该上传的文件,在本文中路径为
# /home/dfs/storage/data/00/00/L3PdMWVTY-mAJ8edAA-itrfn0m4.tar.gz
# 文件重命名是为了保证唯一性
# 下载测试
# fdfs_download_file /etc/fdfs/client.conf 上传成功之后得到的字符串(fileID), 即:
fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/L3PdMWVTY-mAJ8edAA-itrfn0m4.tar.gz
9、检测集群
fdfs_monitor /etc/fdfs/storage.conf
# 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息