一、下载依赖:libfastcommon
wget https://codeload.github.com/happyfish100/libfastcommon/zip/master
下载后解压、进入解压后的文件夹,执行./make.sh && ./make.sh install
libfastcommon.so默认被安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/usr/local/lib,所以需要创建软链接(快捷方式):
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
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
二、安装fdfs
下载fdfs安装包:wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz;
解压、进入后编译、安装(./make.sh && ./make.sh install)
进入/etc/fdfs目录,复制tracker.conf.sample:
cp
tracker.conf.sample
tracker.conf,
修改vim tracker.conf:
base_path=/home/mm/fastdfs/tracker #tracker存储data和log的跟路径,必须提前创建好
port=23000 #tracker默认23000
http.server_port=80 #http端口,需要和nginx相同
三、启动tracker
三、启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
注:可通过如下命令建立软连接,随后可通过service fdfs_trackerd start启动:
# ln -s /usr/bin/fdfs_trackerd /usr/local/bin # ln -s /usr/bin/fdfs_storaged /usr/local/bin # ln -s /usr/bin/stop.sh /usr/local/bin # ln -s /usr/bin/restart.sh /usr/local/bin
可以在base_path配置的路径下查看启动日志:
查看tracker服务状态:
四、配置Storage服务
进入/etc/fdfs目录,有cp命令拷贝storage.conf.sample:cp storage.conf.sample storage.conf
编辑storage.conf:vi storage.conf,修改相关参数:
base_path=/home/mm/fastdfs/storage #storage存储data和log的跟路径,必须提前创建好
port=23000 #storge默认23000,同一个组的storage端口号必须一致
group_name=group1 #默认组名,根据实际情况修改
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/home/mm/fastdfs/storage #如果为空,则使用base_path
tracker_server=10.122.149.211:22122 #配置该storage监听的tracker的ip和port,注意:ip不能为127.0.0.1
启动storage(支持start|stop|restart):
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
查看启动后的状态:
service fdfs_storaged status:
查看启动日志,发现已经开始选举,并且作为唯一的一个tracker,被选举为leader:
查看端口情况:
通过如下命令查看storage是否被绑定:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
五、测试上传
1、修改 Tracker 服务器中的客户端配置文件
# cd /etc/fdfs
# cp client.conf.sample client.conf
# vim client.conf
修改如下配置即可,其它默认。
# Client 的数据和日志目录
base_path=/ljzsg/fastdfs/client
# Tracker端口
tracker_server=file.ljzsg.com:22122
② 上传测试
在linux内部执行如下命令上传文件
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf test1.txt
上传成功后会返回文件路径:
![](https://img2020.cnblogs.com/blog/1948534/202006/1948534-20200608122928953-1000575196.png)
在文件存储路径下可以看到上传的文件:
六、整个nginx+fastdfs-nginx-module
这个过程参考下方报错中的:3、整合nginx时,报错:[emerg] unknown directive "ngx_fastdfs_module" ngix
可能的报错:
1、/usr/include/fastdfs/fdfs_define.h:15:27: fatal error: common_define.h: No such file or directory(https://blog.csdn.net/C18298182575/article/details/96428764)
解决方案:
将fastdfs-nginx-module-1.20/src/config的内容替换为如下,然后重新执行./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-1.20/src/:
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then
ngx_module_type=HTTP
ngx_module_name=$ngx_addon_name
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
ngx_module_libs="-lfastcommon -lfdfsclient"
ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
ngx_module_deps=
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
. auto/module
else
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='"/etc/fdfs/mod_fastdfs.conf"'"
fi
2、测试上传命令时,报错如下:
![](https://img2020.cnblogs.com/blog/1948534/202006/1948534-20200607213941513-283088834.png)
解决方案:
查看tracker服务状态有报错信息如下:
搜索undefined symbol: g_current_time,通过http://www.mamicode.com/info-detail-2316419.html方案解决的:rm -rf /usr/local/lib/libfastcommon.so.1
3、整合nginx时,报错:[emerg] unknown directive "ngx_fastdfs_module" ngix
按照https://www.w3xue.com/exp/article/20191/18398.html方案解决的:
(1)、安装fastdfs-nginx-module
参考博客:https://blog.csdn.net/u010098331/article/details/51646921
- [root@bogon local]# wget https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
- [root@bogon local]# tar xf fastdfs-nginx-module_v1.16.tar.gz
- [root@bogon local]# cd fastdfs-nginx-module/src/
- [root@bogon local]# vim config
- #编辑config文件,执行如下命令进行批量替换并保存退出,目的:去掉local前缀,指定正确路径目录
- :%s+/usr/local/+/usr/+g
- [root@bogon src]# pwd
- /usr/local/fastdfs-nginx-module/src
- [root@bogon src]# cp mod_fastdfs.conf /etc/fdfs
- [root@bogon local]# cd /etc/fdfs
- [root@bogon fdfs]# vim mod_fastdfs.conf
- #修改内容如下:
- connect_timeout=10
- base_path=/tmp(默认为/tmp)
- tracker_server=192.168.174.128:22122
- storage_server_port=23000(默认配置为23000)
- url_have_group_name = true
- store_path0=/home/fastdfs/storage-data
- group_name=group1(默认配置为group1)
- [root@bogon fastdfs-5.05]# pwd
- /usr/java/fastdfs-5.05
- [root@bogon fastdfs-5.05]# cd conf
- [root@bogon conf]# cp http.conf /etc/fdfs
- [root@bogon conf]# cp mime.types /etc/fdfs
(2)安装nginx
- [root@bogon local]# tar -zxvf nginx-1.6.0
- [root@bogon local]# cd nginx-1.6.0/
- [root@bogon nginx-1.6.0]#
- ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src
- [root@bogon nginx-1.6.0]#make && make install
- [root@bogon local]# cd nginx
- [root@bogon nginx]# cd conf
- [root@bogon conf]# vim nginx.conf
- location /group1/M00 {
- root /home/fastdfs/storage-data;
- ngx_fastdfs_module;
- }
- [root@bogon conf]# cd ..
- [root@bogon nginx]# cd sbin/
- [root@bogon sbin]# ./nginx
- ngx_http_fastdfs_set pid=11005
配置nginx:
- server {
- listen 80;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location /group1/M00 {
- root /home/fastdfs/storage-data/data; #storage_path0
- ngx_fastdfs_module; #虚拟模块
- }
- }
4、访问文件地址返回404错误:
检查下nginx、mod_fastdfs.conf里面的数据文件路径配置:
数据存放路径:
![](https://img2020.cnblogs.com/blog/1948534/202006/1948534-20200608121438633-1751464267.png)
nginx配置:
mod_fastdfs.conf路径配置: