软件环境
Centos7
FastDFS v5.05
libfastcommon V1.0.7(是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库)
假设当前linux服务器ip为192.168.1.100
下载地址 https://github.com/happyfish100
编译和安装所需的依赖包
yum install -y make cmake gcc gcc-c++
安装libfastcommon
cd /usr/local/src/
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
tar -zxvf V1.0.7.tar.gz
cd libfastcommon-1.0.7
编译和安装
./make.sh
./make.sh install
libfastcommon 默认安装到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so
因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安装FastDFS
cd /usr/local/src/
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
tar -zxvf V5.05.tar.gz
cd fastdfs-5.05
编译和安装
./make.sh
./make.sh install
采用默认安装的方式安装,安装后的相应文件与目录:
A、服务脚本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
B、配置文件在(样例配置文件):
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
C、命令工具在/usr/bin/目录下的:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh
因为 FastDFS 服务脚本设置的 bin 目录是/usr/local/bin,但实际命令安装在/usr/bin
因此需要修改 FastDFS 服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker
两个脚本中的/usr/local/bin 修改成/usr/bin
vim /etc/init.d/fdfs_trackerd
使用查找替换命令进统一修改 先输入冒号: 再输入%s+/usr/local/bin+/usr/bin 回车
vim /etc/init.d/fdfs_storaged
使用查找替换命令进统一修改 先输入冒号: 再输入%s+/usr/local/bin+/usr/bin 回车
配置FastDFS跟踪器tracker
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim /etc/fdfs/tracker.conf
修改的内容如下:
disabled=false #启用配置文件
port=22122 #tracker 的端口号,一般采用 22122 这个默认端口
base_path=/fastdfs/tracker #tracker 的数据文件和日志目录
创建好上面配置的base_path目录
mkdir -p /fastdfs/tracker
防火墙打开端口22122
firewall-cmd --zone=public --add-port=22122/tcp --permanent
重新载入
firewall-cmd --reload
启动tracker
/etc/init.d/fdfs_trackerd start
初次成功启动,会在/fastdfs/tracker 目录下创建 data、logs 两个目录
查看22122端口监听情况
netstat -unltp|grep fdfs
查看tracker的启动日志
tail -f /fastdfs/tracker/logs/trackerd.log
关闭tracker
/etc/init.d/fdfs_trackerd stop
设置tracker开机启动
vim /etc/rc.d/rc.local
添加以下内容
/etc/init.d/fdfs_trackerd start
配置FastDFS存储器storage
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vim /etc/fdfs/storage.conf
修改的内容如下:
disabled=false #启用配置文件
group_name=group1 #组名(第一组为 group1,第二组为 group2)
port=23000 #storage 的端口号,默认为23000,同一个组的 storage 端口号必须相同
base_path=/fastdfs/storage #设置storage存储目录
store_path0=/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和 store_path 个数匹配
tracker_server=192.168.1.100:22122 #tracker服务器的IP地址和端口
http.server_port=80 #设置 http 端口号
创建好上面配置的base_path目录
mkdir -p /fastdfs/storage
防火墙打开端口23000
firewall-cmd --zone=public --add-port=23000/tcp --permanent
重新载入
firewall-cmd --reload
启动storage
/etc/init.d/fdfs_storaged start
初次成功启动,会在/fastdfs/storage 目录下创建 data、logs 两个目录
查看23000端口监听情况
netstat -unltp|grep fdfs
查看storage的启动日志
tail -f /fastdfs/storage/logs/storaged.log
关闭storage
/etc/init.d/fdfs_storaged stop
设置storage开机启动
vim /etc/rc.d/rc.local
添加以下内容
/etc/init.d/fdfs_storaged start
文件上传测试
修改FastDFS客户端配置文件
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vim /etc/fdfs/client.conf
修改内容如下:
base_path=/fastdfs/client
tracker_server=192.168.1.100:22122
创建好上面配置的base_path目录
mkdir -p /fastdfs/client
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/test.png
能返回文件ID号,说明上传成功
比如返回 group1/M00/00/00/xxx.jpg
安装Nginx
Nginx只需要安装到StorageServer所在的服务器即可,用于访问文件。我这里由于是单机,TrackerServer和StorageServer在一台服务器上。
此处省略nginx安装
打开上面storage配置的http端口80
防火墙打开端口80
firewall-cmd --zone=public --add-port=80/tcp --permanent
重新载入
firewall-cmd --reload
修改nginx.conf
部分配置如下:
server {
listen 80;
server_name file.xxx.com;
location /group1/M00 {
alias /fastdfs/storage/data;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
重启nginx
浏览器访问测试 刚刚上传的文件 http://file.xxx.com/group1/M00/00/00/xxxx.jpg