Manjaro/Arch/Linux 安装 FastDFS 并集成 Nginx 教程

前言

博主发现很多博文没有介绍开发者信息,本人习惯加上。FastDFS开发者为happyfish100(真名不清楚),目前在github上发布公开源码,地址为:https://github.com/happyfish100。本文用到的作者的作品有:

fastdfs、libfastcommon、fastdfs-nginx-module。

博主电脑是Manjaro 18.0.4 ,内核4.19.62-1-Manjaro。最近想要配置一个分布式的文件存储服务,相中了FastDFS,然而在网上找到的都是用CentOS或者Ubuntu的安装经验,没有Manjaro的,遂自行挖坑。

索性结局完美,经对比其他系统安装经验,发现Manjaro安装更简单些,因为不需要再额外导入任何的第三方依赖包!

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

关于FastDFS的架构和能力介绍网上有很多,本文重点是安装测试,架构这里不再赘述。想要了解架构这方面概念的请先请参考:https://blog.csdn.net/kamroselee/article/details/80334621

准备

博主发现各大博文教程都是直接下载的FastDFS历史源码,然后做编译安装,这本身没毛病,但是这个方案当时可能可行,随着原项目开发人员的更新和迭代,如果按照固定地址下载源码的方式安装,某些部件可能已过时。尤其是博主自己安装的时候,总是发现libfastcommon这个官方必要的依赖库不可用。这个包和fastdfs版本是相对应的,在作者github中,fastdfs项目History文件上声明了:correct CRC32, you must upgrade libfastcommon to V1.38 or later,这导致博主在下载其他博主的libfastcommon时编译不通过。

博主推荐个不会随着时间流逝导致这篇博文过时的方式,原作者提供的也仅仅是源代码,需要编译,没有编译好的。

  1. 下载FastDFS最新源码:https://github.com/happyfish100/fastdfs.git
  2. 下载libfastcommon最新源码:https://github.com/happyfish100/libfastcommon.git
  3. 下载fastdfs-nginx-module最新源码:https://github.com/happyfish100/fastdfs-nginx-module.git
  4. 下载nginx最新源码:http://nginx.org/en/download.html
  5. 把它们放在同一个目录下,例如:/home/gaoxiang/fastdfs(实际上放哪儿都行,只要你记得路径,这里图方便)
  6. 解压全部安装包。
  7. 切换到root账户。(普通账户编译可以,安装不行。尤其是最后的nginx,要配置user为root。    -----写给linux小白。)

安装、配置

我安装的时候没有遇到系统缺少包的情况,推荐各位安装前更新到最新版本。

在 /home/gaoxiang/fastdfs 下提前创建两个目录fdfs-data 和 fdfs-storage。(可以放别处,系统允许范围内随意)

编译安装 libfastcommon 

  1. 进入 libfastcommon 源码目录
  2. 执行 ./make.sh 进行编译
  3. 执行 ./make.sh install 进行安装

编译安装 FastDFS

  1. 进入 fastdfs 源码目录
  2. 执行 ./make.sh 进行编译
  3. 执行 ./make.sh install 进行安装
  4. 安装完成后可执行 ls -la /usr/bin/fdfs* 查看安装的可执行命令有哪些。

配置 FastDFS Tracker 服务

  1. 进入 /etc/fdfs 目录,有三个后缀为 .sample 的配置文件,拷贝三分,去掉后缀做正式配置文件。
  2. 编辑 tracker.conf 文件,修改以下内容:
  3. 更改:base_path=/home/gaoxiang/fastdfs/fdfs-data #tracker存储data和log的跟路径,必须提前创建好 
  4. 端口 port(默认:22122) 和 绑定地址 bind_addr 不用写,保持默认即可,保存文件。
  5. 启动 tracker :/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start  (命令在/usr/bin/下,一般不需要输入绝对路径)

配置 FastDFS Storage 服务

  1. 进入 /etc/fdfs 目录,编辑 storage.conf 文件,并修改以下内容
  2. 更改:base_path=/home/gaoxiang/fastdfs/fdfs-data
  3. 更改:store_path0=/home/gaoxiang/fastdfs/fdfs-storage
  4. 更改:tracker_server=你的IP:22122 #如果tracker在其他服务器,则填写其它服务器的IP,当然,原理上不推荐这么干。
  5. 端口 port(默认:23000) 和 绑定地址 bind_addr 不用写,保持默认即可,保存文件。
  6. 启动 storage :fdfs_storaged /etc/fdfs/storage.conf start  (命令在/usr/bin/下,一般不需要输入绝对路径)

检查 storage 和 tracker 的绑定情况

  1. 执行:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
  2. 查看系统打印,Group1 下 找到 Storage 1 : 后面 ip_addr 的最后如果是 ACTIVE ,则绑定成功

测试 FastDFS 部署是否可用

  1. 进入 /etc/fdfs 目录,编辑 client.conf,并修改以下内容:
  2. 更改:base_path=/home/gaoxiang/fastdfs/fdfs-data
  3. 更改:tracker_server=你的IP:22122 
  4. 其它保持默认,保存文件。
  5. 执行:fdfs_test /etc/fdfs/client.conf upload test1.jpeg  (看好中间的upload参数别忘了,图片自定义路径)
  6. 会打印上传结果和文件路径,如:group1/M00/00/00/wKgBI11JMmmANd.jpeg 
  7. 路径中group1代表组名, M00 代表磁盘,00/00 是目录,wKgBI11JMmmANd.jpeg 是随机生成的文件名称。
  8. 此时在web中还无法访问,不过在 fdfs_storage 目录中可以看到这张图片了。安装nginx模块后可访问。

整合编译 Nginx 和 fastdfs-nginx-module 模块

  1. 进入 nginx 源码路径
  2. 配置加载 fastdfs-nginx-module 模块 :./configure --add-module=~/fastdfs/fastdfs-nginx-module/src/(换成自己路径)
  3. 执行 make 编译
  4. 执行 make install 安装

配置 Nginx 服务

  1. 拷贝 fastdfs-nginx-module/src 目录下的 mod_fastdfs.conf 到 /etc/fdfs 下
  2. 进入 /etc/fdfs 目录,编辑 mod_fastdfs.conf,并修改以下内容:
  3. 更改:base_path=/home/gaoxiang/fastdfs/fdfs-data
  4. 更改:tracker_server=你的IP:22122 
  5. 更改:storage_server_port=23000
  6. 更改:url_have_group_name=true
  7. 更改:store_path0=/home/gaoxiang/fastdfs/fdfs_storage
  8. 其它默认,保存文件。

配置 Nginx 增加 fastdfs 模块

拷贝 fastdfs/conf (源码中)下的所有配置文件到 /etc/fdfs 下

进入 /usr/local/nginx/conf 目录下,更改nginx.conf 文件如下:

在server 80 端口下添加 

location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

文件的最上方要添加上 user root; (这个坑使我启动失败多次)

完整代码如下:


user  root;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location ~/group([0-9])/M00{
            ngx_fastdfs_module;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
       
    }

}

启动 Nginx,执行:/usr/local/nginx/nginx

如出现 ngx_http_fastdfs_set pid=** 字样,则启动成功。

浏览器访问:http://localhost/group1/M00/00/00/wKgBI11JMmmANd.jpeg 可查看刚开始上传的图片

至此 服务搭建完成 后续如果有需要会再写一篇 spring cloud 集成 fastdfs 的文章。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值