Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

Centos7 構成 fastdfs および nginx 分散ファイル ストレージ システムの実装プロセス分析

1. libfastcommon-1.0.43 をインストールします。インストール パッケージは https://github.com/happyfish100/libfastcommon/releases からダウンロードできます。

[root@localhost ダウンロード]# tar -zxvf libfastcommon-1.0.43.tar.gz

# 解凍後、コンパイルしてインストールするディレクトリに入ります
[root@localhost libfastcommon-1.0.43]#cd libfastcommon-1.0.43
[root@localhost libfastcommon-1.0.43]#make
[root@localhost libfastcommon-1.0.43]#インストール

注: libfastcommon がインストールされると、libfastcommon.so ライブラリ ファイルが /usr/lib64 ディレクトリに生成されます。FastDFS プログラムは usr/lib ディレクトリを参照するため、/usr/lib64 のライブラリ ファイルを /usr/lib にコピーする必要があります。

cp /usr/lib64/libfastcommon.so /usr/lib

2. fastdfs をインストールします。インストール パッケージは https://github.com/happyfish100/fastdfs/releases からダウンロードできます。

# 現在のディレクトリに解凍する
tar -zxvf fastdfs-6.06.tar.gz

# コンパイルしてインストールするディレクトリを入力してください
作成する
make.sh インストール

インストールが成功したら、/confの下のファイルを/etc/fdfsにコピーします。

[root@localhost conf]# ll
合計 92
-rw-rw-r--。1 ルート ルート 23981 12月 31 07:36 anti-steal.jpg
-rw-rw-r--. 1 ルート ルート 1909 12月 31 07:36 client.conf
-rw-rw-r--. 1 ルート ルート 965 12月 31日 07:36 http.conf
-rw-rw-r--. 1 ルート ルート 31172 12月31日 07:36 mime.types
-rw-rw-r--. 1 ルート ルート 10246 12月31日 07:36 storage.conf
-rw-rw-r--. 1 ルート ルート 620 12月31日 07:36 storage_ids.conf
-rw-rw-r--. 1 ルート ルート 9138 12月31日 07:36 tracker.conf
[root@localhost conf]# cd ..
[root@localhost fastdfs-6.06]# cp /conf/* /etc/fdfs
[root@localhost fastdfs-6.06]# ll /etc/fdfs
合計 128
-rw-r--r--。1 ルート ルート 23981 6月 21 02:16 anti-steal.jpg
-rw-r--r--。1 ルート ルート 1904 6月 21 02:24 client.conf
-rw-r--r--. 1 ルート ルート 1909 6月 21 02:15 client.conf.sample
-rw-r--r--。1 ルート ルート 965 6月 21 02:54 http.conf
-rw-r--r--。1 ルート ルート 31172 6月 21 02:54 mime.types
-rw-r--r--。1 ルート ルート 3738 6月 21 02:41 mod_fastdfs.conf
-rw-r--r--。1 ルート ルート 10238 6月21日 02:23 storage.conf
-rw-r--r--。1 ルート ルート 10246 6月21日 02:15 storage.conf.sample
-rw-r--r--。1 ルート ルート 620 6月 21 02:16 storage_ids.conf
-rw-r--r--。1 ルート ルート 620 6月 21 02:15 storage_ids.conf.sample
-rw-r--r--。1 ルート ルート 9129 6月 21 02:18 tracker.conf
-rw-r--r--。1 ルート ルート 9138 6月 21 02:15 tracker.conf.sample
[root@localhost fastdfs-6.06]#

3. トラッカーを設定して起動する

# /etc/fdfs ディレクトリに入る cd /etc/fdfs

# 新しいトラッカー設定ファイルをコピーします cp tracker.conf.sample tracker.conf

#tracker.conf を変更する; vim tracker.conf
# /home/fastdfsはトラッカーデータとログを保存するために使用されます
base_path=/home/yuqing/fastdfs は次のように変更されます: base_path=/home/fastdfs
http.server_port は次のように変更されます: 80

# トラッカーを起動する
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf 再起動

4. ストレージの設定と起動

# /etc/fdfs ディレクトリに入る cd /etc/fdfs

# 新しいトラッカー設定ファイルをコピーします cp storage.conf.sample storage.conf

# storage.conf を変更する; vim storage.conf
group_name=group1 #グループ名 base_path=/home/yuqing/fastdfs を次のように設定します: base_path=/home/fastdfs

#ストアファイルの場所 (store_path)
store_path0=/home/yuqing/fastdfs は store_path0=/home/fdfs_storage に変更されます 
# マウントされたディスクが複数ある場合は、次のように複数の store_path を定義します。#store_path1=.....
#ストアパス2=......

#トラッカーサーバーの設定: IP
トラッカーサーバー=192.168.172.20:22122
# トラッカーが複数ある場合は、複数のトラッカーを設定します
#トラッカーサーバー=192.168.101.4:22122

#http ポートを設定し、デフォルト ポート http.server_port=8888 を使用します

#ストレージを開始するには、次のコマンドを実行します。
/usr/bin/fdfs_storaged /etc/fdfs/storage.confを再起動

#起動が完了したら、/home/fdfs_storage/dataディレクトリに入り、ディレクトリは次のように表示されます。[root@localhost home]# cd fdfs_storage/
[root@localhost fdfs_storage]# ls
データ
[root@localhost fdfs_storage]# cd data/
[root@localhost データ]# ls
00 0A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0 AA B4 BE C8 D2 DC E6 F0 FA
01 0B 15 1F 29 33 3D 47 51 5B 65 6F 79 83 8D 97 A1 AB B5 BF C9 D3 DD E7 F1 FB
02 0C 16 20 2A 34 3E 48 52 5C 66 70 7A 84 8E 98 A2 AC B6 C0 CA D4 DE E8 F2 FC
03 0D 17 21 2B 35 3F 49 53 5D 67 71 7B 85 8F 99 A3 AD B7 C1 CB D5 DF E9 F3 FD
04 0E 18 22 2C 36 40 4A 54 5E 68 72 7C 86 90 9A A4 AE B8 C2 CC D6 E0 EA F4 FE
05 0F 19 23 2D 37 41 4B 55 5F 69 73 7D 87 91 9B A5 AF B9 C3 CD D7 E1 EB F5 FF
06 10 1A 24 2E 38 42 4C 56 60 6A 74 7E 88 92 9C A6 B0 BA C4 CE D8 E2 EC F6
07 11 1B 25 2F 39 43 4D 57 61 6B 75 7F 89 93 9D A7 B1 BB C5 CF D9 E3 ED F7
08 12 1C 26 30 3A 44 4E 58 62 6C 76 80 8A 94 9E A8 B2 BC C6 D0 DA E4 EE F8
09 13 1D 27 31 3B 45 4F 59 63 6D 77 81 8B 95 9F A9 B3 BD C7 D1 DB E5 EF F9
[root@localhost データ]#

5. fastdfsの組み込みツールを使用してファイルのアップロードをテストする

# ディレクトリを /etc/fdfs/ に切り替えます cd /etc/fdfs

# 新しいクライアント設定ファイルをコピーします cp client.conf.sample client.conf

# client.conf を変更する; vim client.conf
ベースパス = /home/fastdfs
トラッカーサーバー = 192.168.52.133:22122
#トラッカーサーバー = 192.168.0.197:22122

#ファイルのアップロードをテストするには、次のように実行します。
/usr/bin/fdfs_test /etc/fdfs/client.conf に wyc01.jpg をアップロードします

#結果:
[youth@localhost 画像]$ /usr/bin/fdfs_test /etc/fdfs/client.conf アップロード wyc01.jpg 
これはFastDFSクライアントテストプログラムv6.06です

著作権 (C) 2008、Happy Fish / YuQing

FastDFSはGNU General Public Licenseの条件に従ってのみ複製できます。
パブリック ライセンス V3。FastDFS ソース キットに含まれています。
FastDFS ホームページ http://www.fastken.com/ をご覧ください。 
詳細についてはこちらをご覧ください。

[2020-06-21 03:54:35] デバッグ - base_path=/home/fastdfs、connect_timeout=5、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、ストレージ サーバー ID 数: 0

tracker_query_storage_store_list_without_group: 
 サーバー 1. グループ名=、IP アドレス=192.168.52.133、ポート=23000

グループ名=グループ1、IPアドレス=192.168.52.133、ポート=23000
ファイル名によるストレージアップロード
グループ名=group1、リモートファイル名=M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg
送信元 IP アドレス: 192.168.52.133
ファイルのタイムスタンプ=2020-06-21 03:54:36
ファイルサイズ=17215
ファイル crc32=2857771105
サンプルファイル URL: http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg
ストレージアップロードスレーブファイル名
グループ名=group1、リモートファイル名=M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814_big.jpg
送信元 IP アドレス: 192.168.52.133
ファイルのタイムスタンプ=2020-06-21 03:54:36
ファイルサイズ=17215
ファイル crc32=2857771105
サンプルファイル URL: http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814_big.jpg
[youth@localhost 写真]$

注: http://192.168.52.133/group1/M00/00/00/wKg0hV7uaXyALZfuAABDP6pWIGE814.jpg は先ほどアップロードした画像のリンクですが、現在 nginx が統合されていないため、http 経由ではアクセスできません。

6. Fastdfsとnginxの統合

①fastdfs-nginx-moduleをインストールします。インストールパッケージはhttps://github.com/happyfish100/fastdfs-nginx-module/releasesからダウンロードできます。

#tar -zxvf fastdfs-nginx-module_v1.16.tar.gz を解凍します

# conf 設定を変更するディレクトリに移動します cd /usr/local/fastdfs-nginx-module/src/

vim の設定

 HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
 NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
 # ここだけを変更し、local CORE_INCS="$CORE_INCS /usr/include" を削除します
 CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
 CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

②fastdfs-nginx-module/src配下のmod_fastdfs.confを/etc/fdfs/にコピーする

mod_fastdfs.confを/etc/fdfs/にコピーします。

③ /etc/fdfs/mod_fastdfs.confの内容を変更します。vi /etc/fdfs/mod_fastdfs.conf

ベースパス=/home/fastdfs
トラッカーサーバー=192.168.172.20:22122
#tracker_server=192.168.172.20:22122 #(複数の行を持つ複数のトラッカー)
url_have_group_name=true #URLにグループ名が含まれる
store_path0=/home/fdfs_storage #ファイル保存パスを指定します(上記で設定した保存パス)

7. nginxをインストールする

# nginx の公式サイトにインストールパッケージがあり、直接ダウンロードできます # tar -zxvf nginx-1.8.0.tar.gz を解凍します

# ディレクトリに入りコマンドを設定します # --prefix は nginx のインストールパスです # --add-module は fastdfs-nginx-module を解凍した後のファイルパスです./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/usr/local/fastdfs-nginx-module/src# コンパイルしてインストールします。make && make install# nginx-1.19.0/conf 構成フォルダ (解凍された nginx) 内の 2 つのファイルを /etc/fdfs にコピーします。
cp http.conf mime.types /etc/fdfs/

注意: 一時ファイルディレクトリは、上記では /var/temp/nginx として指定されています。/var の下に temp および nginx ディレクトリを作成する必要があります。pid-path を指定したので、/var/run フォルダに nginx を作成し、nginx フォルダに nginx.pid を作成する必要があります。そうしないと、nginx を起動したときに、次のエラーが発生します: nginx: [emerg] open() "/var/run/nginx/nginx.pid" が失敗しました (2: そのようなファイルまたはディレクトリはありません)。指定しないことをお勧めします。この落とし穴は深すぎます。

8. nginx設定ファイルを変更する

サーバー{
  聞く 80;
  #サーバー名 ローカルホスト;
  サーバー名 192.168.52.133;

  #文字セット koi8-r;

  #access_log ログ/host.access.log メイン;
 
  場所 ~/グループ([1~9])/M00/{
   ルート /home/fdsf_storage/data;
   ngx_fastdfs_モジュール;
  }

  位置 / {
   ルートhtml;
   インデックス index.html index.htm;
  }

9. nginx を起動します。nginx はデフォルトでポート 80 を使用するため、ポート 80 が使用されていないことを確認してください。使用中の場合は、ポートを強制終了します。ファイアウォールで外部デバイスがサーバーにアクセスできるように設定されていることを確認します。

nginx をローカルで使用する

[root@localhost fdfs]# ps -ef | grep nginx
ルート 7466 1 0 03:12 ? 00:00:00 nginx: マスタープロセス nginx
誰も 7590 7466 0 03:21 ? 00:00:00 nginx: ワーカープロセス
ルート 8514 2806 0 04:17 pts/0 00:00:00 grep --color=auto nginx
[root@localhost fdfs]#

10. 外部デバイスを介して fastdfs ファイルシステムイメージにアクセスする

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Androidのファイル保存の詳細な説明
  • ファイルストレージ機能を実装するAndroid開発
  • Django ファイルストレージカスタムストレージシステム分析
  • Django のファイル保存用デフォルトストレージシステムの分析
  • Android I/0 ストリーム操作ファイル(ファイルストレージ)

<<:  一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

>>:  js キャンバスは角丸画像を実現します

推薦する

サブセットかどうかを判断するためのMySQLメソッドの手順

目次1. 問題2. 解決策オプション1:オプション2: 1. 問題この話は、エラーと脱落率を照会する...

マウスを動かしたときに画像のズーム効果とゆっくりとした遷移​​効果を実現するCSSのサンプルコード

transform:scale()比例したズームインまたはズームアウトを実現できます。 transi...

Docker で Confluence をデプロイするための完全な手順

Confluence は有料ですが、クラックして使用できます (購入が推奨され、正規版がサポートされ...

変換を使用して純粋な CSS ポップアップ メニューを実装するためのサンプル コード

序文トップメニューを作成する場合、ポップアップのセカンダリメニューを作成する必要があります。 以前の...

階段効果を実現するためのWeChatアプレットカスタムメニューナビゲーション

設計意図ページを開発する際には、ページ上のナビゲーション メニューをクリックしたときにページを対応す...

HTML+CSS をベースにした素敵なフリップログインおよび登録インターフェースを作成します

素敵なフリップログインと登録インターフェースを作成する序文最近、ネットワーク ディスクを構築しようと...

MySQL データを誤って削除した場合の簡単な解決策 (MySQL フラッシュバック ツール)

概要Binlog2sql は、Python で開発されたオープンソースの MySQL Binlog ...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

Docker Swarmの概念と使用法の詳細な説明

Docker Swarm は、Docker によって開発されたコンテナ クラスター管理サービスです。...

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

HTML チュートリアル: よく使われる HTML タグのコレクション (5)

関連記事:初心者が学ぶ HTML タグ (4)導入された HTML タグは、必ずしも XHTML 仕...

Dockerは終了状態で起動します

docker run後、ステータスは常にExitedになります解決:パラメータを追加: -it do...

ウェブページ作成のテスト問題を全て解けますか?

Web ページのデザインに関する質問です。すべてに答えられるでしょうか? 1. 単一選択の質問 (...

DockerはCMDまたはENTRYPOINTコマンドを使用して複数のサービスを同時に起動します

要件: Celery は Django に導入されています。Django プロジェクトを開始するとき...

要素ツリーコントロールは、ドロップダウンメニューとアイコンを統合します(ツリー+ドロップダウン+入力)

目次要件:実装手順:この記事では主に以下について説明します: カスタムツリーコントロール<el...