FastDFS

安装规划:

项目 信息

Group Name group1

FastDFS安装主目录 /usr/local/fastdfs-5.0.8

FastDFS work主目录 /usr/local/fastdfs-workhome

FastDFS Tracker Server work主目录 /usr/local/fastdfs/tracker

FastDFS Storage Server work主目录 /usr/local/fastdfs/storage

FastDFS Tracker Server服务端口 22122

FastDFS Tracker Server HTTP 端口 22080

FastDFS Storage Server 服务端口 23000

FastDFS Storage Server HTTP端口 23080

下载并安装

# 下载 github搜索 LibFastCommon FastDFS fastdfs-nginx-module 这里使用happyfish100的仓库
# 下载链接获取 点进项目 -> release -> 选择版本 -> Win下载zip | Linux下载tar.gz
# 下载包
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.41.tar.gz
wget https://github.com/happyfish100/fastdfs/archive/V6.03.tar.gz
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz ##解压 LibFastCommon FastDFS
tar -zxvf V1.0.41.tar.gz
tar -zxvf V6.03.tar.gz
tar -zxvf V1.22.tar.gz # 安装流程 进入文件夹 -> 编译 -> 安装
# 查看文件夹
ls
cd 目标文件夹
./make.sh
./make.sh install

采用默认安装的方式安装,安装后的相应文件与目录:

A、服务脚本在:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd
# ll /etc/init.d/ | grep fdfs*

B、配置文件在(样例配置文件)

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
# ll /etc/fdfs/

C、命令工具在/usr/bin/目录下

3.3.2 配置FastDFS Tracker Server

 

(1) 复制tracker server配置文件模板

# cd /etc/fdfs/
 
# cp tracker.conf.sample tracker.conf

(2) 修改tracker.conf配置

 

对其中的部分配置项调整如下:

base_path=/usr/local/fastdfs-workhome/tracker
 
rotate_error_log = true
 
log_file_keep_days = 30

3.3.3  配置client

 

(1)复制client配置文件模板

# cd /etc/fdfs
 
# cp client.conf.sample client.conf

(2) 修改client配置

 

对client.conf中的部分配置项调整如下:

base_path=/usr/local/fastdfs-workhome/tracker
 
tracker_server=ip:22122
 
tracker_server=ip:22122

注意:上面配置项中的tracker_server的两条记录均需要保留在配置文件中。

 

3.3.4 配置FastDFS Storage Server

 

(1) 复制配置文件模板

# cd /etc/fdfs
 
# cp storage.conf.sample storage.conf

(2) 修改storage.conf

对storage.conf中的部分配置项调整如下:

base_path=/usr/local/fastdfs-workhome/storage
 
#store_path0=/home/yuqing/fastdfs (注释掉本行) tracker_server=ip地址:22122  
use_access_log = true
 
rotate_access_log = true
 
rotate_error_log = true
 
log_file_keep_days = 30

如果需要配合nginx启动,还需要转移http.conf、mime.types。否则nginx无work进程

cp /usr/local/fastdfs/conf/http.conf http.conf
cp /usr/local/fastdfs/conf/mime.types mime.types

4. 服务启停

 

4.1 启停tracker

 

(1) 启动tracker

# service fdfs_trackerd start
 
# ss -lntup|grep 22122

首次启动tracker会在tracker的work主目录下创建data、logs目录

(2) 停止tracker服务

# service fdfs_trackerd stop
# ss -lntup|grep 22122

4.2 启停storage

 

重要:启动storage时需要保证当前集群中所有的tracker都处于启动状态。

 

(1) 启动storage

# service fdfs_storaged start
 
# ss -lntup|grep 23000

首次启动storage server,其会自动在storage主目录下创建data、logs目录

(2) 停止storage

# service fdfs_storaged stop
# ss -lntup|grep 23000

4.3 设置FastDFS服务化(开机启动)

# vi /etc/rc.d/rc.local

添加以下内容:

## FastDFS Tracker
service fdfs_trackerd start
service fdfs_storaged start
  1. 服务验证

    5.1 上传文件

    (1) 上传一个测试图片文件到服务器,路径为:

    /home/usr/test.jpg

    (2) 上传至FastDFS
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/user/test.jpg

返回文件ID说明上传成功,接下来查看文件状态

# /usr/bin/fdfs_file_info /etc/fdfs/client.conf group1/M00/00/00/Cmho21lJ3ECAPr9TAANoS18-GXE264.jpg

5.2 下载文件

fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/Cmho11lI7RKAMpJRAANoS18-GXE892.jpg

5.3 删除文件

fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/Cmho11lI7RKAMpJRAANoS18-GXE892.jpg

增加HTTP能力

  1. 安装规划

     

    项目 信息

    nginx安装包主目录 /usr/local/nginx-1.6.3-src

    nginx安装目录 /usr/local/nginx-1.6.3

    storage server的nginx绑定监听端口 80

    FastDFS Storage Server work主目录 /usr/local/fastdfs/storage

    FastDFS Storage Server 服务端口 23000

3、nginx安装

(1) 安装包准备

  • 上传相关安装包nginx-1.6.3.tar.gz、fastdfs-nginx-module_v1.16.tar.gz 到目录: /usr/local/nginx-1.6.3-src下。
  • 安装包解压
# wget https://nginx.org/download/nginx-1.16.1.tar.gz
# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
# tar -zxvf nginx-1.16.1.tar.gz
# tar -zxvf V1.22.tar.gz
# mv fastdfs-nginx-module-1.22/ fastdfs-nginx-module

(2) 依赖程序包安装

安装zlib、pcre程序

# yum install -y zlib zlib-devel
# yum install -y pcre pcre-devel
# yum install gd-devel

(3) nginx安装

重要:首先修改fastdfs-nginx-module/src目录下的config文件,去除CORE_INCS配置项中相关路径中的/local,定位到/usr/include。

编译安装nginx,注意--prefix指定安装目录:

# cd /usr/local/nginx-1.6.3-src/nginx
# ./configure --prefix=/usr/local/nginx --user=root --with-http_image_filter_module --with-http_stub_status_module --add-module=../fastdfs-nginx-module/src
# make
# make install

(4) nginx基本配置

# cd /usr/local/nginx-1.6.3/conf
# vim nginx.conf
# 涉及的主要修改配置项如下:
user root;
worker_processes 1;
worker_rlimit_nofile 51200;
events {
use epoll;
worker_connections 51200;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
proxy_set_header Host $Host;
proxy_set_header X-Real_Ip $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
real_ip_header X-Forwarded-For;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name _;
location /NginxStatus {
allow 10.0.0.0/8;
allow 172.0.0.0/8;
deny all;
stub_status on;
access_log off;
}
location / {
root html;
index index.html index.htm;
}

(5) nginx服务验证

  • 启动nginx
# cd /usr/local/nginx-1.6.3/sbin
# ./nginx
# ps -ef | grep nginx | grep -v greproot 13099 1 0 14:59 ? 00:00:00 nginx: master process ./nginx

如果启动异常,可以查看nginx的logs目录下的error.log日志.

  • 通过状态监控页面验证

浏览器访问 http://ip地址/NginxStatus

补充nginx常用命令:

./nginx -t 检查配置文件
./nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。
./nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。
# 当 ngin x的配置文件 nginx.conf 修改后,要想让配置生效需要重启 nginx,使用-s reload不用先停止 ngin x再启动 nginx 即可将配置信息在 nginx 中生效,如下:
./nginx -s reload

(6) 加入到自启动程序

# vi /etc/rc.d/rc.local

添加以下内容:

## nginx
/usr/local/nginx-1.6.3/sbin/nginx

Nginx基础服务安装完成.

4. 配置fastdfs-nginx-module

(1) 将fastdfs-nginx-module/src目录下的mod_fastdfs.conf复制到/etc/fdfs目录下。

# cd /usr/local/fastdfs-5.0.8/FastDFS/conf
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
# cp /usr/local/nginx-1.6.3-src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

(2) 修改etc/fdfs/mod_fastdfs.conf中的配置

主要修改的配置项如下:

# the base path to store log files
base_path=/usr/local/fastdfs-workhome/storage
# FastDFS tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# valid only when load_fdfs_parameters_from_tracker is true tracker_server=ip地址:22122
tracker_server=ip地址:22122
# if the url / uri including the group name
# set to false when uri like /M00/00/00/xxx
# set to true when uri like ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# default value is false
url_have_group_name = true
# set the group count
# set to none zero to support multi-group
# set to 0 for single group only
# groups settings section as [group1], [group2], ..., [groupN]
# default value is 0
# since v1.14
group_count = 1
# group settings for group #1
# since v1.14
# when support multi-group, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/local/fastdfs/storage

(3) 修改nginx配置

在http/server节点中添加如下内容

location /group1/M00{
root /usr/local/fastdfs/storage/;
ngx_fastdfs_module;
}

(4)服务验证

  • 重新启动nginx或者reload配置文件使nginx加载最新的配置。
sbin/nginx -t
sbin/nginx -s reload
ps -ef | grep nginx
# 看到nginx的master和work进程都在才行
# 无法访问则 ss -anptu | grep nginx 检查nginx是否监听80端口,防火墙是否拦截80端口

5. 加入动态缩略图功能

图片服务器提供动态的图片缩放,不在采用提前上传各个尺寸的图片的方式。这样既可以节省存储空间,也可以增强功能的灵活性(避免尺寸需求变更,需要重新上传全部图片)。

图片服务器采用nginx的扩展模块——http_image_filter_module实现图片的动态缩放,因为

http_image_filter_module是nginx自身提供的集成图片处理模块,支持nginx-0.7.54以后的版本,可以实现实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息。对于图片服务器来说,访问顺序是cdn->nginx->图片服务器,cdn会回源访问nginx,nginx动态生成指定分辨率的图片后,下次用户再访问此分辨率图片时,cdn上已经有了缓存,会大大减少并发动态生成缩略图的访问量。

在步骤4中,我们已经安装了动态缩略图的相关module——http_image_filter_module。所以本小节只需要修改nginx配置即可。

(1) 修改nginx配置

# cd /usr/local/nginx/conf
# vim nginx.conf

在http> server节点下相关配置信息如下

location ~ group(\d+)/M00/(.+)_(\d+)x(\d+)\.(jpg|gif|png){
# root /usr/local/fastdfs-workhome/storage/data;
ngx_fastdfs_module;
set $w $3;
set $h $4;
if ($w != "0") {
rewrite group(\d+)/M00(.+)_(\d+)x(\d+)\.(jpg|gif|png)$ group$1/M00$2.jpg break;
}
image_filter resize $w $h;
image_filter_buffer 2M;
}

重新刷新nginix服务。

(2) 服务验证

浏览器中访问url已验证缩放功能。

http://ip/group1/M00/00/00/Cmho21lJ3ECAPr9TAANoS18-GXE264_100x50.jpg

Linux 部署 FastDFS的更多相关文章

  1. Linux下FastDFS分布式存储-总结及部署记录

    一.分布式文件系统介绍分布式文件系统:Distributed file system, DFS,又叫做网络文件系统:Network File System.一种允许文件通过网络在多台主机上分享的文件系 ...

  2. ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

    ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP. ...

  3. Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码

    Linux 部署ASP.NET SQLite 应用 的坎坷之旅.文章底部 附示例代码. 有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记 ...

  4. Linux部署ASP.NET 5 (vNext)

    原文:Linux部署ASP.NET 5 (vNext) ASP.NET 5 (vNext) Linux部署   引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubun ...

  5. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包

    Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...

  6. Linux部署与基本指令

    把以前写的linux发布一下下吧,写的真的好差劲... Linux部署   chmod:改变一个文件的权限 改变abc的权限为777 常用的权限: 777-644-755 ************** ...

  7. NetCore1.1+Linux部署初体验

    1.环境准备 Centaos7+Win10 虚拟机 Win10安装VS2017 https://www.asp.net/downloads注意勾选下.Net Core 3.Centaos安装netco ...

  8. linux部署服务器遇到tomcat already start

    linux部署服务器遇到tomcat already start 前言,之前做了个汽车停车计费的后端,然后现在需要部署到服务器.正常部署,使用secureFx找到所属webapps目录,将文件上传.然 ...

  9. SpringBoot进阶教程(二十三)Linux部署Quartz

    在之前的一篇文章中<SpringBoot(九)定时任务Schedule>,已经详细介绍了关于schedule框架的配置和使用,有收到一些朋友关于部署的私信,所以抽时间整理一个linux部署 ...

随机推荐

  1. Python递归函数如何写?正确的Python递归函数用法

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归 ...

  2. Electron node integration enabled 设置

    解决办法 参考博客:https://blog.csdn.net/hwytree/article/details/103167175

  3. static介绍、内部类、final、权限修饰符的作用范围

    static 关键字:(可用于修饰方法.变量)     static 特点:         static是静态修饰符,一般修饰成员变量.被static修饰的属于全局共享.被static修饰的成员属于 ...

  4. 谈谈redis的特性以及使用场景

    ok?先从String开始讲: String: 这是最简单的类型,就是普通的get和set,做简单的KV缓存. 但是在真实的开发环境中,很多men可能会吧很多复杂的结构也统一转成String去储存使用 ...

  5. LCT能干啥???

    LCT能干啥       模板:   维护可加的树链信息:询问都是一条链上的信息:维护方式和线段树差不多: 增加一条边: 删除一条边: 修改一个点权: 修改一条路径上的所有点的点权:     整体来说 ...

  6. 基于TCP协议之socket编程

    #服务端 #导入一个socket模块 import socket #想象成买手机打电话:socket.SOCK_STREAM 表示建立tcp连接 ,udp连接socket.SOCK_DGRAM #买了 ...

  7. Python之工作方向

    "python基础-->(函数/面向对象/网络编程(scoket套接字)/并发编程(mutiprocessing)) "运维+web开发-->页面展示(django/f ...

  8. Tomcat系列(二)- EndPoint源码解析

    在上一节中我们描述了Tomcat的整体架构, 我们知道了Tomcat分为两个大组件,一个连接器和一个容器. 而我们这次要讲的 EndPoint的组件就是属于连接器里面的. 它是一个通信的端点,就是负责 ...

  9. Mysql 5.7.28离线包下载与配置

    下载链接:https://pan.baidu.com/s/1uPbBknyIebQRDt4k_RA58Q   提取码:14zi 将下载文件进行解压,我解压位置为:D:\Program Files\my ...

  10. HCTF_2018-Writeup【web题】

    HCTF_2018-Writeup 赛题来自:BUUCTF By:Mirror王宇阳 WarmUp: 打开赛题的页面源码(F12) <!DOCTYPE html> <html lan ...