一、初始化环境准备
1.1、选择合适的版本下载
https://github.com/happyfish100/fastdfs/releases
本教程下载FastDFS-5.11.tar.gz
1.2、FastDFS安装环境
FastDFS是 C 语言开发,建议在 linux 上运行,本教程使用 Centos7 作为安
装环境。安装 FastDFS需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果
没有 gcc 环境,需要安装gcc 。
yum install gcc-c++
1.2.1、安装libevent
yum -y install libevent
1.2.2、安装libfastcommon
下载地址:https://github.com/happyfish100/libfastcommon/releases
libfastcommon从开源项目FastDFS中提取的常用函数库。这个库非常简单和稳定。功能包括:字符串,记录器,链,哈希,套接字,ini文件阅读器,base64编码/解码,url编码/解码,快速计时器,跳过列表,对象池等。详细信息请参阅c头文件。
//解压文件
tar -zxvf libfastcommon-1.0.39.tar.gz
//编译文件
./make.sh
//安装依赖
./make.sh install
1.2.3、./make.sh编译时出错---perl:未找到命令,安装所需peer依赖
//安装所需以来以及基本的工具
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
1.2.4、如果编译storage出现错误undefined reference to `g_exe_name',执行如下命令重新编译安装
//清理编译
./make.sh clean
//重新安装
./make.sh install
1.3、Tracker编译安装
1.3.1、安装Tracker
//解压FastDFS文件
tar -zxvf fastdfs-5.11.tar.gz
//编译源码
./make.sh
//安装Tracker
./make.sh install
安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下。
//复制配置文件
cp -r conf/* /etc/fdfs/
1.3.2、配置Tracker
进入到/etc/fdfs/下
//拷贝一份新的配置文件
cp tracker.conf.sample tracker.conf
//修改tracker.conf
vi tracker.conf
//配置基本路径
base_path=/home/yuqing/FastDFS
//改为
//没有此目录需要创建此目录,个人一般使用FastDFS作为存放数据的基本目录
base_path=/home/FastDFS
//配置http端口
http.server_port=80
1.4、启动Tracker
//启动Tracker命令
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
//正常启动过程,什么都不显示
[root@localhost home]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
[root@localhost home]#
//再次需要重启,也可以使用此命令启动
[root@localhost home]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
waiting for pid [16964] exit ...
starting ...
[root@localhost home]#
1.5、Storage安装
1.5.1、安装Tracker已经安装过Storage,直接配置Storage就好
//重命名storage配置文件
cp storage.conf.sample storage.conf
//修改storage.conf
vim storage.conf
//配置base_path
base_path=/home/fastdfs
//配置store_path0
store_path0=/home/fastdfs/fdfs_storage
//配置Tracker_Server
tracker_server=192.168.168.138:22122
//配置http端口
http.server_port=8888
1.5.2、启动Storage
//启动Storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
//正常启动过程
[root@localhost home]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
waiting for pid [23896] exit ...
starting ...
[root@localhost home]#
1.6、文件上传测试
1.6.1、客户端配置
//在/etc/fdfs下配置client.conf文件
cp client.conf.sample client.conf
vim client.conf
//根据自己虚拟机的IP配置,目录没有必须手动创建
base_path=/home/fastdfsi
tracker_server=192.168.168.138:22122
//如果在同一台虚拟机不能和TrackerServer使用相同的端口
http.tracker_server_port=8080
1.6.2、上传文件测试
//个人测试如下
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/soft/timg.jpg
//上传格式
/usr/bin/fdfs_test /etc/fdfs/client.conf upload 上传文件
1.6.3、上传正常打印的日志
[root@localhost fdfs]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/soft/timg.jpg
This is FastDFS client test program v5.11
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2019-09-10 06:01:55] DEBUG - base_path=/home/fastdfsi, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.168.138, port=23000
group_name=group1, ip_addr=192.168.168.138, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKioil13dJOAPWKXAAdOmLRmegY634.jpg
source ip address: 192.168.168.138
file timestamp=2019-09-10 06:01:55
file size=478872
file crc32=3026614790
example file url: http://192.168.168.138:8080/group1/M00/00/00/wKioil13dJOAPWKXAAdOmLRmegY634.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKioil13dJOAPWKXAAdOmLRmegY634_big.jpg
source ip address: 192.168.168.138
file timestamp=2019-09-10 06:01:56
file size=478872
file crc32=3026614790
example file url: http://192.168.168.138:8080/group1/M00/00/00/wKioil13dJOAPWKXAAdOmLRmegY634_big.jpg
[root@localhost fdfs]#
二、FastDFS和Nginx的整合
2.1、FastDFS的Nginx代理模块
2.1.1、下载fastdfs-nginx-module-1.20.tar.gz
https://github.com/happyfish100/fastdfs-nginx-module/releases
2.1.2、解压配置
//解压
tar -zxvf fastdfs-nginx-module-1.20.tar.gz
//修改config文件
vim fastdfs-nginx-module-1.20/src/config
ngx_module_incs="/usr/local/include"
修改为:
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/local/include"
修改为:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
2.1.3、拷贝mod_fastdfs.conf并进行配置
//拷贝配置文件
cp /usr/soft/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs/
//修改配置文件
vim /e
base_path=/home/fastdfs //基本路径
tracker_server=192.168.168.138:22122 //Tracker的服务IP,根据个人配置
url_have_group_name = true //是否含有组名
store_path0=/home/fastdfs/fdfs_storage //存储目录
2.2、安装Nginx
2.2.1、解压配置Nginx
//解压Nginx
tar -zxvf nginx-1.16.1.tar.gz
//配置安装路径
cd nginx-1.16.1
//配置安装路径和添加fastdfs的Nginx模块
./configure --prefix=/usr/soft/nginx --add-module=/usr/soft/fastdfs-nginx-module-1.20/src
//编译安装Nginx
make && make install
2.2.2、配置nginx.conf
//编辑nginx配置文件
vim /usr/soft/nginx/conf/nginx.conf
//配置一个Server
server {
listen 80;
server_name localhost;
#Nginx默认配置
location / {
root html;
index index.html index.htm;
}
#FastDfs的配置
location /group1/M00/{
root /home/fastdfs/fdfs_storage/data;
ngx_fastdfs_module;
}
}
2.3、启动Nginx
#启动Nginx
./usr/soft/nginx/sbin/nginx
#重新加载Nginx
./usr/soft/nginx/sbin/nginx -s reload
2.4、浏览器访问测试上传文件(根据上传返回的Uri可正常访问上传文件)
http://192.168.168.138/group1/M00/00/00/wKioil146SeAAJigAAdOmLRmegY411_big.jpg
三、安装中碰到的问题
3.1、致命错误:common_define.h没有那个文件或目录
解决办法:
在本文2.1.2中正确的配置路径,即可解决此问题。
3.2、小问题
个人安装中还出现很多问题,但都是较为简单的小问题,查看下报错Log基本都解决了,上面这个错误找了好久,大家按照教程一步一步来,基本可以顺利的搭建FastDFS,教程中可能有很多我没有注意到的错误,希望大家多多指正。
安装FastDfs中可能会碰到缺少http.conf和mine.type这俩配置文件,前面复制配置文件到/etc/fdfs可以选择复制所有,这样可以避免出现问题,如果配置文件缺失,可以到解压的Nginx下寻找。