Mac 安装 fastdfs,nginx, fastdfs-nginx-module,fastdht 笔记

Mac 安装 fastdfs 笔记

1. 准备

2. 编译安装libfastcommon

参见 INSTALL 文件

cd libfastcommon
./make.sh
./make.sh install

#生成的文件
mkdir -p /usr/lib64
mkdir -p /usr/lib
install -m 755 libfastcommon.so /usr/lib64
install -m 755 libfastcommon.so /usr/lib
mkdir -p /usr/include/fastcommon
install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h pthread_func.h ini_file_reader.h _os_define.h sockopt.h sched_thread.h http_func.h md5.h local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h process_ctrl.h fast_mblock.h connection_pool.h fast_mpool.h fast_allocator.h fast_buffer.h skiplist.h multi_skiplist.h flat_skiplist.h skiplist_common.h system_info.h fast_blocked_queue.h php7_ext_wrapper.h id_generator.h char_converter.h char_convert_loader.h /usr/include/fastcommon

2. 安装 fastdfs

直接运行 make.sh,sh make.sh install直接安装

也可以修改 make.sh, 指定安装位置,第51行添加

DESTDIR=/Users/sky/all/web/fastdfs

这样所有文件都在指定目录中,方便管理.

如果指定了安装位置,安装 fastdfs-nginx-module 会找不到文件.可以只留下 bin 文件的内容,将其他文件复制到系统对应的位置.

3. tracker 配置启动

  1. 修改配置文件

    vi /etc/fdfs/tracker.conf
    # the base path to store data and log files
    # modify
    base_path=/Users/sky/all/web/fastdfs/base/trackerd
    
  2. 启动

    /Users/sky/all/web/fastdfs/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
    

4. storage 配置及启动

  1. 修改 storage.conf

    #拷贝一份新的storage配置文件:
    cp storage.conf.sample storage.conf
    
    #修改storage.conf
    vi storage.conf
    group_name=group1
    base_path=base_path=/Users/sky/all/web/fastdfs/base/storaged
    store_path0=/Users/sky/all/web/fastdfs/store
    #如果有多个挂载磁盘则定义多个store_path,如下
    #store_path1=.....
    #store_path2=......
    tracker_server=192.168.1.103:22122   #配置tracker服务器:IP
    #如果有多个则配置多个tracker
    #tracker_server=192.168.101.4:22122
    
    #配置http端口
    http.server_port=80
    
  2. 启动

    /Users/sky/all/web/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf restart
    

5. 测试

  1. fdfs_monitor /etc/fdfs/storage.conf

    /Users/sky/all/web/fastdfs/bin/fdfs_monitor /etc/fdfs/storage.conf
    
    /Users/sky/all/web/fastdfs/bin/fdfs_monitor /etc/fdfs/client.conf
    
  2. test

    /Users/sky/all/web/fastdfs/bin/fdfs_test /etc/fdfs/client.conf upload /Users/sky/Pictures/pretty.jpg   
    

  3. 测试结果

    $ /Users/sky/all/web/fastdfs/bin/fdfs_test /etc/fdfs/client.conf upload /Users/sky/Pictures/pretty.jpg
    This is FastDFS client test program v5.12
    
    Copyright (C) 2008, Happy Fish / YuQing
    
    FastDFS may be copied only under the terms of the GNU General
    Public License V3, which may be found in the FastDFS source kit.
    Please visit the FastDFS Home Page http://www.csource.org/
    for more detail.
    
    [2018-04-27 15:16:09] DEBUG - base_path=/Users/sky/all/web/fastdfs/base/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
    
    tracker_query_storage_store_list_without_group:
    	server 1. group_name=, ip_addr=192.168.1.103, port=23000
    
    group_name=group1, ip_addr=192.168.1.103, port=23000
    storage_upload_by_filename
    group_name=group1, remote_filename=M00/00/00/wKgBZ1rizjmAIoMoAAAiJgI2OLI651.jpg
    source ip address: 192.168.1.103
    file timestamp=2018-04-27 15:16:09
    file size=8742
    file crc32=37107890
    example file url: http://192.168.1.103:8080/group1/M00/00/00/wKgBZ1rizjmAIoMoAAAiJgI2OLI651.jpg
    storage_upload_slave_by_filename
    group_name=group1, remote_filename=M00/00/00/wKgBZ1rizjmAIoMoAAAiJgI2OLI651_big.jpg
    source ip address: 192.168.1.103
    file timestamp=2018-04-27 15:16:09
    file size=8742
    file crc32=37107890
    example file url: http://192.168.1.103:8080/group1/M00/00/00/wKgBZ1rizjmAIoMoAAAiJgI2OLI651_big.jpg
    

6. fastdfs-nginx-module

  1. 配置

    ./configure  \
    --prefix=/Users/sky/all/web/nginx  \
    --with-http_ssl_module  \
    --with-pcre \
    --sbin-path=/Users/sky/all/web/nginx/bin/nginx \
    --with-cc-opt='-I/usr/local/opt/pcre/include -I/usr/local/opt/openssl/include' \
    --with-ld-opt='-L/usr/local/opt/pcre/lib -L/usr/local/opt/openssl/lib' \
    --conf-path=/Users/sky/all/web/nginx/nginx.conf \
    --pid-path=/Users/sky/all/web/nginx/run/nginx.pid \
    --lock-path=/Users/sky/all/web/nginx/run/nginx.lock \
    --http-client-body-temp-path=/Users/sky/all/web/nginx/run/nginx/client_body_temp \
    --http-proxy-temp-path=/Users/sky/all/web/nginx/run/nginx/proxy_temp \
    --http-fastcgi-temp-path=/Users/sky/all/web/nginx/run/nginx/fastcgi_temp \
    --http-uwsgi-temp-path=/Users/sky/all/web/nginx/run/nginx/uwsgi_temp \
    --http-scgi-temp-path=/Users/sky/all/web/nginx/run/nginx/scgi_temp \
    --http-log-path=/Users/sky/all/web/nginx/log/access.log \
    --error-log-path=/Users/sky/all/web/nginx/log/error.log \
    --with-http_gzip_static_module \
    --with-http_v2_module \
    --with-http_addition_module \
    --add-module=/Users/sky/all/source/nginx/ngx-fancyindex \
    --add-module=/Users/sky/all/source/nginx/fastdfs-nginx-module/src
    

    说明:

    1. --prefix=/Users/sky/all/web/nginx : nginx 主目录
    2. --sbin-path=/Users/sky/all/web/nginx/bin/nginx : nginx 的可执行文件
    3. --conf-path=/Users/sky/all/web/nginx/nginx.conf :nginx 的配置文件
    4. --http-log-path=/Users/sky/all/web/nginx/log/access.log :访问日志
    5. --error-log-path=/Users/sky/all/web/nginx/log/error.log :错误日志
    6. --add-module=/Users/sky/all/source/nginx/ngx-fancyindex :一个 nginx 目录美化插件,教程地址:nginx目录列表及美化
    7. --add-module=/Users/sky/all/source/nginx/fastdfs-nginx-module/src : fastdfs-nginx-module,插件目录
  2. 安装

    make & make install
    
  3. 修改 nginx 的配置文件

    subl /Users/sky/all/web/nginx/nginx.conf
    
    server {
    listen       8080;
    server_name  localhost;
    
    location / {
    root   html;
    index  index.html index.htm;
    }
    
    location /download{
    # 目录美化配置
    include /Users/sky/all/web/nginx/html/Nginx-Fancyindex-Theme/fancyindex.conf; 
    alias /Users/sky/Downloads; #指定目录所在路径
    autoindex on; #开启目录浏览
    autoindex_format html; #以html风格将目录展示在浏览器中
    autoindex_exact_size off; #切换为 off 后,以可读的方式显示文件大小,单位为 KB、MB 或者 GB
    autoindex_localtime on; #以服务器的文件时间作为显示的时间
    charset utf-8,gbk; #展示中文文件名
    }
    
    location /group1/M00 {
    alias /Users/sky/all/web/fastdfs/store/data;
    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;
    }
    

  4. 修改/etc/fdfs/mod_fastdfs.conf

    #存放 mod_fastdfs 日志的位置,不重要
    base_path=/Users/sky/all/web/fastdfs/base/fastdfs-nginx-module
    #设置 tracker_server 的地址
    tracker_server=localhost:22122
    #设置该 storage 所属组
    group_name=group1
    #url 访问路径. false 为: /M00/00/xxx. true 为/group1/M00/00/XXX
    url_have_group_name = true
    #必须与 storage.conf 中的配置相同
    store_path0=/Users/sky/all/web/fastdfs/store
    

  5. 创建符号链接

    ln -s /Users/sky/all/web/fastdfs/store/data  /Users/sky/all/web/fastdfs/store/data/M00
    
  6. 用上面的测试结果测试:

测试结果

7. 安装 fastdht

  1. 下载fastdht

    git clone https://github.com/happyfish100/fastdht.git
    
  2. 下载berkeley-db

    wget http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz
    

    该版本比较旧了,不过fastdht中的文档使用的是这个版本,能用就行.

  3. 安装berkeley-db

    tar xzf db-4.7.25.tar.gz
    cd db-4.7.25/build_unix
    ../dist/configure --prefix=/Users/sky/all/db/berkeley-4.7.25
    make; make install
    

    我指定了berkeley-db安装到其他位置.

  4. 编译安装fastdht

    • 修改 make.sh
    TARGET_PREFIX=/Users/sky/all/web/fdht
    TARGET_CONF_PATH=/Users/sky/all/web/fdht/conf
    
    CFLAGS='-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/Users/sky/all/db/berkeley-4.7.25/include/ -L/Users/sky/all/db/berkeley-4.7.25/lib/'
    
    cd FastDHT
    ./make.sh; sudo ./make.sh install
    

    说明:

    1. TARGET_PREFIX=/Users/sky/all/web/fdht安装位置
    2. TARGET_CONF_PATH=/Users/sky/all/web/fdht/conf配置文件位置
    3. CFLAGS='-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/Users/sky/all/db/berkeley-4.7.25/include/ -L/Users/sky/all/db/berkeley-4.7.25/lib/' berkeley的安装目录位置,注意写法
    4. ./make.sh install时,会有文件到链接到/usr目录中去,需要root 权限.所以使用sudo 圆形
  5. 配置

    • 修改fdfhd.conf

         # the base path to store data and log files
         # 日志和数据文件位置
         base_path=/Users/sky/all/web/fdht/fastdht
      
         #引用fdht_servers.conf,注意 :  include 语法,不适用的话要加两个 ## 
         #include /Users/sky/all/web/fdht/conf/fdht_servers.conf
      
    • 修改fdht_servers.conf

      group_count = 1
      group0 = 192.168.1.103:11411
      
    • 修改fdht-client.conf

      #modify
      keep_alive=1
      #modify
      base_path=/Users/sky/all/web/fdht/fastdht-client
      
      #include /Users/sky/all/web/fdht/conf/fdht_servers.conf
      

  6. 启动

    /Users/sky/all/web/fdht/bin/fdhtd /Users/sky/all/web/fdht/conf/fdhtd.conf restart
    
  7. 测试

    /Users/sky/all/web/fdht/bin/fdht_test /Users/sky/all/web/fdht/conf/fdht_client.conf
    

    mac 下用这个命令测试会有错.直接使用上传测试

  8. 上传一个文件

    /Users/sky/all/web/fastdfs/bin/fdfs_upload_file /etc/fdfs/client.conf /Users/sky/Pictures/pretty.jpg
    

    返回结果:

    group1/M00/00/00/wKgBZ1rjRm2ANoTIAAAiJjMA_kk080.jpg
    

    这时在/Users/sky/all/web/fastdfs/store/data/00目录发现有两个文件. 分别是:wKgBZ1rjRm2AYrHAAAAiJgI2OLI775.jpgwKgBZ1rjRm2ANoTIAAAiJjMA_kk080.jpg

    其中wKgBZ1rjRm2ANoTIAAAiJjMA_kk080.jpg时指向wKgBZ1rjRm2AYrHAAAAiJgI2OLI775.jpg的链接.可以多上传几次尝试.

  9. 删除刚才上传的文件.

    /Users/sky/all/web/fastdfs/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKgBZ1rjRm2ANoTIAAAiJjMA_kk080.jpg
    

    结束是wKgBZ1rjRm2AYrHAAAAiJgI2OLI775.jpgwKgBZ1rjRm2ANoTIAAAiJjMA_kk080.jpg都被删除了.

  10. 总结: fastdht确实起到了文件去重的效果.文件只保留一份,继续上传相同的文件会创建文件的链接.如果最后一个链接被删除的时候,原文件也会被删除.

转载于:https://my.oschina.net/u/930279/blog/1802338

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值