CentOS单机安装FastDFS&整合Nginx
单机安装
一 准备工作
准备linux服务器或虚拟机,这里是虚拟机,操作系统CentOS 6.4
Tracker 和 Storage 安装在一台机器上
FastDFS 5.08版本
1,准备软件
软件下载:http://sourceforge.net/projects/fastdfs/files/
文中用到的 https://pan.baidu.com/s/1IeZqzt6Gc5Yc34RMwew3nQ 提取码:7dvf
2,安装gcc
FastDFS是C语言开发的应用。安装必须使用make、cmake和gcc编译器。
命令:yum install make cmake gcc gcc-c++
3,安装FastDFS核心库libfastcommon
libfastcommon是从FastDFS 和FastDHT 中提取出来的公共C函数库,
(1)进行解压libfastcommon-master.zip,命令:unzip libfastcommon-master.zip -d /usr/local/fastdfs
(2)进入目录 cd /usr/local/fastdfs/libfastcommon-master
(3)进行编译安装
命令: ./make.sh
命令: ./make.sh install
注意安装的路径:也就是说,我们的libfastcommon默认安装到了/usr/lib64/这个位置。
(4)创建软连接
FastDFS主程序设置的目录为/usr/local/lib/,所以我们需要创建/usr/lib64/下的一些核心执行程序的软连接文件。
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
4,安装FastDFS
4.1 进入到cd /lhy/software/ 下,
解压 FastDFS_v5.08.tar.gz,命令:tar -zxf FastDFS_v5.08.tar.gz -C /usr/local/fastdfs
4.2 编译安装
命令:cd /usr/local/fastdfs/FastDFS/
编译:./make.sh
安装:./make.sh install
4.3 采用默认安装方式脚本文件说明
(1)服务脚本在
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
(2)配置文件在
/etc/fdfs/client.conf.sample - 跟踪器服务配置文件模板
/etc/fdfs/storage.conf.sample - 存储服务器配置文件模板
/etc/fdfs/tracker.conf.sample -- FastDFS提供的命令行客户端配置文件模板。可以通过命令行测试FastDFS有效性。
(3)命令行工具在/usr/bin/目录下,是一些可执行文件
5,配置跟踪器Tracker 服务
1,进入到 /etc/fdfs/ 目录,执行命令: 把tracker.conf.sample复制一份
命令:cd /etc/fdfs/
命令:cp tracker.conf.sample tracker.conf
2,修改tracker.conf
命令 :vim /etc/fdfs/tracker.conf #########base_path应该放在/var/data下, base_path=/var/data/fastdfs-tracker(自定义目录)
***************************************
如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文 件 (lock file,run file),或者例如Mysql数据库的文件等
*********************************************************************************************************************
3,配置中的路径需要先创建好才能启动服务
命令:mkdir -p /fastdfs/tracker 递归创建目录
4,启动追踪器
命令:/etc/init.d/fdfs_trackerd start
启动成功后,配置文件中base_path指向的目录中出现FastDFS服务相关数据目录(data目录、logs目录)
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
停止tracker命令:/etc/init.d/fdfs_trackerd stop
重启服务:/etc/init.d/fdfs_trackerd restart
5 可以设置开机启动跟踪器
(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat等等)命令:vim /etc/rc.d/rc.local加入配置:/etc/init.d/fdfs_trackerd start
6,配置FastDFS存储(Storage)
1, 进入到 /etc/fdfs/ ,进行copy storage文件一份
命令:cd /etc/fdfs/
命令:cp storage.conf.sample storage.conf
2,修改storage.conf文件
命令:vim /etc/fdfs/storage.conf
修改内容:
base_path=/fastdfs/storage/base ( base_path - 基础路径。用于保存storage server基础数据内容和日志内容的目录)
#######base_path也应该放在/var/data下 /var/data/fastdfs-storage/base
store_path0=/fastdfs/storage/store (store_path0 - 存储路径。是用于保存FastDFS中存储文件的目录,就是要创建256*256个子目录的位置。base_path和store_path0可以使用同一个目录。)
tracker_server=192.168.1.172:22122 (tracker_server - 跟踪服务器位置。就是跟踪服务器的ip和端口。)
3,递归创建存储目录(上个步骤中的目录)
命令 :mkdir -p /fastdfs/storage/base
命令:mkdir -p /fastdfs/storage/store
4,启动服务 (要求tracker服务必须已启动)
命令:/etc/init.d/fdfs_storaged start
启动成功后,配置文件中base_path指向的目录中出现FastDFS服务相关数据目录(data目录、logs目录)
配置文件中的store_path0指向的目录中同样出现FastDFS存储相关数据录(data目录)
5,查看FastDFS storage 是否启动成功
查看服务状态:/etc/init.d/fdfs_storaged status
停止服务:/etc/init.d/fdfs_storaged stop
重启服务:/etc/init.d/fdfs_storaged restart
6,同理,也可以设置开机启动存储器
(一般生产环境需要开机启动一些服务,如keepalived、linux、tomcat等等)命令:vim /etc/rc.d/rc.local加入配置:/etc/init.d/fdfs_storaged start
++++++++++++++++++到此为止我们的FastDFS环境已经搭建完成!(真是有点复杂)++++++++++++++++++++++++++++++
7,测试环境
使用FastDFS自带的客户端进行文件上传(注意:是在tracker(跟踪器)中上传)
1,进入到/etc/fdfs/ 目录, copy一份client.conf文件
命令:cd /etc/fdfs/
命令:cp client.conf.sample client.conf
2,编辑client.conf文件
命令:vim /etc/fdfs/client.conf
修改内容:
base_path=/fastdfs/client( base_path - 就是客户端命令行执行过程时临时数据存储位置。)
tracker_server=192.168.85.3:22122
3,创建自定义文件夹
命令:mkdir -p /fastdfs/client
4,上传文件测试
命令:/usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /要上传的文件
例:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /lhy/software/test.png
返回:group1/M00/00/00/wKhVA138_q2APqgyAAq7elxtEkk385.png
上传结束后,返回group1/M00/00/00/xxxxxxxxxx.xxx,检查storage服务结点中的$store_path0/data/00/00/目录中是否有上传的文件(一般情况上传的文件按顺序保存在$store_path0/data/00/00/目录中,不能完全保证)。
组名:group1文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
虚拟磁盘路径:M00 storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
数据两级目录:/00/00 storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
文件名:group1/M00/00/00/wKhVA138_q2APqgyAAq7elxtEkk385.png
5,删除文件
命令:/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKiWDV0xfqWAFe1OAAAib-i5DLU637.log
命令的脚本位置
8 FastDFS与Nginx整合
安装Nginx是为了WEB应用中可以使用HTTP协议直接访问Storage服务中存储的文件(如你的图片)。在storage(存储节点)结点所在服务器安装Nginx组件。
需要安装两部分内容,Nginx应用,在安装nginx应用的时候,同时要在nginx中增加一个FastDFS的组件。
1,安装 fastdfs-nginx-module模块。(本机器nginx已安装)
进入到cd /lhy/software/ 软件安装包目录
2, 解压解压命令:
tar -zxvf /lhy/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fastdfs/
3, 进入目录:cd fastdfs-nginx-module/src/
4,修改配置
命令:vim /usr/local/fastdfs/fastdfs-nginx-module/src/config
修改CORE_INC这一行,修改后为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" (去掉了/local 层级)
修改前:
修改后:
5,FastDFS与nginx进行集成
如果你是已有的nginx,不要重新安装nginx,那么进入到nginx的安装包目录:
执行命令:make clean (清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件)
加入模块命令:./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src/ (执行了这个configure,再执行一遍make clean会清除本次config,可以多次执行make clean、./configure,没事)
重新编译命令: make && make install
+++++++++++如果是新的nginx+++++++++++++++++++++++++++++++++
删除命令:rm -rf nginx
进入到nginx目录命令:cd nginx-1.6.2/
加入模块命令:./configure --add-module=/usr/local/fastdfs/fastdfs-nginx-module/src/
重新编译命令: make && make install
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
6,配置fastdfs-nginx-module
复制fastdfs-ngin-module中的配置文件,到/etc/fdfs目录中
命令:cp /usr/local/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
7, 进行修改 /etc/fdfs/ 目录下,刚刚copy过来的mod_fastdfs.conf 文件。
命令:vim /etc/fdfs/mod_fastdfs.conf
修改内容:比如连接超时时间、跟踪器路径配置、url的group配置
store_path0=/fastdfs/storage/store
url_have_group_name = true
tracker_server=192.169.85.3:22122
connect_timeout=30
8,拷贝http服务需要的配置
复制FastDFS安装包中的两个配置文件(http.conf和mime.types)到/etc/fdfs目录中
进入到FastDFS安装目录 :cd /usr/local/fastdfs/FastDFS/conf/
复制命令:cp http.conf mime.types /etc/fdfs/
9,创建网络访问存储服务的软连接
在上传文件到FastDFS后,FastDFS会返回group1/M00/00/00/xxxxxxxxxx.xxx。其中group1是卷名,在mod_fastdfs.conf配置文件中已配置了url_have_group_name,以保证URL解析正确。
而其中的M00是FastDFS保存数据时使用的虚拟目录,需要将这个虚拟目录定位到真实数据目录上。
命令:ln -s /fastdfs/storage/store/data/ /fastdfs/storage/store/data/M00
10,修改Nginx配置文件
命令:vim /usr/local/nginx/conf/nginx.conf
server {
listen ;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
#设置客户端真实ip地址
#proxy_set_header X-real-ip $remote_addr;
#负载均衡反向代理
#proxy_pass http://myapp;
root html;
index index.html index.htm;
} #FastDFS-2019-12-21
location ~ /group([0-9])/M00 {
ngx_fastdfs_module;
} #配置反向代理tomcat服务器:拦截.jsp结尾的请求转向到tomcat
#location ~ \.jsp$ {
#设置客户端真实ip地址
# proxy_set_header X-real-ip $remote_addr;
# proxy_pass http://192.168.85.3:8080;
#} #error_page /.html; # redirect server error pages to the static page /50x.html
#
error_page /50x.html;
location = /50x.html {
root html;
} # proxy the PHP scripts to Apache listening on 127.0.0.1:
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#} # deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
用fastDFS带的客户端重新上传一个图片:
命令:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /lhy/software/test.png
返回文件ID:group1/M00/00/00/wKhVA139D5yAb_oiAAq7elxtEkk387.png
11,用浏览器访问该图片
我直接http://192.168.85.3/group1/M00/00/00/wKhVA139D5yAb_oiAAq7elxtEkk387.png访问图片,但是nginx返回404,
命令: /usr/local/nginx/sbin/nginx -s reload 重启Nginx,看到有fastdfs相关的进程,但是还是访问不到图片,nginx返回404。
/usr/local/nginx/sbin/nginx -s stop 关了nginx,/usr/local/nginx/sbin/nginx 再启动,还不行,还是返回404,现在半夜2:32了,安装了半天,难道要前功尽弃了??
最终,reboot,重启了服务器,图片终于出来了!~~~
group1/M00/00/00/wKhVA139D5yAb_oiAAq7elxtEkk387.png
12,如果是下载文件,如何动态指定文件名
在nginx的fastdfs的location配置里,加上这句话:add_header Content-Disposition "attachment;filename=$arg_attname";
访问 :http://192.168.85.3/group1/M00/00/00/wKhVA139D5yAb_oiAAq7elxtEkk387.png?attname=123.jpg 这个后缀名,就可以从数据库读出来了。
常用命令:
查看服务状态:ps -ef | grep fdfs
启动Tracker:/etc/init.d/fdfs_trackerd start
停止Tracker:/etc/init.d/fdfs_trackerd stop
重启Tracker:/etc/init.d/fdfs_trackerd restart
启动Storage:/etc/init.d/fdfs_storaged start
查看Storage服务状态:/etc/init.d/fdfs_storaged status
停止Storage:/etc/init.d/fdfs_storaged stop
重启Storage:/etc/init.d/fdfs_storaged restart
FastDFS自带的客户端上传文件命令:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf
CentOS单机安装FastDFS&整合Nginx的更多相关文章
- FastDFS整合nginx后,nginx一直报错
FastDFS整合nginx后,nginx一直报错: 报错内容: [2018-06-11 09:41:21] ERROR - file: ../common/fdfs_http_shared.c, l ...
- CentOS单机安装k8s并部署.NET 6程序 压测 记录
前面部分依照CentOS单机安装k8s并部署.NET 6程序来进行,内存.cpu.centos版本一致,之前222元买的三年8M 2c4g腾讯云轻量服务器,这个教程算是写的很详细的了,基本可以一致执行 ...
- Centos上安装FastDFS
更新yum源 cd /etc/yum.repos.d wget http://mirrors.aliyun.com/repo/Centos-7.repo yum update 安装gcc(编译时需要) ...
- CentOS上安装FastDFS分布式文件系统
鱼大自己写的项目简介:http://bbs.chinaunix.net/thread-1920470-1-1.html 架构简介:http://www.programmer.com.cn/4380/ ...
- CentOS 7 安装php5.6,Nginx,Memcached环境及配置
安装php5.6版本以后不再需要安装Zend Guard,而是用yum命令安装php-opcache及php-pecl-apcu就可以有效的提高php执行速度. 1. 配置yum源 事先确认yum源的 ...
- Centos下安装并设置nginx开机自启动
一.在centos环境下安装下载并安装nginx,由于nginx需要依赖一些环境才能安装,主要依赖g++.gcc.openssl-devel.pcre-devel和zlib-devel这些环境,首先得 ...
- CentOS 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
转载自:https://linux.cn/article-4314-1.html 编译自:http://xmodulo.com/install-lemp-stack-centos.html 作者: D ...
- FastDFS整合Nginx
浏览器访问FastDFS存储的图片需要通过Nginx访问 需要安装fastdfs-nginx-module.Nginx 安装fastdfs-nginx-module模块 (1)将fastdfs-ngi ...
- FastDFS整合nginx(三)
一 安装 百度云:所有附件的地址 unzip fastdfs-nginx-module-master.zip [root@node02 mnt]# cd fastdfs-nginx-module-ma ...
随机推荐
- P3525 INS-Inspection
这道题的题面有点问题,如果按照题面做,应该是A不了的,下面引用一下评论里@REM_001的翻译 一棵n个节点的树,行动中心S从1->N.从S出发前往任意一个未标记到的点(沿树上两点的唯一路径走) ...
- Python画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~)one 樱花树 动态生成樱花效果图(这个是动态的) ...
- window.onload在文档加载完成后执行
验证a .b两点疑惑: a.<script src="./main.js"></script>中的window.onload是在html全部加载完了才执行, ...
- 15-Django开发REST接口
使用Django开发REST接口 我们以在Django框架中使用的图书以及书中人物案例来写一套支持图书数据增删改查的REST API接口,来理解REST API的开发(前后端均发送JSON格式数据) ...
- Java设计模式:Factory Method(工厂方法)模式
概念定义 工厂方法(Factory Method)模式,又称多态工厂(Polymorphic Factory)模式或虚拟构造器(Virtual Constructor)模式.工厂方法模式通过定义工厂抽 ...
- 【深度学习】K-L 散度,JS散度,Wasserstein距离
度量两个分布之间的差异 (一)K-L 散度 K-L 散度在信息系统中称为相对熵,可以用来量化两种概率分布 P 和 Q 之间的差异,它是非对称性的度量.在概率学和统计学上,我们经常会使用一种更简单的.近 ...
- Requests库主要方法解析以及Requests库入门需要掌握的框架
Requests库主要方法解析以及Requests库入门 1.requests.request(method,url,**kwargs) **kwargs:控制访问的参数,均为可选项 params:字 ...
- C#简单的枚举及结构
using System; namespace program { enum WeekDays { a, b, c = ,//11 赋值以后就变成11,不赋值就是2 d, e, f, g }//不能输 ...
- python基础(34):线程(二)
1. python线程 1.1 全局解释器锁GIL Python代码的执行由Python虚拟机(也叫解释器主循环)来控制.Python在设计之初就考虑到要在主循环中,同时只有一个线程在执行.虽然 Py ...
- JavaScript 正则表达式 初探
JavaScript 正则表达式 正则表达式是构成搜索模式的字符序列 搜索模式可用于文本搜索和文本替换操作 使用正则 字符串方法 在JavaScript中,正则表达式常常用两个字符串方法: searc ...