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 キャンバスは角丸画像を実現します

推薦する

HTML のテキストエリア タグ

<textarea></textarea> は、複数行を入力できるテキスト ...

Linux で libudev を使用して USB デバイスの VID と PID を取得する方法

この記事では、libudev ライブラリを使用して hidraw デバイスにアクセスします。 lib...

Linux の EXT シリーズファイルシステムフォーマットの詳細な説明

Linux ファイルシステム一般的なハードディスクは上図のとおりです。各ディスクは複数のトラックに分...

WINDOWS での MYSQL のインストールに関する詳細なチュートリアル

1. インストールパッケージをダウンロードする- お使いのコンピュータシステムに応じて適切なバージョ...

Nginx 書き換えジャンプの適用シナリオの詳細な説明

アプリケーションシナリオ1: ドメイン名ベースのリダイレクト会社の古いドメイン名は www.accp...

MYSQL スロークエリとログの例の説明

1. はじめにスロークエリログを有効にすると、MySQL は指定された時間を超えるクエリステートメン...

Vueでドラッグ可能なコンポーネントを実装する方法

この記事では、Vueでドラッグ可能なコンポーネントとドラッグ可能なコンポーネントを実装する方法を参考...

Docker で Selenium グリッド分散環境を構築する実用的な方法

最近、Zoom ビデオ会議をテストし、100 人が同時に会議に参加することをシミュレートする必要があ...

VMware Workstation Pro は Win10 ピュア バージョンのオペレーティング システムをインストールします

この記事では、VMware Workstation Pro で Win10 オペレーティング システ...

Javascript配列の重複排除のいくつかの方法の詳細な説明

目次アレイ重複排除1 2層forループ(バブルソートの2層ループ記述に類似) 2 ループとインデック...

VUE を使用して Ali Iconfont ライブラリをオンラインで呼び出す方法

序文何年も前、私はサーバー側の初心者でしたが、業界の競争が激しくなるにつれて、フロントエンドの初心者...

CSSは、閉じることができるマスクレイヤーを備えたポップアップウィンドウ効果を実装します。

実際の開発ではポップアップウィンドウがよく使われます。CSS3を勉強していたときに、閉じることができ...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

CSS で適応型ディバイダーを巧みに実装する N 通りの方法

分割線はウェブページでよく使われるデザインです。例えば、Zhihuのその他の回答をご覧ください。 こ...

Mysql 5.6ではユーザー名とパスワードを変更するメソッドが追加されました

まずMySQLにログインする シェル> mysql --user=root mysqlパスワー...