FastDFS安装及使用
1. FastDFS安装
包下载地址:https://github.com/happyfish100
1.1 安装前的准备
检查Linux上是否安装了gcc、libevent、libevent-devel
yum list installed | grep gcc yum list installed | grep libevent yum list installed | grep libevent-devel
如果没有安装,则需进行安装
yum install gcc libevent libevent-devel -y yum install cmake make gcc-c++ -y
创建一个目录,把有关fdfs存储在一起
mkdir -p /usr/local/fastdfs
进入目录,开始下载各种所需库并安装
cd /usr/local/fastdfs
以下每一步操作都需要先回到该目录!!!
1.2 安装 libfastcommon库
libfastcommon库是FastFDS文件系统运行所需要的公共C语言函数库
首先拷贝libfastcommon库到linux上,或者直接下载
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
解压
tar -zxvf libfastcommon-1.0.43.tar.gz
进入目录
cd libfastcommon-1.0.43/
ls查看目录,然后编译
[root@localhost libfastcommon-1.0.43]# ls doc HISTORY INSTALL libfastcommon.spec make.sh php-fastcommon README src [root@localhost libfastcommon-1.0.43]# ./make.sh
编译完成后进行安装
[root@localhost libfastcommon-1.0.43]# ./make.sh install
因为FastFDS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so ln -s /usr/local/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
1.3 安装FastDFS
下载FastDFS
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
解压并进入目录
tar -zxvf fastdfs-6.06.tar.gz && cd fastdfs-6.06
在单机模式(集群不建议更改)下可以更改下安装目录,比如更改到/usr/local;不更改跳过此步骤
vim make.sh # 进入编辑模式 /TARGET_PREFIX # 查找TARGET_PREFIX,修改值为 /usr/local
编译安装
./make.sh && ./make.sh install
安装后,FastFDS主程序所在的位置是:
/usr/local/bin
可执行文件(内置命令)所在位置。默认安装在/usr/bin
中。/etc/fdfs
配置文件所在位置。就是默认位置。/usr/local/lib64
主程序代码所在位置。默认在/usr/bin
中。/usr/local/include/fastdfs
包含的一些插件组所在位置。默认在/usr/include/fastdfs
中。/etc/init.d
对应服务脚本所在位置。默认位置。
2. FastDFS配置&启动
tips:先启动tracker,最后启动storage!!!否则会启动失败
2.1 配置tracker&启动
进入
/etc/fdfs
目录,使用模板创建tracker.conf文件cp tracker.conf.sample tracker.conf
使用vim修改tracker.conf文件
base_path = /fastdfs/tracker # 配置tracker存储数据的目录,默认在/home/yuqing/fastdfs,所以需要修改
修改完成后记得创建目录
mkdir -p /fastdfs/tracker
启动tracker
# 1.进入/etc/init.d/目录 cd /etc/init.d/ # 2.因为前面修改了安装位置,所以需要修改tracker配置文件的启动目录。没有修改安装位置跳过此步骤 vim fdfs_trackerd # 修改RPG目录,把/usr/bin/改为/usr/local/bin/ # 3.启动tracker [root@localhost init.d]# ./fdfs_trackerd start # 启动tracker Starting FastDFS tracker server: [root@localhost init.d]# ./fdfs_trackerd status # 查看启动状态 fdfs_trackerd (pid 6637) is running... [root@localhost init.d]# ps -ef | grep fdfs # 验证启动状态 root 6637 1 0 14:48 ? 00:00:00 /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf root 6670 2427 0 14:49 pts/0 00:00:00 grep --color=auto fdfs [root@localhost init.d]#
设置开机启动
vim /etc/rc.d/rc.local # 在末尾增加 /etc/init.d/fdfs_trackerd start
2.2 配置storage&启动
进入
/etc/fdfs
目录,使用模板创建storage.conf文件cp storage.conf.sample storage.conf
使用vim修改storage.conf文件
base_path=/fastdfs/storage/base #storage存储数据目录 store_path0=/fastdfs/storage/store #真正存放文件的目录 tracker_server=192.168.21.129:22122 #注册当前存储节点的跟踪器地址
修改完成后记得创建目录
[root@localhost fdfs]# mkdir -p /fastdfs/storage/base [root@localhost fdfs]# mkdir -p /fastdfs/storage/store
启动storage
# 1.进入/etc/init.d/目录 cd /etc/init.d/ # 2.因为前面修改了安装位置,所以需要修改tracker配置文件的启动目录。没有修改安装位置跳过此步骤 vim /etc/init.d/fdfs_storaged # 修改RPG目录,把/usr/bin/改为/usr/local/bin/ # 3.启动storage [root@localhost fdfs]# /etc/init.d/fdfs_storaged start Reloading systemd: [ OK ] Starting fdfs_storaged (via systemctl): [ OK ] [root@localhost fdfs]# /etc/init.d/fdfs_storaged status ● fdfs_storaged.service - LSB: FastDFS storage server Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged; bad; vendor preset: disabled) Active: active (exited) since Wed 2020-12-23 15:08:48 CST; 28s ago Docs: man:systemd-sysv-generator(8) Process: 7124 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS) Dec 23 15:08:48 localhost.localdomain systemd[1]: Starting LSB: FastDFS storage server... Dec 23 15:08:48 localhost.localdomain fdfs_storaged[7124]: Starting FastDFS storage server: Dec 23 15:08:48 localhost.localdomain systemd[1]: Started LSB: FastDFS storage server.
2.3 客户端配置(仅测试用,可以不进行此步骤而使用代码测试)
同上进入
/etc/fdfs
目录,使用模板创建client.conf文件并修改配置cd /etc/fdfs cp client.conf.sample client.conf vim client.conf mkdir -p /fastdfs/client # client.conf 修改以下两个配置 base_path = /fastdfs/client # 客户端产生的数据 tracker_server = 192.168.21.129:22122 # tracker的服务
上面执行完毕即可测试上传文件了
[root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /a.jpg group1/M00/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg # 解释: # fdfs_upload_file 是上传文件命令,在/etc/local/bin下,因为/etc/local/bin为环境变量,所以可以在任何地方进行调用 # /etc/fdfs/client.conf 是指定客户端的配置文件 # /a.jpg 是要上传的文件。我这里在根目录下有一个a.jpg文件 # 最后返回的结果证明上传成功。group1是配置文件的组名,M00是虚拟目录,剩余的是真实目录 # 前面在storage中配置了store_path0=/fastdfs/storage/store # 所以文件真实所在位置为/fastdfs/storage/store/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg
删除文件
[root@localhost fdfs]# fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgVgV_i802ALMJ3AA4L-ymgAPA595.jpg # 解释同上
3. FastDFS与Nginx联合使用
3.1 安装FastDFS的nginx组件
下载nginx组件
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
解压文件并进入
tar -zxvf fastdfs-nginx-module-1.22.tar.gz -C /usr/local/fastdfs && cd /usr/local/fastdfs/fastdfs-nginx-module-1.22
编辑配置文件
# 1.进入文件目录后有两个文件一个src目录,进入src目录 cd src # 2.进入fastdfs-nginx-module-1.22/src目录后编辑config文件 vim config 修改如下内容 # 因为改过安装目录,所以修改如下 CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/include/fastcommon/" # 未修改安装目录,修改如下 CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
编辑完成后需要在nginx启动时加入这个插件,所以需要安装nginx
3.2 安装nginx
首先安装nginx所需要的依赖
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel –y
下载nginx
wget http://tengine.taobao.org/download/tengine-2.3.2.tar.gz
解压
tar -zxvf tengine-2.3.2.tar.gz
配置nginx安装信息
cd /usr/local/fastdfs/tengine-2.3.2 mkdir -p /var/temp/nginx ./configure \ --prefix=/usr/local/nginx \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-http_gzip_static_module \ --http-client-body-temp-path=/var/temp/nginx/client \ --http-proxy-temp-path=/var/temp/nginx/proxy \ --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \ --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \ --http-scgi-temp-path=/var/temp/nginx/scgi \ --add-module=/usr/local/fastdfs/fastdfs-nginx-module-1.22/src
--add-module
必须定义,此配置信息是用于指定安装nginx时需要加载的模块,如果未指定,nginx安装过程不会加载fastdfs-nginx-module
模块,后续功能无法实现--prefix
是指定nginx安装路径修改fastdfs-nginx-module配置文件
cd /usr/local/fastdfs/fastdfs-nginx-module-1.22/src cp mod_fastdfs.conf /etc/fdfs/ cd /etc/fdfs/ vim mod_fastdfs.conf # 修改内容如下 base_path=/tmp tracker_server=192.168.21.129:22122 url_have_group_name = true store_path0=/fastdfs/storage/store
拷贝两个http配置的文件,用于网页http协议
cp /usr/local/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/ cp /usr/local/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/
创建nginx启动需要的软连接
ln -s /usr/local/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
nginx启动后,会在默认的/usr/lib64目录中查找需要的so文件。如果在安装FastDFS时,修改了make.sh文件中的TARGET_PREFIX参数,则必须创建此软连接
创建网络访问存储服务的软连接
ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00
在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxx.xxx。其中
group1
是组名,在mod_fastdfs.conf
配置文件中已配置了url_have_group_name
,以保证URL解析正确。而其中的M00
是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。编辑nginx配置文件
cd /usr/local/nginx # 进入nginx目录 cd conf # 进入nginx配置目录 vim nginx.conf # 修改内容如下 user root; # 第一行启用user配置,访问文件时使用root用户,实际工作中不这样使用 listen 8888; # 在http中server中,修改监听端口为8888,因为storage中http端口为8888 location ~/group[0-9]/M00{ ngx_fastdfs_module; }
重启storage并启动nginx
/etc/init.d/fdfs_storaged restart # 重启storage /usr/local/nginx/sbin/nginx # 启动nginx
再次上传文件,然后在浏览器访问图片看是否能正常展示
[root@localhost fdfs]# fdfs_upload_file /etc/fdfs/client.conf /a.jpg group1/M00/00/00/wKgVgV_jFVOABknvAA4L-ymgAPA308.jpg 在浏览器打开:http://192.168.21.129:8888/group1/M00/00/00/wKgVgV_jFVOABknvAA4L-ymgAPA308.jpg,访问图片成功即部署成功。