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

推薦する

DockerでEurekaを設定する方法

ユーレカ: 1. JDKイメージを構築するEurekaコンテナを起動するjdkフォルダと必要なファイ...

Vue.js アプリケーションのパフォーマンス最適化分析 + ソリューション

目次1. はじめに2. Vue JS のパフォーマンス最適化が必要な理由は何ですか? 3. Vueの...

MySQL 5.6 の「暗黙的な変換」によりインデックスが失敗し、データが不正確になる

背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...

mysql5.7.21.zip インストールチュートリアル

mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...

JavaScript 関数構文の説明

目次1. 通常の機能2. 矢印関数3. データパケットJSON 4. オブジェクト5. 約束6. 非...

Xtrabackup を使用した MySQL バックアップ プロセスの詳細な説明

目次01 背景02 はじめに03 ワークフロー04 いくつかの質問05 ファイルをバックアップする0...

Linux ディレクトリ切り替え実装コード例

ファイルの切り替えは Linux でよく行われる操作です。Linux を初めて学ぶときに最初に触れる...

Vue は携帯電話の認証コードによるログインを実装します

この記事では、携帯電話認証コードログインを実装するためのVueの具体的なコードを参考までに共有します...

Linx awk入門チュートリアルの詳細な説明

Awk はテキスト ファイルを処理するためのアプリケーションであり、ほぼすべての Linux システ...

htmlハイパーリンクaのクリックイベントの後、hrefで指定されたアドレスにジャンプします。

場合によっては、ジャンプを完了するために href の代わりにハイパーリンク <a> を...

JS はランダム点呼システムを実装します

参考までに、JSを使用してランダム点呼システムを実装します。具体的な内容は次のとおりです。毎回の授業...

Webサービスのリモートデバッグとタイムアウト動作原理の分析

Webサービスのリモートデバッグ.NET では、WEBSERVICE のリモート デバッグ機能はデフ...

よくある MySQL テーブル設計エラーの概要

目次間違い1: データの列が多すぎる誤解2: 共同クエリが多すぎる誤解3: ENUMの代わりにSET...

Vue は Tencent TIM インスタント メッセージングを統合します

この記事では主に、Tencent TIM インスタント メッセージングを Vue と統合する方法を紹...

Vue要素ツリーコントロールに点線を追加する詳細な説明

目次1. 成果を達成する2. 実装コード3. その他の実装要約する1. 成果を達成する 2. 実装コ...