FastDFSクラスターを使用して、自分でファイル管理システムを構築してください。私から学んでください。

目次
 

1.FastDFSの概要

  • 前書き
  • FastDFSストレージ戦略
  • FastDFSアップロードプロセス
  • FastDFSファイルの同期
  • FastDFSファイルのダウンロード

2、FastDFS環境をインストールします

  • 序文
  • libfastcommonをダウンロードしてインストールします
  • FastDFSをダウンロードしてインストールします
  • FastDFSトラッカー(トラッカー)の構成
  • FastDFSストレージの構成(ストレージ)
  • ファイルアップロードテスト

3、Nginxをインストールします

  • nginxのインストールに必要な環境  
  • Nginxをインストールします
  • アクセスファイル

4、FastDFSはNginxモジュールを構成します

  • Nginxモジュールをインストールして構成します

5、アクセス制御


1.FastDFSの概要

FastDFSソースコードの取得:973961276

1はじめに

FastDFSは、オープンソースの高性能分散ファイルシステム(DFS)です。その主な機能には、ファイルストレージ、ファイル同期、ファイルアクセス、および大容量と負荷分散が含まれます。主に大容量データストレージの問題を解決します。特に、キャリアとして中小規模のファイル(推奨範囲:4KB <file_size <500MB)を使用するオンラインサービスに適しています。

FastDFSシステムには、トラッカーサーバー、ストレージサーバー、クライアントの3つの役割があります。

  トラッカーサーバー:追跡サーバー。主にスケジューリング作業を行い、バランスの取れた役割を果たします。すべてのストレージサーバーとグループの管理を担当し、各ストレージは起動後にトラッカーに接続し、独自のグループやその他の情報を通知し、定期的なハートビートを維持します。

  ストレージサーバー:主に容量とバックアップサービスを提供するストレージサーバー。グループを1つのユニットとして、各グループに複数のストレージサーバーを配置でき、データは相互にバックアップされます。

  クライアント:クライアント、データをアップロードおよびダウンロードするサーバー、つまり、独自のプロジェクトが展開されているサーバー。

 

2.FastDFSストレージ戦略

大容量をサポートするために、ストレージノード(サーバー)はボリューム(またはグループ)組織を採用します。ストレージシステムは1つ以上のボリュームで構成されています。ボリューム間のファイルは互いに独立しています。すべてのボリュームのファイル容量は、ストレージシステム全体のファイル容量です。ボリュームは、1つ以上のストレージサーバーで構成できます。ボリュームの下のストレージサーバー内のファイルは同じです。ボリューム内の複数のストレージサーバーは、冗長バックアップと負荷分散の役割を果たします。

サーバーがボリュームに追加されると、システムは既存のファイルの同期を自動的に完了します。同期が完了すると、システムは新しく追加されたサーバーを自動的に切り替えてオンラインサービスを提供します。ストレージスペースが不足している場合、または不足しそうな場合は、ボリュームを動的に追加できます。1つ以上のサーバーを追加し、それらを新しいボリュームとして構成するだけで、ストレージシステムの容量が拡張されます。

3.FastDFSのアップロードプロセス

FastDFSは、アップロード、ダウンロード、追加、削除などの基本的なファイルアクセスインターフェイスをユーザーに提供します。これらは、クライアントライブラリの形式でユーザーに提供されます。

Storage Serverは、独自のストレージ情報を定期的にTrackerServerに送信します。トラッカーサーバークラスターに複数のトラッカーサーバーがある場合、各トラッカー間の関係は等しいため、クライアントはアップロード時に任意のトラッカーを選択できます。

トラッカーは、クライアントからファイルのアップロード要求を受信すると、ファイルのファイルを保存できるグループを割り当てます。グループを選択すると、グループ内のどのストレージサーバーをクライアントに割り当てるかが決定されます。ストレージサーバーが割り当てられた後、クライアントはファイル書き込み要求をストレージに送信し、ストレージはファイルのデータストレージディレクトリを割り当てます。次に、ファイルIDをファイルに割り当て、最後に上記の情報に基づいてファイル名ストレージファイルを生成します。

4.FastDFSファイルの同期

ファイルを書き込むとき、クライアントはファイルをグループ内のストレージサーバーに書き込みます。これは、ファイルが正常に書き込まれたことを意味します。ストレージサーバーがファイルの書き込みを終了すると、バックグラウンドスレッドはファイルを同じ内の他のストレージサーバーに同期します。グループ。

各ストレージがファイルを書き込むと、同時にbinlogが書き込まれます。binlogにはファイルデータは含まれませんが、ファイル名などのメタ情報のみが含まれます。このbinlogはバックグラウンド同期に使用され、ストレージは記録します。グループ内の他のストレージとの同期の進行状況再起動後、最後の進行状況との同期を続行できます。進行状況はタイムスタンプに記録されるため、クラスター内のすべてのサーバーのクロックが同期されていることを確認することをお勧めします。 。

ストレージの同期の進行状況は、メタデータの一部としてトラッカーに報告され、trackeは、ストレージの読み取りを選択する際の参照として同期の進行状況を使用します。

5.FastDFSのファイルダウンロード

クライアントのアップロードファイルが成功すると、ストレージによって生成されたファイル名が取得され、クライアントはこのファイル名に基づいてファイルにアクセスできます。

アップロードファイルと同様に、クライアントはファイルをダウンロードするときに任意のトラッカーサーバーを選択できます。トラッカーはダウンロード要求をトラッカーに送信し、ファイル名情報を取得する必要があります。Trackeは、ファイル名からファイルのグループ、サイズ、および作成時間を解析し、読み取りを提供する要求のストレージを選択します。リクエスト。

2、FastDFS環境をインストールします

0.まえがき

動作環境:CentOS7 X64、以下の操作はすべてスタンドアロン環境で行われます。

すべてのインストールパッケージを/ softpackages /にダウンロードし、現在のディレクトリに解凍しました。

最初に1つのことを行い、ホストを変更し、ファイルサーバーのIPをドメイン名(スタンドアロンTrackerServer環境)にマップします。これは、多くの構成で後でサーバーアドレスを構成する必要があり、IPが変更された場合にのみ変更する必要があるためです。ホスト。

# vim /etc/hosts
增加如下一行,这是我的IP 192.168.51.128 file.ljzsg.com

如果要本机访问虚拟机,在C:\Windows\System32\drivers\etc\hosts中同样增加一行

1.libfastcommonをダウンロードしてインストールします

Libfastcommonは、FastDFSおよびFastDHTから抽出されたパブリックC関数ライブラリです。基本環境をインストールできます。

①libfastcommonをダウンロード

# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

②解凍

# tar -zxvf V1.0.7.tar.gz
# cd libfastcommon-1.0.7

③コンパイルしてインストールする

# ./make.sh
# ./make.sh install

④libfastcommon.soは/usr/lib64/libfastcommon.soにインストールされますが、FastDFSメインプログラムで設定するlibディレクトリは/ usr / local / libであるため、ソフトリンクを作成する必要があります。

# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so 

2.FastDFSをダウンロードしてインストールします

①FastDFSをダウンロードする

# wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz

②解凍

# tar -zxvf V5.05.tar.gz
# cd fastdfs-5.05

③コンパイルしてインストールする

# ./make.sh
# ./make.sh install

④デフォルトのインストール方法インストール後、対応するファイルとディレクトリ
  A、サービススクリプト:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker

  B.構成ファイル(これらの3つは、作成者によって提供されたサンプル構成ファイルです):

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

  C.コマンドツールは/ usr / bin /ディレクトリにあります。

fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh 

⑤FastDFSサービススクリプトで設定するbinディレクトリは/ usr / local / binですが、実際のコマンドは/ usr / bin /の下にインストールされます。

  二つの方法:

  》まず、FastDFSサービススクリプトの対応するコマンドパスを変更します。つまり、2つのスクリプト/etc/init.d/fdfs_storagedと/etc/init.d/fdfs_trackerの/ usr / local / binを/ usr / binに変更します。 。

     #vim fdfs_trackerd
    統合変更に検索および置換コマンドを使用:%s + / usr / local / bin + / usr / bin
    #vim fdfs_storaged
    統合変更に検索および置換コマンドを使用:%s + / usr / local / bin + / usr / bin

    

  「2つ目は、/ usr / binから/ usr / local / binへのソフトリンクを確立することです。私はこの方法を使用します。  

# ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
# ln -s /usr/bin/fdfs_storaged   /usr/local/bin
# ln -s /usr/bin/stop.sh         /usr/local/bin
# ln -s /usr/bin/restart.sh      /usr/local/bin

3. FastDFSトラッカー(トラッカー)を構成します

構成ファイルの詳細な説明を参照してください:FastDFS構成ファイルの詳細

①/ etc / fdfsと入力し、FastDFSトラッカーのサンプル構成ファイルtracker.conf.sampleをコピーして、名前をtracker.confに変更します。

# cd /etc/fdfs
# cp tracker.conf.sample tracker.conf
# vim tracker.conf

②tracker.confを編集します。赤でマークされているものは変更する必要があり、その他のデフォルトは問題ありません。

# 配置文件是否不生效,false 为生效
disabled=false

# 提供服务的端口
port=22122

# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/ljzsg/fastdfs/tracker

# HTTP 服务端口
http.server_port=80

③base_pathに対応するディレクトリであるトラッカーベースデータディレクトリを作成します

# mkdir -p /ljzsg/fastdfs/tracker

④ファイアウォールのトラッキングポートを開く(デフォルトは22122)

# vim /etc/sysconfig/iptables

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

重启防火墙:
# service iptables restart

⑤スタートトラッカー

初めて正常に起動すると、データとログの2つのディレクトリが/ ljzsg / fdfsdfs / tracker /(構成されたbase_path)の下に作成されます。

可以用这种方式启动
# /etc/init.d/fdfs_trackerd start
也可以用这种方式启动,前提是上面创建了软链接,后面都用这种方式
# service fdfs_trackerd start

查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功。
# netstat -unltp|grep fdfs

Trackerコマンドを閉じます。

# service fdfs_trackerd stop

⑥トラッカーを起動するように設定します

# chkconfig fdfs_trackerd on

或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start 

✓トラッカーサーバーのディレクトリとファイル構造

トラッカーサービスが正常に開始されると、base_pathの下にデータとログの2つのディレクトリが作成されます。ディレクトリ構造は次のとおりです。

${base_path}
  |__data
  |   |__storage_groups.dat:存储分组信息
  |   |__storage_servers.dat:存储服务器列表
  |__logs
  |   |__trackerd.log: tracker server 日志文件 

4. FastDFSストレージ(ストレージ)を構成します

①/ etc / fdfsディレクトリに入り、FastDFSストレージサンプル設定ファイルstorage.conf.sampleをコピーして、名前をstorage.confに変更します。

# cd /etc/fdfs
# cp storage.conf.sample storage.conf
# vim storage.conf

②storage.confを編集する

赤でマークされているものは変更する必要があり、他のデフォルトは問題ありません。

# 配置文件是否不生效,false 为生效
disabled=false 

# 指定此 storage server 所在 组(卷)
group_name=group1

# storage server 服务端口
port=23000

# 心跳间隔时间,单位为秒 (这里是指主动向 tracker server 发送心跳)
heart_beat_interval=30

# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/ljzsg/fastdfs/storage

# 存放文件时 storage server 支持多个路径。这里配置存放文件的基路径数目,通常只配一个目录。
store_path_count=1


# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/ljzsg/fastdfs/file

# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256

# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server=file.ljzsg.com:22122

# 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。
sync_start_time=00:00
sync_end_time=23:59
# 访问端口
http.server_port=80

③base_pathディレクトリに対応するストレージベースデータディレクトリを作成します

# mkdir -p /ljzsg/fastdfs/storage

# 这是配置的store_path0路径
# mkdir -p /ljzsg/fastdfs/file

④ファイアウォールのストレージポートを開きます(デフォルトは23000)

⑤保管開始

ストレージを開始する前に、トラッカーが開始されていることを確認してください。最初の起動が成功すると、データとログの2つのディレクトリが/ ljzsg / fastdfs / storageディレクトリの下に作成されます。

可以用这种方式启动
# /etc/init.d/fdfs_storaged start

也可以用这种方式,后面都用这种
# service fdfs_storaged start

ストレージが正常に開始された場合でも、ストレージが正常に開始され、ポート23000が監視されているかどうかを確認します。

# netstat -unltp|grep fdfs

ストレージコマンドを閉じます。

# service fdfs_storaged stop

ストレージとトラッカーが通信しているかどうかを確認します。

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

⑥ストレージを起動するように設定します

# chkconfig fdfs_storaged on
或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_storaged start

✓ストレージディレクトリ

トラッカーと同様に、ストレージが正常に開始されると、データとログのディレクトリがbase_pathの下に作成され、ストレージサーバーの情報が記録されます。

store_path0ディレクトリーの下に、N * Nサブディレクトリーが作成されます。

5.ファイルアップロードテスト

①トラッカーサーバーのクライアント設定ファイルを変更する 

# cd /etc/fdfs
# cp client.conf.sample client.conf
# vim client.conf

次の構成、その他のデフォルトを変更します。

# Client 的数据和日志目录
base_path=/ljzsg/fastdfs/client

# Tracker端口
tracker_server=file.ljzsg.com:22122

②アップロードテスト

 Linux内で次のコマンドを実行してnamei.jpeg画像をアップロードします

# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf namei.jpeg

正常にアップロードした後、ファイルID番号を返します:group1 / M00 / 00/00 / wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg

返されるファイルIDは、グループ、ストレージディレクトリ、2レベルのサブディレクトリ、fileid、およびファイルサフィックス(クライアントによって指定され、主にファイルタイプを区別するために使用されます)によってスプライスされます。

 

3、Nginxをインストールします

上記のファイルは正常にアップロードされましたが、ダウンロードできませんでした。したがって、ファイルへのHttpアクセスをサポートするサーバーとしてNginxをインストールします。同時に、後でFastDFSをインストールするためのNginxモジュールにもNginx環境が必要です。

Nginxは、ファイルにアクセスするためにStorageServerが配置されているサーバーにのみインストールする必要があります。ここではスタンドアロンマシンであるため、TrackerServerとStorageServerは同じサーバー上にあります。

1.nginxのインストールに必要な環境  

①gccのインストール

# yum install gcc-c++

②PCREPcre-develのインストール

# yum install -y pcre pcre-devel

③zlibのインストール

# yum install -y zlib zlib-devel

④OpenSSLのインストール

# yum install -y openssl openssl-devel

2.Nginxをインストールします

①nginxをダウンロード

# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz

②解凍

# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1

③デフォルト設定を使用する

# ./configure

④コンパイルしてインストールする

# make
# make install

⑤nginxを起動します

# cd /usr/local/nginx/sbin/
# ./nginx 

其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload

⑥起動を設定する

# vim /etc/rc.local

添加一行:
/usr/local/nginx/sbin/nginx

# 设置执行权限
# chmod 755 rc.local

△nginxのバージョンとモジュールを確認してください

/usr/local/nginx/sbin/nginx -V

⑧ファイアウォールでNginxポートを開きます(デフォルトは80) 

追加後、ポート80を使用してこのマシンにアクセスできます。

# vim /etc/sysconfig/iptables

添加如下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启防火墙:
# service iptables restart

3.ファイルにアクセスします

簡単なテストアクセスファイル

①nginx.confを変更する

# vim /usr/local/nginx/conf/nginx.conf

添加如下行,将 /group1/M00 映射到 /ljzsg/fastdfs/file/data
location /group1/M00 {
    alias /ljzsg/fastdfs/file/data;
}

# 重启nginx
# /usr/local/nginx/sbin/nginx -s reload

②ブラウザアクセスが成功する前にアップロードされた画像。

http://file.ljzsg.com/group1/M00/00/00/wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg

4、FastDFSはNginxモジュールを構成します

1.Nginxモジュールをインストールして構成します

①Fastdfs-nginx-モジュールモジュールの説明

  FastDFSはトラッカーサーバーを使用してファイルをストレージサーバーに保存しますが、ファイルを同じグループ内のストレージサーバー間でコピーする必要があるため、同期の遅延が発生します。

  トラッカーサーバーがファイルを192.168.51.128にアップロードしたとすると、アップロードが成功した後、ファイルIDがクライアントに返されます。

  このとき、FastDFSストレージクラスターメカニズムは、ファイルを同じストレージグループ192.168.51.129に同期します。ファイルがまだコピーされていない場合、クライアントがこのファイルIDを使用して192.168.51.129上のファイルをフェッチすると、ファイルはアクセスできない。間違い。

  fastdfs-nginx-moduleは、ファイルリンクをソースサーバーにリダイレクトしてファイルをフェッチし、クライアントのコピー遅延によって引き起こされるファイルアクセス不能エラーを回避できます。

②fastdfs-nginx-moduleをダウンロードし、解凍します

# 这里为啥这么长一串呢,因为最新版的master与当前nginx有些版本问题。
# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

# 解压
# unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip

# 重命名
# mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1  fastdfs-nginx-module-master

③Nginxを設定する

nginxにモジュールを追加する

# 先停掉nginx服务
# /usr/local/nginx/sbin/nginx -s stop

进入解压包目录
# cd /softpackages/nginx-1.12.1/

# 添加模块
# ./configure --add-module=../fastdfs-nginx-module-master/src

重新编译、安装
# make && make install

 ④Nginxモジュールを見る

# /usr/local/nginx/sbin/nginx -V

以下は、モジュールが正常に追加されたことを示しています

⑤fastdfs-nginx-moduleのソースコードにある設定ファイルを/ etc / fdfsディレクトリにコピーし、変更する

# cd /softpackages/fastdfs-nginx-module-master/src

# cp mod_fastdfs.conf /etc/fdfs/

次の構成を変更します。その他のデフォルト

# 连接超时时间
connect_timeout=10

# Tracker Server
tracker_server=file.ljzsg.com:22122

# StorageServer 默认端口
storage_server_port=23000

# 如果文件ID的uri中包含/group**,则要设置为true
url_have_group_name = true

# Storage 配置的store_path0路径,必须和storage.conf中的一致
store_path0=/ljzsg/fastdfs/file

⑥FastDFSの設定ファイルを/ etc / fdfsディレクトリにコピーします

# cd /softpackages/fastdfs-5.05/conf/

# cp anti-steal.jpg http.conf mime.types /etc/fdfs/

 ∥nginxを設定し、nginx.confを変更します

# vim /usr/local/nginx/conf/nginx.conf

構成の変更、その他のデフォルト

ポート80の下にfastdfs-nginxモジュールを追加します

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

注意:

  listen 80ポートの値は、/ etc / fdfs /storage.confのhttp.server_port = 80(以前は80に変更されていました)に対応している必要があります。他のポートに変更する場合は、ファイアウォールでポートを統合して開く必要があります。

  場所の構成。複数のグループがある場合は、場所〜/ group([0-9])/ M00を構成します。そうでない場合は、グループを構成する必要はありません。

⑧/ ljzsg / fastdfs / fileファイルストレージディレクトリにソフトリンクを作成し、データが実際に保存されているディレクトリにリンクします。この手順は省略できます。

# ln -s /ljzsg/fastdfs/file/data/ /ljzsg/fastdfs/file/data/M00 

⑨nginxを起動します

# /usr/local/nginx/sbin/nginx

設定が成功した場合でも、印刷場所は次のとおりです。

⑩アドレスバーにアクセスします。

ファイルをダウンロードできても、インストールは成功します。3番目のポイントでnginxルーティングアクセスを直接使用することとの違いは、fastdfs-nginx-moduleモジュールが、ファイルリンクをソースサーバーにリダイレクトしてファイルをフェッチするようにここで構成されていることです。

http://file.ljzsg.com/group1/M00/00/00/wKgz6lnduTeAMdrcAAEoRmXZPp870.jpeg

最終的な展開構造図(パイレーツ):以下の構造で環境を構築できます。

5、アクセス制御

以前は、nginxを使用してファイルへのhttpアクセスをサポートしていましたが、誰でもこのファイルサーバーに直接アクセスできるため、権限制御も行ってください。

FastDFSのアクセス許可制御は、サーバーでトークン検証を有効にすることです。クライアントは、ファイル名、現在のUNIXタイムスタンプ、および秘密鍵に従ってトークンを取得します。ファイルには、アドレスにtokenパラメーターを指定してhttpからアクセスできます。

①サーバーがトークン検証を開きます

修改http.conf
# vim /etc/fdfs/http.conf

设置为true表示开启token验证
http.anti_steal.check_token=true设置token失效的时间单位为秒(s)http.anti_steal.token_ttl=1800
密钥,跟客户端配置文件的fastdfs.http_secret_key保持一致
http.anti_steal.secret_key=FASTDFS1234567890

如果token检查失败,返回的页面
http.anti_steal.token_check_fail=/ljzsg/fastdfs/page/403.html

サービスを再起動することを忘れないでください。

②クライアントを設定する

クライアントは次の2つのパラメータを設定するだけでよく、両側のキーは同じままです。

# token 防盗链功能
fastdfs.http_anti_steal_token=true
# 密钥
fastdfs.http_secret_key=FASTDFS1234567890

③クライアントがトークンを生成する

ファイルにアクセスするには、生成されたトークンとUNIXタイムスタンプを持参する必要があるため、返されるトークンはトークンとタイムスタンプのスプライシングです。

その後、トークンをアドレスに接続すると、次の場所にアクセスできます:file.ljzsg.com/group1/M00/00/00/wKgzgFnkaXqAIfXyAAEoRmXZPp878.jpeg?token = 078d370098b03e9020b82c829c205e1f&ts = 1508141521

/**
     * 获取访问服务器的token,拼接到地址后面
     *
     * @param filepath 文件路径 group1/M00/00/00/wKgzgFnkTPyAIAUGAAEoRmXZPp876.jpeg
     * @param httpSecretKey 密钥
     * @return 返回token,如: token=078d370098b03e9020b82c829c205e1f&ts=1508141521
     */
    public static String getToken(String filepath, String httpSecretKey){
        // unix seconds
        int ts = (int) Instant.now().getEpochSecond();
        // token
        String token = "null";
        try {
            token = ProtoCommon.getToken(getFilename(filepath), ts, httpSecretKey);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        }

        StringBuilder sb = new StringBuilder();
        sb.append("token=").append(token);
        sb.append("&ts=").append(ts);

        return sb.toString();
    }

④注意が必要な事項

生成されたトークンの検証に失敗した場合は、次の2つのチェックを実行してください
  。A。トークン生成関数(ProtoCommon.getToken)が呼び出され、渡されたファイルIDにグループ名が含まれていないことを確認します。送信されるファイルIDの形式は次のとおりです。M00/ 00/00 / wKgzgFnkTPyAIAUGAAEoRmXZPp876.jpeg

  B.サーバー時間が基本的に同じであることを確認します。サーバー時間は、分レベルではなく、大きく異なることはできないことに注意してください。

⑤比較すると、システムファイルのプライバシーが高い場合、httpにアクセスするようにNginxを構成する代わりに、fastdfs-clientが提供するAPIを介して直接アクセスできることがわかります。Nginxを構成する主な目的は、サーバーのファイル(写真など)にすばやくアクセスすることです。権限の確認が必要な場合、クライアントはトークンを生成する必要がありますが、実際には意味がありません。

重要なのは、ここでは、FastDFSが一部のリソースにトークン検証を追加し、それらを部分的に開く方法が見つかりませんでした。ご存知の方はメッセージを残してください。

OK、上記はFastDFSを使用してファイルシステムを構築し、単一のマシンでアップロードおよびダウンロードするプロセス全体です。

おすすめ

転載: blog.csdn.net/linuxguitu/article/details/113247821