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

Mac 安装 fastdfs 笔记

1. 准备

2. 编译安装libfastcommon

参见 INSTALL 文件php

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直接安装html

也能够修改 make.sh, 指定安装位置,第51行添加nginx

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

这样全部文件都在指定目录中,方便管理.git

若是指定了安装位置,安装 fastdfs-nginx-module 会找不到文件.能够只留下 bin 文件的内容,将其余文件复制到系统对应的位置.github

3. tracker 配置启动

  1. 修改配置文件web

    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. 启动shell

    /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. 启动bash

    /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确实起到了文件去重的效果.文件只保留一份,继续上传相同的文件会建立文件的连接.若是最后一个连接被删除的时候,原文件也会被删除.

相关文章
相关标签/搜索