安装FastDFS

FastDFS开发者的GitHub地址为:https://github.com/happyfish100
打开上述链接,我们点击fastdfs–>release,发现最新版的FastDFS为2017年上传的V5.11,接下来我们来安装最新版的FastDFS。
在安装前,我们新建一个目录,用来存储所有下载文件:mkdir /download,进入download目录完成接下来操作:cd /download

1. 下载安装 libfastcommon

libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,是FastDFS的基础环境,安装即可 。
1.1 下载 libfastcommon 压缩包:wget https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz
1.2 解压 libfastcommon 压缩包:tar -zxvf V1.0.36.tar.gz
1.3 进入解压目录编译安装:
cd libfastcommon-1.0.36/
编译:./make.sh
在上面这步中报错:gcc: 未找到命令,即没有gcc命令,那就安装gcc命令:sudo yum -y install gcc gcc-c++,然后重新编译。
安装:sudo ./make.sh install

从安装日志中可以找到  usr/include/fastcommon   common_define.h   两个路径,先记录下来(之后用)

2. 下载安装FastDFS

2.1 下载FastDFS压缩包:wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
2.2 解压:tar -zxvf V5.11.tar.gz
2.3 进入解压目录编译安装:
cd fastdfs-5.11/
编译:./make.sh (注意:需要perl的支持,否则不能运行,可以参考此文章https://blog.csdn.net/wtwshui/article/details/79415799安装)
安装:sudo ./make.sh install

从安装日志中可以找到  /usr/include/fastdfs         fdfs_define.h   两个路径,先记录下来(之后用)
2.4 查看安装后的相应文件与目录
  2.4.1 服务脚本:ll /etc/init.d/ | grep fdfs
  2.4.2 配置文件(这四个是开发者给的样例配置文件):ll /etc/fdfs/
  2.4.3 命令工具:ll /usr/bin/ | grep fdfs

3. 配置FastDFS跟踪器(Tracker)

首先,将 /etc/fdfs/目录下开发者给的样例配置文件复制并重命名:
进入目录:cd /etc/fdfs/
复制文件:
sudo cp client.conf.sample client.conf
sudo cp storage.conf.sample storage.conf
sudo cp tracker.conf.sample tracker.conf
sudo cp storage_ids.conf.sample storage_ids.conf

1. 编辑配置文件: vim tracker.conf
2. 修改配置文件:其余的默认即可
配置文件是否不生效,false 为生效,不变即可:
disabled=false
提供服务的端口,不变即可:
port=22122
Tracker 数据和日志目录地址,该目录必须手动创建:
base_path=/root/data/fastdfs/tracker
HTTP 服务端口,修改为80:
http.server_port=80
3. 创建tracker基础数据目录,即base_path对应的目录
mkdir -p /root/data/fastdfs/tracker
4. 防火墙中打开跟踪端口(默认的22122):
sudo firewall-cmd --permanent --zone=public --add-port=22122/tcp
5. 重启防火墙:
sudo firewall-cmd --reload
6. 查看防火墙中开启的端口:
sudo firewall-cmd --list-port

注意:CentOS7以上使用4.5.6方式开启防火墙,CentOS6版本参考http://www.mamicode.com/info-detail-971703.html做相应操作

7. 启动Tracker,初次成功启动,会在 /home/bdc/data/fastdfs/ (配置的base_path)下创建 data、logs 两个目录。
sudo service fdfs_trackerd start
8. 查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装启动成功。
sudo netstat -ntlp | grep 22122 或 sudo lsof -i:22122
9. 关闭Tracker命令
sudo service fdfs_trackerd stop
10. 设置Tracker开机启动
sudo chkconfig --add fdfs_trackerd
11. 查看开机启动任务:
sudo chkconfig --list

4.配置 FastDFS 存储器(Storage)

编辑配置文件:sudo vim storage.conf
修改配置文件:其余的默认即可
配置文件是否不生效,false 为生效,不变即可:
disabled=false
指定此 storage server 所在组(卷),根据自身需求更改:
group_name=group1
指定storage server 服务端口,默认即可:
port=23000
心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳),默认即可:
heart_beat_interval=30
Storage 数据和日志目录地址,该目录必须手动创建:
base_path=/root/data/fastdfs/storage
存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。
store_path_count=1
逐一配置 store_path_count 个路径,索引号基于 0。如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/root/data/fastdfs/storage 
FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256
tracker_server 的列表 ,会主动连接 tracker_server,有多个 tracker server 时,每个 tracker server 写一行。
tracker_server=bdcTracker:22122
允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59
访问端口
http.server_port=80

注意:需要重启tracker后,配置才会生效

创建Storage基础数据目录,对应base_path目录及store_path0路径
mkdir -p /root/data/fastdfs/storage 
防火墙中打开存储器端口(默认的 23000)
sudo firewall-cmd --permanent --zone=public --add-port=23000/tcp
重启防火墙:
sudo firewall-cmd --reload
查看防火墙中开启的端口:
sudo firewall-cmd --list-port '

补充:由于上面tracker地址配置的不是ip地址,所以我们要修改host文件,使之与ip对应:
sudo vim /etc/hosts
添加如下内容,下面ip为虚拟机ip:
192.168.105.133 bdcTracker

启动 Storage,启动Storage前确保Tracker是启动的。初次启动成功,会在/root/data/fastdfs/storage  目录下创建 data、 logs 两个目录。
sudo service fdfs_storaged start
查看 Storage 是否成功启动,23000 端口正在被监听,则 Storage 启动成功。
sudo netstat -ntlp | grep 23000 或 sudo lsof -i:23000或sudo netstat -ntlp | grep fdfs
关闭 Storage:
sudo service fdfs_storaged stop
查看Storage和Tracker是否在通信:
fdfs_monitor /etc/fdfs/storage.conf
在打印结果中,看到 ip_addr = 192.168.105.133 (bdcTracker) ACTIVE ,表示正在通信。
设置 Storage 开机启动
sudo chkconfig fdfs_storaged on
Storage 目录,同 Tracker,Storage 启动成功后,在base_path 下创建了data、logs两个目录,记录着 Storage Server 的信息。在 store_path0 目录下,创建了N*N个子目录,用于存储文件。

5. 文件上传测试

修改 Tracker 服务器中的客户端配置文件:sudo vim client.conf
修改配置,未列出的默认即可:
Client 的数据和日志目录,该目录必须手动创建:
base_path=/root/data/fastdfs/client
Tracker端口
tracker_server=bdcTracker:22122
Http访问端口
http.tracker_server_port=80

创建Client数据目录:
mkdir -p /root/data/fastdfs/client 
上传测试
在linux内部执行如下命令上传 02.jpg 图片
fdfs_upload_file /etc/fdfs/client.conf /home/bdc/图片/02.jpg
上传成功后返回文件ID号:group1/M00/00/00/wKhphVrwGUmAduGXAAHjhVtVRZw426.jpg,返回的文件ID由group、存储目录、两级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。
查看文件:
ll /root/data/fastdfs/storage/data/00/00

安装Nginx

前言:Nginx安装环境准备工作
1) gcc准备:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,查看是否安装gcc:
yum list installed | grep gcc
如果没有gcc环境,需要安装gcc,执行命令安装:
sudo yum -y install gcc gcc-c++
2) PCRE准备:PCRE是一个Perl库,包括 Perl 兼容的正则表达式库。nginx的http模块使用PCRE来解析正则表达式,所以需要在Linux上安装PCRE库,执行安装命令:
sudo yum -y install pcre pcre-devel
3) zlib准备:zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库,运行安装命令:
sudo yum -y install zlib zlib-devel
4) openssl准备:OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。运行安装命令:
sudo yum -y install openssl openssl-devel

正式安装Nginx

目前版本的FastDFS还不支持http访问文件,所以要想通过http来访问已经上传成功的文件,需要安装Nginx支持;Nginx只需要安装到StorageServer所在的服务器即可,用于支持http访问文件。
1. 下载Nginx:
wget https://nginx.org/download/nginx-1.14.0.tar.gz
2. 解压
tar -zxvf nginx-1.14.0.tar.gz
3. 进入解压目录编译安装:
3.1 进入目录:
cd nginx-1.14.0
3.2 配置Nginx:启用 openssl密码库,并使用当前用户启动nginx,其余默认即可
./configure --with-http_ssl_module --user=root
3.3 编译 Nginx:
make -j 4
3.4 安装:
sudo make install
3.5 创建软链接(类似快捷方式),并启动 Nginx:
sudo ln -s /usr/local/nginx/sbin/nginx /usr/bin/
sudo nginx
其他命令:
sudo nginx -s stop
sudo nginx -s reload
3.6 查看是否启动成功:
sudo netstat -anp | grep nginx
3.7 设置nginx开机启动
sudo vim /etc/rc.local
添加下面一行:
/usr/local/nginx/sbin/nginx
然后更改文件权限
sudo chmod 744 /etc/rc.d/rc.local
3.8 查看nginx的版本及模块
nginx -V
3.9 访问刚刚上传的图片

1)修改nginx.conf配置
编辑文件:sudo vim /usr/local/nginx/conf/nginx.conf
注:原配置文件中有很多注释掉的内容,这里不再粘贴,,并且需要改动的地方已经加注释标示出来了

#修改nginx启动用户,和系统启动用户一致,nginx默认启动用户为nobody,在nginx安装的时候已经指定为root用户
user root;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
#侦听端口
listen 80;
server_name localhost;
#修改映射地址,将http中的地址/group1/M00/映射为系统实际地址/home/bdc/data/fastdfs/storage/data/
location /group1/M00/ {
alias /root/data/fastdfs/storage/data/;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

重启nginx:sudo nginx -s reload

访问文件:
方式一:http://ip:80/group1/M00/00/00/wKhphVrwGUmAduGXAAHjhVtVRZw426.jpg
注意这里可能出现问题:Centos7自带的最初版火狐浏览器解析上面地址的时候可能解析为一个目录,即:http://bdctracker:8081/group1/M00/00/00/wKhphFrhIVuADqfzAASB-wpUaac425.jpg/这种形式,导致访问不到文件,问题出在wKhphFrhIVuADqfzAASB-wpUaac425.jpg这个位置,把文件和访问地址的后缀名改为.jpeg就可以访问到,具体原因不太清楚,不过谷歌浏览器或者更新后的火狐浏览器又不会出现问题,按上面地址又可以访问到文件,学艺不精,不再研究。。。。

另外注意:防火墙要放行80端口
方式二:wget http://bdc:80/group1/M00/00/00/wKhphVrwGUmAduGXAAHjhVtVRZw426.jpg,可以获取到文件则nginx配置成功。

FastDFS 配置 Nginx 模块

前言: fastdfs-nginx-module 模块说明
  FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 数据同步有延迟的问题。
  假设 Tracker 服务器将文件上传到了 Stroage1,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 Stroage2,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 Stroage2 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。

安装配置fastdfs-nginx-module模块
1) 下载 fastdfs-nginx-module
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
2) 解压
unzip master.zip
3) 停止nginx服务
sudo nginx -s stop
4) nginx添加fastdfs-nginx-module模块重新编译安装
进入nginx解压目录
cd nginx-1.14.0/
nginx配置fastdfs-nginx-module模块
./configure --with-http_ssl_module --user=root --add-module=../fastdfs-nginx-module-master/src/
编译 
make

注意:编译时可能会出现错误,如出现,解决方式如下:

cd fastdfs-nginx-module-master/src/

vim config

修改文件内容如下:

  ngx_module_incs="/usr/include/fastcommon /usr/include/fastdfs"  说明:里面两个路径是上文中记录的

  CORE_INCS="$CORE_INCS /usr/include/fastcommon /usr/include/fastdfs"

修改后重新  nginx配置fastdfs-nginx-module模块

安装
sudo make install
5) 查看Nginx的模块
nginx -V
若有下面配置则证明模块添加成功:
configure arguments: --add-module=../fastdfs-nginx-module-master/src/
6) 修改配置文件1
复制 fastdfs-nginx-module 源码中的配置文件mod_fastdfs.conf,并修改配置
sudo cp ~/download/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
编辑mod_fastdfs.conf文件:
sudo vim /etc/fdfs/mod_fastdfs.conf
修改如下配置,其余默认即可:

#连接超时时间
connect_timeout=15
# TrackerServer的IP和端口
tracker_server=bdcTracker:22122
# StorageServer端口
storage_server_port=23000
# 如果文件ID的uri中包含group分组信息,则要设置为true
url_have_group_name = true
# Storage配置的store_path0路径,必须和storage.conf中的一致
store_path0=/root/data/fastdfs/storage 
7) 修改配置文件2
复制 FastDFS 源码中的配置文件到/etc/fdfs 目录:
cd ~/download/fastdfs-5.11/conf/
sudo cp anti-steal.jpg http.conf mime.types /etc/fdfs/
8) 修改配置文件3
修改nginx的配置文件nginx.conf,修改下面配置,其它不变:
sudo vim /usr/local/nginx/conf/nginx.conf

#location /group1/M00/ {
#alias /home/bdc/data/fastdfs/storage/data/;
#}
#添加fastdfs-nginx-module模块
location ~/group([0-9])/M00/ {
ngx_fastdfs_module;
}
注意:
1) nginx.conf 配置中的 listen 80端口值要与/etc/fdfs/storage.conf中的http.server_port=80 (前面配置为80了)端口值相对应;如果改成其它端口,则需要统一,同时在防火墙中打开该端口。
2) location 的配置,在集群模式中,有多个group,所以这里以正则的方式配置,如果是单一节点可以只配置指定group。
9) 启动Nginx
sudo nginx
打印类似如下信息,则配置成功:
ngx_http_fastdfs_set pid=119826
10) http访问
能获取到文件,则nginx配置成功;注意和前面中直接使用nginx路由访问不同的是,这里配置 fastdfs-nginx-module 模块,可以重定向文件链接到源服务器取文件。
http://bdc:80/group1/M00/00/00/wKhphVrwGUmAduGXAAHjhVtVRZw426.jpg
wget http://bdc:80/group1/M00/00/00/wKhphVrwGUmAduGXAAHjhVtVRZw426.jpg
好了,到此FastDFS单节点安装配置成功,接下来我们使用Java操作FastDFS实现文件上传和下载,最后将单节点模式改为集群模式

JAVA代码上传

package com.fdfs.demo;

import org.csource.fastdfs.ClientGlobal;
import org.csource.fastdfs.StorageClient;
import org.csource.fastdfs.StorageServer;
import org.csource.fastdfs.TrackerClient;
import org.csource.fastdfs.TrackerServer; public class Demo1 {
public static void main(String[] args) throws Exception {
//加载配置文件,配置文件中的内容就是tracker服务的地址
ClientGlobal.init("fdfs_client.conf");
//创建一个TrackerClient对象
TrackerClient trackerClient = new TrackerClient();
//使用TrackerClient对象创建连接,获得一个TrackerServer对象
TrackerServer trackerServer = trackerClient.getConnection(); // 定义存储服务器对象句柄
StorageServer storageServer = null; StorageClient storageClient = new StorageClient(trackerServer, storageServer); String[] strings = storageClient.upload_file("D:/log.txt", "txt", null); for (String str : strings) {
System.out.println(str);
}
}
}
connect_timeout = 2
network_timeout = 30
charSet = UTF-8
http.tracker_http_port = 80
http.anti_steal_token = no
http.secret_key = FastDFS1234567890
tracker_server = 192.168.220.128:22122

安装FastDFS+Nginx的更多相关文章

  1. centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置

    前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...

  2. linux上安装fastdfs+nginx+ngin-module实践并解决多个异常篇

    为什么选择Nginx Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性: 在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主 ...

  3. FastDFS单节点安装 & FastDFS+Nginx整合

    安装环境    FastDFS_v5.05.tar.gz(http://sourceforge.net/projects/fastdfs/files/)    fastdfs-nginx-module ...

  4. Centos安装FastDFS+Nginx

    一.安装环境: gcc:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ PCRE:PCRE(Perl C ...

  5. Centos安装FastDFS+Nginx(一天时间搞定)

    最近在研究和使用Fastdfs,别人搭的环境,终究是别人的,绝知此事要躬行~躬行啊~      下面的脚本主要参考了官方的INSTALL文件,这个是比较权威的,部分地方和实际情况不一致.比如配置文件的 ...

  6. Linux安装FastDFS~Nginx~

    确保Linux联网,我这里使用的是CentOS7操作,联网教程 https://www.cnblogs.com/taopanfeng/p/10978752.html 先把指定的四个文件放入指定目录 安 ...

  7. FastDFS + Nginx 安装

    1.安装FastDFS依赖lib包 cd /usr/local/src/ git clone https://github.com/happyfish100/libfastcommon.git cd  ...

  8. FastDFS+Nginx安装配置

    下载相关包: libevent-2.0.22-stable.tar.gz => https://github.com/libevent/libevent/releases/download/re ...

  9. [转]Centos7 fastdfs/nginx 安装与配置

    https://blog.csdn.net/alex_bean/article/details/78625131 参考文章 分布式文件系统-FastDFS 使用FastDFS搭建图片服务器单实例篇 C ...

随机推荐

  1. HDL代码风格建议(2)乘法器和DSP推断

    Inferring Multipliers and DSP Functions Inferring Multipliers module unsigned_mult (out, a, b); :] o ...

  2. [Real World Haskell翻译]第20章 Haskell系统编程

    第20章 Haskell系统编程 到目前为止,我们已经讨论了大多数的高层次的概念.Haskell也可以用于较低级别的系统编程.很可能是用haskell编写出底层的与操作系统接口的程序. 在本章中,我们 ...

  3. python3 使用语音库pyttsx3

    python3 使用语音库pyttsx3 环境linux+python3.6 sudo pip install pyttsx3 sudo apt-get install espeak 代码实例 imp ...

  4. 北京Uber优步司机奖励政策(12月21日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  5. 北京Uber优步司机奖励政策(12月11日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. div仿textarea可输入

    原本要用textarea,但是后来发现好像只有IE支持textarea里边使用html标签,由于需要在textarea中显示一条横线(<hr />),在网上查了很久,都说textarea是 ...

  7. AirtestIDE实践二:Poco框架试用

    上一篇用airtest框架做了一个梦幻西游手游的DEMO,这次看看poco的强大之处.首先安装poco:pip install pocoui 其次,把SDK集成到你家游戏中,我这直接用官网提供的一个U ...

  8. Web应用服务器性能压力测试

    压力测试需要关注三个方面:如何正确产生压力.如何定位瓶颈.如何预估系统的承载能力 产生压力的方法 通常可以写脚本产生压力机器人对服务器进行发包和收包操作,也可以使用现有的工具(像jmeter.Load ...

  9. Python 多线程、进程、协程上手体验

    浅谈 Python 多线程.进程.协程上手体验 前言:浅谈 Python 很多人都认为 Python 的多线程是垃圾(GIL 说这锅甩不掉啊~):本章节主要给你体验下 Python 的两个库 Thre ...

  10. 在deepin系统中制作桌面快捷方式

    在使用deepin-wine 安装一些软件的时候,每次启动都需要到.deepinwine目录下运行deepin-wine xx.exe.笔者在安装过HeidiSql之后,一直苦于这种情况.比较好的解决 ...