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

推薦する

Vue フロントエンドで PDF を生成してダウンロードする方法

目次1. インストールと導入2. PDFファイルをパッケージ化してエクスポートする方法構成の詳細PD...

TypeScript で時間を費やした場所の概要

TS で時間を過ごした場所をいくつか記録します。 (まず、文句を言わせてください。stackover...

Vue実装のカウンターケース

この記事では、カウンター表示を実現するためのVueの具体的なコードを例として紹介します。具体的な内容...

CocosCreator ユニバーサルフレームワークデザインネットワーク

目次序文Websocketの使用Websocketオブジェクトの構築Websocket ステータスW...

Linux仮想メモリについての簡単な説明

目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...

Nginx リバースプロキシの例の詳細な説明

1. リバースプロキシの例1 1. 効果を達成する(1)ブラウザを開き、www.123.comと入力...

Reactはconetxtを通じてマルチコンポーネント値転送関数を実装します

この関数の効果はvue的provide/injectに似ています。 contextを通じて反応できる...

MySQL シリーズ II マルチインスタンス構成

チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...

Vue3.0プロジェクトの構築と利用プロセス

目次1. プロジェクト構築2: ディレクトリ構造3: コンポジションAPI 4: 基本的な使い方:最...

MySQL シリーズ 3 基礎

目次チュートリアルシリーズ1. MySQL の紹介2. MySQLの開発履歴3. MariaDBの基...

CocosCreatorでシューティングゲームを作る詳しい解説

目次シーン設定ゲームリソース砲塔の回転動的に生成された弾丸衝突計算効果を高めるターゲットの動き弾薬庫...

MySQL 最適化: キャッシュ最適化

何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...

Linux システムで httpd の自動インストールと構成を Ansible で実装する方法

1. Ansibleのプレイブックを使用してhttpdを自動的にインストールする1) まず、Ansi...

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...

Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)

この記事では主に CentOS 上で MySQL マスタースレーブサーバーを構築する方法を紹介します...