简介

FastDFS是一个开源的分布式文件系统,官方介绍有详细的介绍,不多赘述。本文主要是FastDFS的搭建及采坑指南。

Step By Step Guide

系统

  • 阿里云ECS Ubuntu 16.04

编译环境

按需安装,这里是针对新的ubuntu系统

$ apt-get install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim

磁盘目录

说明 位置
所有安装包 /usr/local/src
数据存储位置 /data/dfs/
$ mkdir /data/dfs #创建数据存储目录(对于阿里云ECS,最好建立在数据盘上,是用来存放文件的)
$ cd /usr/local/src #切换到安装目录准备下载安装包

安装libfatscommon

$ wget https://github.com/happyfish100/libfastcommon/archive/master.zip
$ unzip master.zip
$ cd libfastcommon-1.0.39/
$ ./make.sh && ./make.sh install #编译安装

安装FastDFS

$ cd ../ #返回上一级目录
$ wget https://github.com/happyfish100/fastdfs/archive/master.zip
$ unzip master.zip
$ cd fastdfs-master/
$ ./make.sh && ./make.sh install #编译安装
#配置文件准备
$ cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
$ cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
$ cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客户端文件,测试用
$ cp /usr/local/src/fastdfs-master/conf/http.conf /etc/fdfs/ #供nginx访问使用
$ cp /etc/nginx/mime.types /etc/fdfs/ #供nginx访问使用

安装fastdfs-nginx-module

官网的文档,是针对没有安装过Nginx的机器,重新编译了一遍Nginx,把module直接编译进Nginx了。但是针对已经安装Nginx的服务器来说,显然是不好的。

根据Nginx官方文档-编译第三方动态模块,编译了fastdfs-nginx-module,以供已存在的Nginx使用。

我已经编译好了fastdfs-nginx-module,可以直接下载,并跳到加载并使用模块,如果想知其所以然,可以往下看。

准备fastdfs-nginx-module源码包

$ cd ../ #返回上一级目录
$ wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
$ unzip master.zip

获取对应版本的Nginx源码包

$ nginx -v # 确认服务器的Nginx版本
nginx version: nginx/1.14.2
$ wget http://nginx.org/download/nginx-1.14.2.tar.gz
$ tar -xzvf nginx-1.14.2.tar.gz

编译动态模块

$ cd nginx-1.14.2/
$ ./configure --with-compat --add-dynamic-module=/usr/local/src/fastdfs-nginx-module-master/src
$ make modules

将模块库(.so文件)复制到/etc/nginx/modules

$ cp ngx_http_fastdfs_module.so /etc/nginx/modules/

加载并使用模块

Tips: 要将模块加载到Nginx,在nginx.conf文件开头添加load_module命令

$ vim /etc/nginx/nginx.conf
# 添加如下命令
load_module modules/ngx_http_fastdfs_module.so;
# 保存退出

添加FastDFS配置使模块生效

$ vim /etc/nginx/conf.d/fastdfs.conf
# 添加如下配置
server {
listen 8888; ## 该端口为storage.conf中的http.server_port相同
server_name {your_domain};
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

单机部署

这里只描述下单机环境的部署方式,集群在官方文档有,没有实际使用过。

tracker配置

$ vim /etc/fdfs/tracker.conf
# 建议修改以下内容
bind_addr={你的内网IP}
base_path=/data/dfs # 建议修改为数据盘位置
# 可选修改
port=22122 # tracker服务器端口

storage配置

$ vim /etc/fdfs/storage.conf
# 建议修改
base_path=/data/dfs # 数据和日志文件存储根目录(建议修改为数据盘位置)
store_path0=/data/dfs # 第一个存储目录(建议修改为数据盘位置)
tracker_server={tracker.bind_addr}:{tracker.port} # tracker服务器IP和端口
http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
# 可选修改
port=23000 # storage服务端口(默认23000,一般不修改)

client测试

$ vim /etc/fdfs/client.conf
# 建议修改
base_path=/data/dfs
tracker_server={tracker.bind_addr}:{tracker.port} # tracker服务器IP和端口
# 保存后测试
$ fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.14.2.tar.gz
group1/M00/00/00/CgoKvlyUmi-AMVKDAA9-WL9wzEw.tar.gz # 下载时通过该ID下载
# 返回ID表示成功 如:group1/M00/00/00/xx.tar.gz

配置nginx访问

vim /etc/fdfs/mod_fastdfs.conf
# 建议修改
tracker_server={tracker.bind_addr}:{tracker.port} # tracker服务器IP和端口
url_have_group_name=true
store_path0=/data/dfs
# 修改完保存
$ nginx -s reload
ngx_http_fastdfs_set pid=8364 # 看见这条消息说明nginx模块启动成功了
$ lsof -i:8888 # 查看Nginx下载端口是否正常启动
nginx 31061 root 10u IPv4 20389985 0t0 TCP *:8888 (LISTEN)

测试下载

在浏览器输入

http://{IP}:8888/group1/M00/00/00/CgoKvlyUmi-AMVKDAA9-WL9wzEw.tar.gz?filename=nginx-1.14.2.tar.gz //刚才上传返回的ID

弹出下载文件框,说明部署成功!

相关命令

防火墙

$ sudo ufw enable|disable

tracker

$ /etc/init.d/fdfs_trackerd start # 启动tracker服务
$ /etc/init.d/fdfs_trackerd restart # 重启动tracker服务
$ /etc/init.d/fdfs_trackerd stop # 停止tracker服务
$ update-rc.d fdfs_trackerd enable # 自启动tracker服务

storage

$ /etc/init.d/fdfs_storaged start # 启动storage服务
$ /etc/init.d/fdfs_storaged restart # 重动storage服务
$ /etc/init.d/fdfs_storaged stop # 停止动storage服务
$ update-rc.d fdfs_storaged enable # 自启动storage服务

nginx

$ service nginx start # 启动nginx
$ nginx -s reload # 重启nginx
$ nginx -s stop # 停止nginx

问题

执行nginx -s reload 后,访问502

# 查看nginx日志
$ vim /var/log/nginx/error.log

如果发现错误日志:include file "http.conf" not exists, line: "#include http.conf",fastdfs nginx模块缺少配置文件,执行以下命令补全配置文件即可。

$ cp /usr/local/src/fastdfs-master/conf/http.conf /etc/fdfs/ #供nginx访问使用
$ cp /etc/nginx/mime.types /etc/fdfs/ #供nginx访问使用

FastDFS 单机部署指南的更多相关文章

  1. RocketMQ 消息队列单机部署及使用

    转载请注明来源:http://blog.csdn.net/loongshawn/article/details/51086876 相关文章: <RocketMQ 消息队列单机部署及使用> ...

  2. Hadoop系列之(一):Hadoop单机部署

    1. Hadoop介绍 Hadoop是一个能够对海量数据进行分布式处理的系统架构. Hadoop框架的核心是:HDFS和MapReduce. HDFS分布式文件系统为海量的数据提供了存储, MapRe ...

  3. Ecstore安装篇-2.单机部署【linux】

    单机部署实施-linux 单机部署实施-linux author :James,jimingsong@vip.qq.com since :2015-03-02 系统环境需求 软件来源 底层依赖 1. ...

  4. FastDFS+Nginx部署详细教程

    本例使用到的所有tar和zip包地址:http://download.csdn.net/detail/corey_jk/9758664 本例中使用CentOS1.CentOS2两台机器实现. 1 GC ...

  5. ETL作业调度软件TASKCTL4.1单机部署

    单机部署,实际上就是将EM节点和一个Server节点安装到同一个地方.EM节点是TASKCTL服务端的最顶层,主要负责客户端与服务端之间的通信.Server节点是TASKCTL的调度服务控制层,也有A ...

  6. 首发福利!全球第一开源ERP Odoo系统架构部署指南 电子书分享

    引言 Odoo,以前叫OpenERP,是比利时Odoo S.A.公司开发的一个企业应用软件套件,开源套件包括一个企业应用快速开发平台,以及几千个Odoo及第三方开发的企业应用模块.Odoo适用于各种规 ...

  7. 使用yum源的方式单机部署MySQL8.0.13

    使用yum源的方式单机部署MySQL8.0.13 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 基本上开源的软件都支持三种安装方式,即rmp方式安装,源码安装和二进制方式安装.在 ...

  8. 使用二进制安装包的方式单机部署MySQL8.0.13

    使用二进制安装包的方式单机部署MySQL8.0.13 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 关于MySQL的介绍我这里就不多做赘述了,如何下载MySQL详情请参考:MySQ ...

  9. solr单机部署tomcat

    所需软件:solr4.8.1.Tomcat7 下载完相应软件后开始单机部署(windows下) 在F盘根目录创建solr文件夹,并解压solr4.8和tomcat7到该文件夹 在F盘根目录创建solr ...

随机推荐

  1. Django ORM各种查询

    正向和反向查询 正向 ----> 关联字段在当前表中,从当前表向外查叫正向 反向 —> 关联字段不在当前表中,当当前表向外查叫反向 正向通过字段,反向通过表名查 表结构 from djan ...

  2. RocketMQ重试机制和消息幂等

    一.重试机制 由于MQ经常处于复杂的分布式系统中,考虑网络波动,服务宕机,程序异常因素,很有可能出现消息发送或者消费失败的问题.因此,消息的重试就是所有MQ中间件必须考虑到的一个关键点.如果没有消息重 ...

  3. 利用视频解析网站免费观看各大平台VIP电影

    需求: 观看VIP电影.VIP电视 准备: 1.视频解析网站 2.VIP电影URL 教程开始: 1.百度搜索[视频解析],会索引出大量的视频解析网站,随便选择一个网站. 2.找到想观看的VIP视频,复 ...

  4. Decorator - 装饰器

    装饰器 Decorator, 先来看看对 decorator 这个名词的解释, 一个可调用的对象 A (decorator), 返回另一个可调用的对象 B, 在可调用的对象 C 的定义体之前通过语法 ...

  5. python 实现 跳一跳游戏 代码解析

    这个代码实现的是   手动点击起点 和 终点  ,程序自动判断距离.触屏时间  完成跳跃 原理(摘自项目说明页面):1. 将手机点击到“跳一跳”小程序界面:2. 用Adb 工具获取当前手机截图,并用a ...

  6. Zookeeper 部署 配置文件

    Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式. ■ 单机模式:      Zookeeper只运行在一台服务器上,适合测试环境:■ 伪集群模式:就是 ...

  7. 一文彻底搞懂 TCP三次握手、四次挥手过程及原理

    原创文章出自公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪 ...

  8. CSS中元素的显示模式

     在CSS中,根据元素显示模式的不同元素标签被分为了两类:行内元素(inline-level).块级元素(block-level). 1,首先介绍什么是行内元素,什么又是块级元素? 1.1,行内元素就 ...

  9. OpenLayers要素拖拽

    //拖拽要素 function dragFeature (_map,_dragEndCallback) { let selFeature = null; _map.on("pointerdr ...

  10. MR25H40非易失性串行接口MRAM

    Everspin 是设计,制造和商业销售离散和嵌入式磁阻RAM(MRAM)和自旋传递扭矩MRAM(STT-MRAM)的全球领导者,其市场和应用领域涉及数据持久性和完整性,低延迟和安全性至关重要.Eve ...