参考资料,准备搭建一个分布式文件服务器,奈何资源有限,只能搭建一个单机版FastDFS文件服务器(nginx、FastDFS-master等都在同一服务器),FastDFS分布式文件服务器简介在此不做赘述。
话不多说,直接上教程:
- 官网下载相关相关安装包:https://github.com/happyfish100 ,都下载最新的:fastdfs-master、libfastcommon-master、fastdfs-nginx-module-master,避免版本问题;
- 上传到相应服务器并解压;
- 编译安装fast-master
[root@localhost fastDFS]# cd libfastcommon-master/
[root@localhost libfastcommon-master]# ./make.sh
[root@localhost libfastcommon-master]# ./make.sh install
4. 编译安装FastDFS
[root@localhost fastDFS]# cd FastDFS
[root@localhost FastDFS]# ./make.sh
[root@localhost FastDFS]# ./make.sh install
5. 拷贝配置文件
将fastdfs安装目录下的conf下的文件拷贝到/etc/fdfs/下
6. 修改/etc/fdfs/tracker.conf
将base_path=/home/yuqing/fastdfs改成base_path=/data/fastdfs
7. 创建trackerd数据、日志目录
8. 重启trackerd: [root@localhost ~]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
此时在创建的trackerd目录下新添了几个文件证明重启成功
或者使用端口查看命令[root@localhost fastdfs]# ps -ef|grep trackerd
9. 配置并启动storaged
修改storage.conf :
base_path=/home/yuqing/fastdfs改为:base_path=/data/fastdfs
store_path0=/home/yuqing/fastdfs改为:store_path0=/data/fastdfs/storage
tracker_server=192.168.209.121:22122改为:tracker_server=127.0.0.1:22122,这个ip改成部署的服务器ip
新建store_path0 的路径文件夹storage
启动:[root@localhost fastdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
查看storaged进程:[root@localhost fastdfs]# ps -ef|grep storaged
说明storaged已经启动起来;其实也可以查看日志:/data/fastdfs/logs/storaged.log来判断storaged是否正常启动起来
接下来才是重点:FastDFS 和nginx整合
10.解压fastdfs-nginx-module ,进入src复制mod_fastdfs.conf到/etc/fdfs/
base_path=/tmp改成:base_path=/data/fastdfs
tracker_server=tracker:22122改成:tracker_server=127.0.0.1:22122(ip为部署文件服务器的ip)
url_have_group_name = false改成:url_have_group_name = true;#url中包含group名称
store_path0=/home/yuqing/fastdfs改成:store_path0=/data/fastdfs/storage
11.NGINX安装
①下载NGINX安装包并解压
②安装NGINX并添加fastdfs模块
[root@localhost app]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --add-module=/apps/fastDFS/fastdfs-nginx-module-1.22/src/
添加模块成功
可以使用./nginx –V查看添加的模块,出现下面所示说明安装成功:
配置nginx配置文件
内容如下,ip注意改成自己的:
events { use epoll; worker_connections 1024; } http { server { listen 80; server_name 127.0.0.1; location /group1/M00/{ #root /home/FastDFS/fdfs_storage/data; ngx_fastdfs_module; } } server { listen 8888; server_name 127.0.0.1; location / { root html; index index.html index.htm; } } }
启动nginx:
[root@localhost conf]# cd /usr/local/nginx/sbin/
[root@localhost sbin]# ./nginx -c /usr/local/nginx/conf/nginx-fdfs.conf
到这里配置及安装就完成了
对NGINX编译安装
[root@localhost nginx-1.12.0]# make
[root@localhost nginx-1.12.0]# make install
在NGINX中make时,有时会报下面这些错误:
(1) …xxx:/common.c:349: error: request for member ‘path’ in something not a structure or union
解决办法:为避免各个安装包之间的依赖,建议各个安装包都是最新版,升级fastdfs版本,V6.03起,本次安装使用的是V6.04版本
(2) /usr/local/include/fastdfs/fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录
解决办法:更改fastdfs-nginx-master下的config文件,将ngx_module_incs 和CORE_INCS的值改成下面的值即可
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
重新make
make install
注意:(1)在安装NGINX的时候需要用到gcc,若没有安装gcc,可以使用离线安装,下载相关的rpm包,使用rpm -Uvh *.rpm --nodeps --force(忽略关联性、强制安装) 命令
(2)安装完gcc再次编译NGINX的时候如果出现make: *** No rule to make target build', needed bydefault'. Stop. 说明还缺少pcre-8.44.tar.gz 、zlib-1.2.11.tar.gz、openssl-0.9.8h.tar.gz 三个包,下载并解压,按照先后依赖,安装顺序为:
zlib-1.2.11.tar.gz:# make
zlib-1.2.11.tar.gz:# make install
openssl-0.9.8h.tar.gz:# make
openssl-0.9.8h.tar.gz:# make install
pcre-8.44.tar.gz:# ./configure
pcre-8.44.tar.gz:# make
pcre-8.44.tar.gz:# make install
(3)安装完后可以使用gcc –v查看是否按照成功
12.测试
项目导入fastdfs相关的jar包,编写工具类,进行上传和读取
pom.xml:
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
Application.properties:
http.tracker_http_port=80
tracker_server=127.0.0.1:22122(ip换成自己部署的ip)
关于fastdfs的工具类网上资源有好多,根据业务需要,参考度娘编写即可
上传成功之后,会返回文件组名和文件名(按fastdfs规则生成):
[group1, M00/00/00/wBOAL19V2E6AQvW9AAvqH-Poukk328.jpg]
支持在线预览,浏览器输入部署的文件服务器ip:端口/组名/fastdfs规则生成的文件名,如下:
http://127.0.0.1/group1/M00/00/00/wBOAL19V2E6AQvW9AAvqH-Poukk328.jpg
文件服务器存储文件的目录为上面storaged 的store_path0,本次配置文件存储位置为:
/data/fastdfs/storage/data/00/00
集群分布式文件服务器环境等有时间会补齐,暂做记录。
参考:https://www.cnblogs.com/youzhibing/p/9160690.html
https://blog.csdn.net/GMCN__/article/details/104844278