前回の記事では、FastDFSのインストールと構成について詳しく説明しました。 FastDFSの基本モジュールがすべてセットアップされ、テストとダウンロードが開始されます。
1.1 クライアントを構成します
同様に、クライアント構成ファイルを変更する必要があります。
[ root@docker-01 00]# vim /etc/fdfs/client.conf
以下のように修正します。
base_path = / usr / yunweimao / fastdfs / fastdfs_tracker#trackerサーバーファイルパス
tracker_server = 172.17.120.50:22122#trackerサーバーのIPアドレスとポート番号
http.tracker_server_port = 6666#トラッカーサーバーのhttpポート番号は、トラッカー設定に対応している必要があります
ftp経由でCentOSに写真をアップロードします。
mac1.png
[ root@docker-01 fastdfs]# ls
fastdfs_storage fastdfs_storage_data fastdfs_tracker mac1.png
1.2 アップロードをシミュレートする
画像の場所を決定したら、uploadimageコマンドを入力します。
[ root @ docker-01 opt]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/yunweimao/fastdfs/mac1.png#これは画像の場所です
成功すると、画像のパスが返されます。
[ root@docker-01 opt]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/yunweimao/fastdfs/mac1.png
group1/M00/00/00/rBF4Ml1rV3uAQqKmABkOCxpvlZg936.png
グループ名:group1
ディスク:M00
ディレクトリ:00/00
ファイル名:rBF4Ml1rV3uAQqKmABkOCxpvlZg936.png
アップロードされた画像は、作成したstorage_dataディレクトリにアップロードされます。チェックアウトできます。
[ root@docker-01 opt]# cd /usr/yunweimao/fastdfs/fastdfs_storage_data/data
[ root@docker-01 data]# ls
00 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0 DD EA F7
01 0 E 1B 28 35 42 4F 5C 69 76 83 90 9D AA B7 C4 D1 DE EB F8
02 0 F 1C 29 36 43 50 5D 6A 77 84 91 9E AB B8 C5 D2 DF EC F9
03 10 1 D 2A 37 44 51 5E 6B 78 85 92 9F AC B9 C6 D3 E0 ED FA
04 11 1 E 2B 38 45 52 5F 6C 79 86 93 A0 AD BA C7 D4 E1 EE FB
05 12 1 F 2C 39 46 53 60 6D 7A 87 94 A1 AE BB C8 D5 E2 EF FC
06 13 20 2 D 3A 47 54 61 6E 7B 88 95 A2 AF BC C9 D6 E3 F0 FD
07 14 21 2 E 3B 48 55 62 6F 7C 89 96 A3 B0 BD CA D7 E4 F1 FE
08 15 22 2 F 3C 49 56 63 70 7D 8A 97 A4 B1 BE CB D8 E5 F2 FF
09 16 23 30 3 D 4A 57 64 71 7E 8B 98 A5 B2 BF CC D9 E6 F3
0 A 17 24 31 3E 4B 58 65 72 7F 8C 99 A6 B3 C0 CD DA E7 F4
0 B 18 25 32 3F 4C 59 66 73 80 8D 9A A7 B4 C1 CE DB E8 F5
0 C 19 26 33 40 4D 5A 67 74 81 8E 9B A8 B5 C2 CF DC E9 F6
[ root@docker-01 data]# cd 00/
[ root@docker-01 00]# ls
00 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D0 DD EA F7
01 0 E 1B 28 35 42 4F 5C 69 76 83 90 9D AA B7 C4 D1 DE EB F8
02 0 F 1C 29 36 43 50 5D 6A 77 84 91 9E AB B8 C5 D2 DF EC F9
03 10 1 D 2A 37 44 51 5E 6B 78 85 92 9F AC B9 C6 D3 E0 ED FA
04 11 1 E 2B 38 45 52 5F 6C 79 86 93 A0 AD BA C7 D4 E1 EE FB
05 12 1 F 2C 39 46 53 60 6D 7A 87 94 A1 AE BB C8 D5 E2 EF FC
06 13 20 2 D 3A 47 54 61 6E 7B 88 95 A2 AF BC C9 D6 E3 F0 FD
07 14 21 2 E 3B 48 55 62 6F 7C 89 96 A3 B0 BD CA D7 E4 F1 FE
08 15 22 2 F 3C 49 56 63 70 7D 8A 97 A4 B1 BE CB D8 E5 F2 FF
09 16 23 30 3 D 4A 57 64 71 7E 8B 98 A5 B2 BF CC D9 E6 F3
0 A 17 24 31 3E 4B 58 65 72 7F 8C 99 A6 B3 C0 CD DA E7 F4
0 B 18 25 32 3F 4C 59 66 73 80 8D 9A A7 B4 C1 CE DB E8 F5
0 C 19 26 33 40 4D 5A 67 74 81 8E 9B A8 B5 C2 CF DC E9 F6
[ root@docker-01 00]# cd 00/
[ root@docker-01 00]# ls
rBF4Ml1rV3uAQqKmABkOCxpvlZg936.png
案の定、戻ってきたばかりの道を通って、私たちはうまく写真を見つけました。
詳細を見てみましょう。実際の[ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)パスによって、マルチレベルのディレクトリが作成されています。
データの下には256のレベル1ディレクトリがあり、各レベルディレクトリの下には256のレベル2サブディレクトリがあり、合計65536のファイルがあります。新しく書き込まれたファイルは、ハッシュモードでサブディレクトリの1つにルーティングされ、ファイルデータは直接送られます。このディレクトリにローカルファイルとして保存されます。
1.3 ファイルへのHTTPアクセス
ブラウザに移動し、httpリクエストを使用して画像にアクセスしてみましょう。
アクセスが不可能であることがわかりました。
httpは写真に直接アクセスできないことがわかりました。どうしてこれなの?
早くも4.05で、埋め込みHTTPサポートが削除されたことが判明しました。
Version 4.05 2012-12-30
client/fdfs_upload_file.c can specify storage ip port and store path index
add connection pool
client load storage ids config
common/ini_file_reader.c does NOT call chdir
keep the mtime of file same
use g_current_time instead of call time function
remove embed HTTP support
1.4 HTTPリクエストがファイルにアクセスできない理由
FastDFSを使用して分散ファイルシステムを展開する場合、FastDFSのクライアントAPIを使用してファイルをアップロード、ダウンロード、および削除します。同時に、HTTPサービスはFastDFSHTTPサーバーを介して提供されます。ただし、FastDFSのHTTPサービスは比較的単純で、[Load Balancing](https://cloud.tencent.com/product/clb?from=10680)などの高性能サービスを提供できないため、FastDFSの開発者であるTaobaoのアーキテクトであるYu Qingから、Nginxで使用されるFastDFSモジュールが提供されました(これもFastDFSのNginxモジュールと呼ぶことができます)。
FastDFSはトラッカーサーバーを使用してストレージサーバーにファイルを保存しますが、同じグループ内のサーバーはファイルをコピーする必要があるため、遅延の問題があります。
トラッカーサーバーがファイルを192.168.235.32にアップロードし、ファイルIDがクライアントに返されたとします。この時点で、バックグラウンドでファイルが192.168.235.32にコピーされます。コピーが完了していない場合、クライアントはこのIDを使用して192.168.235.32でファイルをフェッチします。間違いなくエラーが発生します。
このfastdfs-nginx-moduleは、接続をソースサーバーにリダイレクトしてファイルをフェッチし、レプリケーションの遅延によるクライアントでのエラーを回避できます。
このため、FastDFSをnginxと組み合わせる必要があるため、HTTPの元の直接サポートはキャンセルされます。
2.1 nginxのインストールの準備
nginxをインストールする前に、nginxに必要な依存関係ライブラリをインストールします。
[ root@docker-01 00]# yum -y install pcre pcre-devel
[ root@docker-01 00]# yum -y install zlib zlib-devel
[ root@docker-01 00]# yum -y install openssl openssl-devel
2.2 nginxをインストールし、fastdfs-nginx-moduleを追加します
nginxとfastdfs-nginx-moduleを解凍します。
[ root@docker-01 opt]# wget http://nginx.org/download/nginx-1.13.0.tar.gz
[ root@docker-01 opt]# tar -zxvf nginx-1.13.0.tar.gz
[ root@docker-01 opt]# unzip fastdfs-nginx-module-master.zip
解凍後、nginxディレクトリに移動してnginxをコンパイルおよびインストールし、fastdfs-nginx-moduleを追加します。
[ root@docker-01 opt]# mkdir /usr/yunweimao/nginx
[ root@docker-01 opt]# mv fastdfs-nginx-module-master /usr/yunweimao/nginx/
[ root@docker-01 opt]# cd nginx-1.13.0
[ root@docker-01 nginx-1.13.0]# mkdir /usr/software/nginx
[ root @ docker-01 nginx-1.13.0]#。/ configure --prefix = / usr / software / nginx --add-module = / usr / yunweimao / nginx / fastdfs-nginx-module-master / src / #Unzip戻るfastdfs-nginx-moduleの場所
構成でエラーが報告されない場合は、コンパイルを開始します。
[ root@docker-01 nginx-1.13.0]# make
[ root@docker-01 nginx-1.13.0]# make install
エラーが報告された場合は、バージョンが原因である可能性があります.2番目のブログ投稿で、テストに成功したバージョンのダウンロードを提供しましたが、エラーは報告されませんでした。
nginxのデフォルトディレクトリは/ usr / software / nginxです。インストールが成功したら、次のことを確認してください。
[ root@docker-01 nginx-1.13.0]# cd /usr/software/nginx/
[ root@docker-01 nginx]# ll
合計金額4
drwxr-xr-x。2ルートルート40969月1日14:02conf
drwxr-xr-x。2ルートルート409月1日13:43html
drwxr-xr-x。2ルートルート589月1日14:02ログ
drwxr-xr-x。2ルートルート19September 1 13:43 sbin
2.3 ストレージnginxを構成する
nginx.confを変更します。
[ root@docker-01 nginx]# cd conf/
[ root@docker-01 conf]# ls
fastcgi.conf koi-win scgi_params
fastcgi.conf.default mime.types scgi_params.default
fastcgi_params mime.types.default uwsgi_params
fastcgi_params.default nginx.conf uwsgi_params.default
koi-utf nginx.conf.default win-utf
[ root@docker-01 conf]# vim nginx.conf
リスニングポートlisten9999を変更し、場所を追加します。
server {
listen 9999;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
location ~/group1/M00 {
root /usr/yunweimao/dev/fastdfs/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
location = /50x.html {
root html;
}
}
次に、FastDFSのインストール中に解凍されたディレクトリに入り、http.confとmime.typesを/ etc / fdfsディレクトリにコピーします。
[ root@docker-01 fdfs]# cd /opt/fastdfs-master/conf
[ root@docker-01 conf]# ls
anti-steal.jpg http.conf storage.conf tracker.conf
client.conf mime.types storage_ids.conf
[ root@docker-01 conf]# cp http.conf /etc/fdfs/
[ root@docker-01 conf]# cp mime.types /etc/fdfs/
さらに、fastdfs-nginx-moduleインストールディレクトリのsrcディレクトリにあるmod_fastdfs.confを/ etc / fdfsディレクトリにコピーする必要があります。
[ root@docker-01 conf]# cp /usr/yunweimao/nginx/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
コピーしたmod_fastdfs.confファイルを変更します。
[ root@docker-01 conf]# vim /etc/fdfs/mod_fastdfs.conf
改訂内容は以下のとおりです。
base_path = / usr / yunweimao / fastdfs / fastdfs_storage#ログディレクトリを保存
tracker_server = 172.17.120.50:22122#trackerサーバーのIPアドレスとポート番号
storage_server_port = 23000#ストレージサーバーのポート番号
url_have_group_name = true#ファイルurlにグループ名があるかどうか
store_path0 = / usr / yunweimao / fastdfs / fastdfs_storage_data#ストレージパス
group_count = 3#グループの数を設定します。実際、今回はgroup1のみが使用されます。
ファイルの最後に、グループを設定します
[ group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/yunweimao/fastdfs/fastdfs_storage_data
[ group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/yunweimao/fastdfs/fastdfs_storage_data
[ group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/usr/yunweimao/fastdfs/fastdfs_storage_data
M00からストレージストレージディレクトリへのシンボリックリンクを作成します。
[ root@docker-01 conf]# ln -s /usr/yunweimao/fastdfs/fastdfs_storage_data/ /usr/yunweimao/fastdfs/fastdfs_storage_data/data/M00
nginxを開始します。
[ root@docker-01 conf]# /usr/software/nginx/sbin/nginx
正常な開始:
[ root@docker-01 conf]# /usr/software/nginx/sbin/nginx
ngx_http_fastdfs_set pid=24740
訪問:
172.17.120.50:9999
ウェルカムインターフェイスが表示されたら、ストレージのnginxが正常に構成されています。
2.4 トラッカーnginxを構成する
別のnginxを解凍します。
自分の作業で別のnginx2を作成し、元のnginx-1.13.0.tar.gzを解凍しました。
[ root@docker-01 conf]# cd /usr/yunweimao/
[ root@docker-01 yunweimao]# ls
fastdfs nginx
[ root@docker-01 yunweimao]# mkdir nginx2
[ root@docker-01 yunweimao]# ls
fastdfs nginx nginx2
構成:
[ root@docker-01 nginx2]# mkdir /usr/software/nginx2
[ root@docker-01 nginx2]# tar -xzvf nginx-1.13.0.tar.gz
[ root@docker-01 src]# cd /usr/yunweimao/nginx2/nginx-1.13.0
[ root@docker-01 nginx-1.13.0]# ls
auto CHANGES.ru configure html man src
CHANGES conf contrib LICENSE README
[ root @ docker-01 nginx-1.13.0]#。/ configure --prefix = / usr / software / nginx2 --add-module = / usr / yunweimao / nginx / fastdfs-nginx-module-master / src#解凍後fastdfs-nginx-moduleの場所
コンパイル:
[ root@docker-01 nginx-1.13.0]# make
[ root@docker-01 nginx-1.13.0]# make install
次に、同じことがnginx.confを変更することです。ポート番号を変更する必要はなく、80を使用します。トラッカーのnginxアドレスをアップストリームで指す必要があります。
[ root@docker-01 nginx-1.13.0]# vim /usr/software/nginx2/conf/nginx.conf
upstream fdfs_group1 {
server 127.0.0.1:9999;
}
server {
listen 80;
server_name localhost;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
#}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginxを開始します。
[ root@docker-01 nginx-1.13.0]# /usr/software/nginx2/sbin/nginx
訪問:172.17.120.50
ウェルカムインターフェイスが表示されます。
2.5 ファイアウォールポート設定
それは成功しています、なぜ私はこれについて話す必要がありますか?一部の学生はまだここにアクセスできないため、ファイアウォールが対応するポートを開いていない可能性があります。少し面倒ですが、ファイアウォールをオフにしないことをお勧めします。
開いているポートを表示します。
[ root@docker-01 nginx-1.13.0]# firewall-cmd --zone=public --list-ports
20880 /tcp 80/tcp 2181/tcp 23000/tcp 22122/tcp 9999/tcp
これらのポートは私のCentOSで開いています。
storage:20880
tracker:23000
これらの2つのポートを開く必要があります。次の記事でfastdfs-client-javasについて説明すると、接続障害が発生する可能性があります。
9999 nginxアクセス用にポートと80が用意されています。
ポート番号を開くコマンド:–永続的とは永続的な効果を意味します。追加しないと、再起動後に有効になりません。
[ root @ docker-01 nginx-1.13.0]#firewall-cmd --zone = public --add-port = 23000 / tcp --permanent#アカウント開設ポート番号
CentOS7ファイアウォール関連コマンド:
systemctl enable Firewalld.service#ファイアウォールを開く
systemctl stop Firewalld.service#ファイアウォールを閉じます(商談が開かれたときに引き続き開始されます)
systemctl disable Firewalld.service#ファイアウォールを無効にします(起動後に起動しなくなります)
2.6 HTTPテスト
もう一度アップロードした画像にアクセスしてください。
http://172.17.120.50:9999/group1/M00/00/00/rBF4Ml1rV3uAQqKmABkOCxpvlZg936.png
運用と保守の学習、共有、コミュニケーションに関して、著者はWeChatパブリックアカウント[O&M Cat]を開設しました。興味のある友人はそれをフォローし、参加を歓迎し、運用と保守の知識を一緒に学ぶための独自の小さなサークルを設立できます。
Recommended Posts