Linux で FastDFS ファイル サーバーを構築するための実装手順

Linux で FastDFS ファイル サーバーを構築するための実装手順

この記事では主に、Linux サーバー上に FastDFS ファイル サーバーを構築する方法を紹介します。内容が比較的複雑なので、大まかに9つのステップに分かれています。下の穴に連れて行ってあげましょう!

まず、TaobaoのシニアアーキテクトであるYu Qing氏が主導してC言語で書かれ、オープンソース化された分散ファイルシステムであるFastDFSについて簡単に紹介します。中小企業に適しており、ファイルはブロックに分割されません。

主にTracker(管理)とStorage(保管)があります。

戻りパス = グループ名/仮想ドライブ文字 {M00/00/02}/ファイル名

1. ソフトウェアパッケージ

以下はFastDFSのインストールパッケージです

ステップ 1: ブラウザのアドレス バーに https://sourceforge.net/projects/fastdfs/files と入力すると、次の図に示すインターフェイスが表示されます。

ステップ 2: FastDFS Server インストール パッケージをダウンロードします。上の図の「FastDFS Server ソース コード」をクリックすると、以下に示すインターフェイスが表示されます。最も安定したバージョンである 2014-12-02 バージョンを選択します。

ステップ 3: 以下に示すようなインターフェイスが表示されます。「FastDFS_v5.05.tar.gz」をクリックしてダウンロードします。

以下はダウンロードした

または自分でダウンロードする

https://github.com/happyfish100/libfastcommon/archive/V1.0.7.ta​​r.gz を取得します。
http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz を取得します。
https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz をダウンロードしてください
http://nginx.org/download/nginx-1.12.1.tar.gz をダウンロードしてください

2. gccをインストールする

システムにGCCがインストールされているかどうかを確認する

gcc –バージョン

GCCをインストールする

yum -y gcc をインストール gcc-c++ autoconf pcre pcre-devel make automake
yum -y インストール wget httpd-tools vim

C 言語コンパイラとして gcc を使用し、C++ 言語コンパイラとして g++ を使用するだけです。(Zhihu)

3. libfastcommonをインストールする

libfastcommon圧縮パッケージディレクトリに入り、解凍、コンパイル、インストールします。

tar -zxvf libfastcommonV1.0.7.ta​​r.gz

解凍したlibfastcommon-1.0.7ディレクトリに入り、コンパイルします。

./make.sh

インストール

./make.sh インストール

最後に、libfastcommon.so ファイルは usr/lib にあります。コピーしたパスを実際のファイル パスに合わせて変更してください。

cp /data/fastDFS/software/libfastcommon-1.0.7/src/libfastcommon.so /usr/lib

4. FastDFSをインストールする

FastDFS_v5.05.tar.gzを解凍し、 FastDFSをコンパイルしてインストールします。

tar -zxvf FastDFS_v5.05.tar.gz
./make.sh
./make.sh インストール

インストールが成功したら、 confディレクトリ内のファイルを/etc/fdfsディレクトリにコピーします。

cp /data/fastDFS/software/FastDFS/conf/* /etc/fdfs/

5. トラッカーをインストールする

/etc/fdfsディレクトリに移動し、 tracker.confファイルを変更します。存在しない場合は、 tracker.conf.sampleファイルをtracker.confにコピーして変更します。

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/fastdfs (注: ログファイル)

http.server_port=8080 >>> http.server_port=80 (注: 便宜上、ポート 80 がデフォルトです)

store_group=group1 (注: グループ名)

その中で、 /home/

ログ

/fastdfsディレクトリが存在しない場合は作成します。

その後、 trackerを起動し、正常に起動したかどうかを確認します(起動が成功したことを示す次のプロンプトが表示されます):restart

fdfs_trackerd /etc/fdfs/tracker.conf 開始
netstat -unltp | grep トラッカー

6. ストレージをインストールする

ストレージとトラッカーの両方が fastDFS プログラムを実行するため、各サーバーは fasfDFS を展開し、1 つのサーバーはトラッカー、もう 1 つのサーバーはストレージになります。

storage.confファイルを変更します。存在しない場合は、 storage.conf.sampleファイルをstorage.confにコピーして、変更します。

base_path=/home/yuqing/fastdfs >>> base_path=/home/logs/storage (ログパス)

store_path0=/home/yuqing/fastdfs >>> store_path0=/home/data/storage (実際のストレージファイルパス、複数のパスを設定できます)

tracker_server=192.168.209.121:22122 >>> tracker_server=192.168.2.231:22122 (トラッカーサーバーのアドレスに接続)

group_name=group1 (トラッカーグループ名と同じである必要があります) http.server_port=80 (このポートも変更する必要があります)

/home/logs/storage/home/data/storage存在しない場合は、ディレクトリを作成します。

次に、 storageを起動し、成功したかどうかを確認します (起動が成功したことを示す次のプロンプトが表示されます)。

fdfs_storaged /etc/fdfs/storage.conf 開始
netstat -unltp | grep ストレージ

最後に、 trackerstorageが通信しているかどうかを確認します。

fdfs_monitor /etc/fdfs/storage.conf

以下のように、 ACTIVE表示され、両方とも正常に起動していることがわかります。これで、ファイルのアップロードをテストできます。

7. 画像のアップロードをテストする

トラッカーとストレージがインストールされました。次のコマンドを使用してファイルのアップロードをテストします。
FastDFS は、ファイルのアップロードをテストするためのファイル アップロード コマンド usr/bin/fdfs_test を提供します。アップロードをテストするには、トラッカー サーバーとストレージ サーバーに接続する必要があります。そのため、設定ファイル(client.conf 設定ファイル)を指定し、Client.conf を介してトラッカー サーバーに接続する必要があります。

/etc/fdfs の client.conf を変更します。

base_path=/home/logs/client (ログディレクトリ)
tracker_server=192.168.2.231:22122 (トラッカーポート)

テストコマンド

/usr/bin/fdfs_test /etc/fdfs/client.conf に anti-steal.jpg をアップロードします

返送先住所が以下の通りであれば成功です

8. Nginx をインストールします。

Nginx に必要なその他の環境をインストールします。GCC は上記でインストールされています。インストール時にこの手順を実行しなかった

#gcc インストール yum install gcc-c++

#PCRE pcre-devel インストール yum install -y pcre pcre-devel

# zlib をインストール yum install -y zlib zlib-devel

#OpenSSL インストール yum install -y openssl openssl-devel

解凍し、コンパイルしてインストールします。

tar -zxvf nginx-1.12.1.tar.gz
nginx-1.12.1をインストールします
./configure
作る
インストールする

9. fastdfs-nginx-moduleをインストールする

まず、 fastdfs-nginx-module_v1.16.tar.gzを解凍し、/fastdfs-nginx-module/src/config ファイルを変更します。すべてのローカルを削除(3つ)

ライブラリファイルlibfdfsclient.soをusr/lib64ディレクトリにコピーします。

cp /usr/lib64/libfdfsclient.so /usr/lib

nginx インストール ディレクトリで次のコマンドを実行します。モジュールを nginx に追加します。インストールパラメータを設定してモジュールを追加します。

nginx-1.12.1をインストールします
./configure --add-module=../fastdfs-nginx-module/src

注: nginx-1.12.1とfastdfs-nginx-moduleが同じディレクトリにあるので、次のように記述します。

コンパイラを再インストールする

作成 && インストール

Nginxモジュールを表示

nginx の sbin ディレクトリに nginx の sbin ディレクトリを作成します。

fastdfs-nginx-moduleソースコードの設定ファイルを/etc/fdfsディレクトリにコピーし、変更します。

fastdfs-nginx-module/src をコピーします
mod_fastdfs.confを/etc/fdfs/にコピーします。

/etc/fdfs/ に入り、mod_fastdfs.conf を以下のように変更します。その他の設定はデフォルトのままです。

#接続タイムアウト connect_timeout=10

トラッカーサーバー
トラッカーサーバー=192.168.2.231:22122

# StorageServer のデフォルトポート storage_server_port=23000

# ファイルIDのURIに/group**が含まれている場合はtrueに設定します
url_have_group_name = true

# ストレージ構成の store_path0 パスは、storage.conf のパスと一致している必要があります。store_path0=/home/data/storage

# ログファイルを保存する基本パス
ベースパス=/home/logs/storage

iNginxを設定し、/usr/local/nginx/confディレクトリに入り、nginx.confを変更します。

注: どこで解凍してインストールしても問題ありません。このディレクトリ/usr/local/nginx/confに移動し、nginx.confを変更する必要があります。

vim nginx.conf

設定、その他のデフォルトを変更する

fastdfs-nginxモジュールをポート80に追加します

場所 ~/group([0-9])/M00 {
    ngx_fastdfs_モジュール;
}

次の #user nobody; が #user root; に変更されていることに注意してください。

#ユーザーnobody;
ワーカープロセス 1;

#error_log ログ/error.log;
#error_log ログ/error.log 通知;
#error_log ログ/error.log 情報;

#pid ログ/nginx.pid;


イベント {
    ワーカー接続 1024;
}


http {
    mime.types を含めます。
    デフォルトタイプ アプリケーション/オクテットストリーム;

    #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log ログ/access.log メイン;

    ファイル送信オン;
    #tcp_nopush オン;

    #キープアライブタイムアウト 0;
    キープアライブタイムアウト65;

    #gzip オン;

    サーバー{
        聞く 80;
        サーバー名 192.168.2.231;
        場所 ~/group([0-9])/M00 {
            ngx_fastdfs_モジュール;
        }
        #文字セット koi8-r;

        #access_log ログ/host.access.log メイン;

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

        #エラーページ 404 /404.html;

        # サーバーのエラーページを静的ページ /50x.html にリダイレクトします
        #
        エラーページ 500 502 503 504 /50x.html;
        場所 = /50x.html {
            ルートhtml;
        }

        # PHP スクリプトを 127.0.0.1:80 で listen している Apache にプロキシします
        #
        #場所 ~ \.php$ {
        # プロキシパス http://127.0.0.1;
        #}

        # PHP スクリプトを 127.0.0.1:9000 で待機している FastCGI サーバーに渡します
        #
        #場所 ~ \.php$ {
        #ルートhtml;
        #fastcgi_pass 127.0.0.1:9000;
        # fastcgi_index インデックス.php;
        # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
        #fastcgi_params を含めます。
        #}

        # Apacheのドキュメントルートが.htaccessファイルへのアクセスを拒否する
        # nginxのものと一致します
        #
        #場所 ~ /\.ht {
        # すべて拒否;
        #}
    }


    # IP、名前、ポートベースの設定を組み合わせた別の仮想ホスト
    #
    #サーバー{
    # 8000を聴く;
    # somename:8080 をリッスンします。
    # server_name somename alias another.alias;

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


    # HTTPS サーバー
    #
    #サーバー{
    # 443 ssl をリッスンします。
    # サーバー名 localhost;

    # ssl_certificate cert.pem;
    # ssl_certificate_key cert.key;

    # ssl_session_cache 共有:SSL:1m;
    #ssl_session_timeout 5分;

    # ssl_ciphers HIGH:!aNULL:!MD5;
    # ssl_prefer_server_ciphers オン;

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

知らせ:

listen 80 ポート値は、/etc/fdfs/storage.conf の http.server_port=80 に対応している必要があります (以前は 80 に変更されていました)。別のポートに変更する場合は、それを統合し、ファイアウォールでポートを開く必要があります。

場所の設定については、複数のグループがある場合は、場所を ~/group([0-9])/M00 に設定します。グループがない場合は、グループは必要ありません。

ファイル保存ディレクトリにソフトリンクを作成し、実際にデータが保存されているディレクトリにリンクします。このファイル保存場所の背後にある複数のデータディレクトリは、システムによって自動的に生成されることに注意してください。

ln -s /home/data/storage/data /home/data/storage/data/M00

nginxを起動する

#nginxを起動する
/usr/local/nginx/sbin/ をコピーします。
./nginx は /usr/local/nginx/sbin/nginx を直接起動します。

#vim の起動を設定する /etc/rc.local
ローカル

# 実行権限を設定する chmod 755 rc.local

Nginxが起動しているか確認する

ps -ef | grep nginx

クラウドサービスのセキュリティグループとファイアウォール設定は80、22122、23000にする必要があることに注意してください。これを行う方法がわからない場合は、Tencent Cloud Server Tomcat Port Unreachableのファイアウォール設定を参照してください。

アドレスバーで正常にアクセス http://192.175.231.128/group1/M00/00/00/rBAACVzBeU2AQBKJAAOHDqS1H9o350.jpg

エラーを報告してください!存在しません。問題110、120、119があります

知らせ:

1. グループ 2 の同じグループ内の Storage2 と Storage3 の FastDFS サービス ポートは一貫している必要があります: port=23000。

2. サーバーは複数のグループを持つことができますが、同じグループに複数のストレージを持つことはできません。ログにエラーが報告されます。エラーの理由は「注 1」です。

3. バージョン 4.05 より前では、fastdfs は libevent を http サーバーとして内部的にバインドしていました。バージョン 4.05 以降のバージョンでは、組み込みの Web http サービスが削除されました。組み込みの Web http サービスは負担となるため、使用しない方がよいでしょう。

4. ストレージ サーバーを起動すると、常にデッドロック状態になります。ストレージ サーバーを起動すると、ストレージはトラッカー サーバーに接続します。接続できない場合は再試行を続けます。接続が成功するまで起動は完了しません。クラスター内にトラッカーサーバーが2台ある場合、

トラッカーの 1 つが起動されていない場合、ストレージ サーバーはデッドロック状態のままになる可能性があります。

Linux で FastDFS ファイル サーバーを構築する実装手順に関するこの記事はこれで終わりです。Linux で FastDFS ファイル サーバーを構築する方法に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linux で FastDFS を使用してイメージ サーバーを構築する

<<:  MySQLフィールド定義でnullを使用しない理由の分析

>>:  小さな画面のモバイルデバイス向けにWebページを設計する際に注意すべきこと

推薦する

jQuery カスタム虫眼鏡効果

この記事の例では、jQueryのカスタム虫眼鏡効果の具体的なコードを参考までに共有しています。具体的...

CentOS ベースの OpenStack 環境の展開に関する詳細なチュートリアル (OpenStack のインストール)

エフェクト表示: 環境準備コントローラーノード: 6GB 4時間60GB/30GB/30GB計算ノー...

MySQL データ型 DECIMAL の詳細な分析

序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...

VUE のコンパイル スコープとスロット スコープのスロットの問題について

スロットとは何ですか?スロット ディレクティブは v-slot であり、現在 slot と slot...

【HTML要素】タグテキストの詳細説明

1. 基本的なテキスト要素を使用してコンテンツをマークアップするまず表示効果を見てみましょう:対応す...

PHP-HTMLhtml 重要な知識ポイントメモ(必読)

1. フレームセット、フレーム、iframeを使用して複数のウィンドウを実現する2. 画像上のマッ...

HTML ページ出力で従うべきいくつかの原則の要約

1. DOCTYPE は必須です。ブラウザは宣言した DOCTYPE に基づいてページのレンダリング...

Linux サーバーに Java Web プロジェクトをデプロイするための完全なチュートリアル

この記事は主にインターネット上の他のチュートリアルを参考にしています。実際に操作した上でのまとめです...

角丸四角形の HTML+CSS 実装コード

退屈していたので、突然角丸四角形の実装を思いつきました。しかし、私たちはこの話題についてあまりにも長...

MySQL シリーズ 9 MySQL クエリ キャッシュとインデックス

目次チュートリアルシリーズ1. MySQL アーキテクチャクエリキャッシュキャッシュされないクエリ:...

この記事では、Viteがブラウザのリクエストに対して何を行うかを説明します。

目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...

Centos7.5でのIPアドレス設定の実装

1. IPアドレスを設定する前に、まずifconfigを使用してネットワークカード情報を表示し、ネッ...

CSS でコンテンツが長すぎる問題を解決する方法の詳細な説明

CSS を記述するときに、デザインに存在する重要なケースを忘れてしまうことがあります。たとえば、コン...

Vueモバイル端末が指のスライド効果を実現

この記事の例では、Vueモバイル端末で指のスライド効果を実現するための具体的なコードを紹介します。具...

Vue3ルーティングVueRouter4を使用する簡単な例

ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...