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ページを設計する際に注意すべきこと

推薦する

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何かロジックの再利用簡単に言えば、カスタム フックを使用すると、特定のコンポ...

JavaScript で配列の最大値と最小値を実装する 6 つの方法

配列[1,8,5,4,3,9,2]が与えられた場合、配列の最大値9と最小値1を取得するアルゴリズムを...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

MySQLはJSON内部フィールドを抽出し、数値としてダンプします

目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...

ウェブデザイン必携ハンドブック 216 ウェブセーフカラー

Web ページ上の色の表現は、さまざまな要因によって影響を受けます。Web ページで非常に美しい配色...

JavaScript カラービューア

この記事では、カラービューアを実装するためのJavaScriptの具体的なコードを参考までに紹介しま...

CentOS 7にChromeブラウザをインストールする方法

この記事では、CentOS 7 に Chrome ブラウザをインストールする方法を紹介します。詳細は...

rpm を使用して指定されたバージョンの docker (1.12.6) をインストールする詳細な手順

1. 理由システムが Centos7.3 の場合、yum install docker を使用して直...

VMware を使用して PXE バッチ インストール サーバーをテストする詳細なプロセス

目次1. 準備1. 環境を整える2. インストール方法3. ネットワークカードの構成2. インストー...

Centos7 のインストールと Mysql5.7 の設定

ステップ1: MySQL YUMソースを取得するMySQLの公式サイトにアクセスして、RPMパッケー...

MySQLクエリで大文字と小文字を区別しない問題を解決する方法

質問最近、SSH フレームワークを使用して実用的なプロジェクトを完了していたときに、長い間悩まされて...

MySQL ストアド プロシージャと共通関数のコード分析

mysql ストアド プロシージャの概念:特定のタスク (クエリと更新) を実行できる、データベース...

dockerコンテナにvimをインストールするソリューション

目次物語の始まりvimをインストールし、hadoop-hive.envを編集します。不注意で回避しま...

offsetWidth、clientWidth、scrollWidth、scrollTop、scrollLeft などのプロパティの図。

注 1: 上の画像の背景全体がこの Web ページのフルサイズであり、中央の小さなボックスがブラウザ...

HTML でカスタム画像を使用してチェックボックスを表示する方法

チェックボックスの使用を実装するために画像を使用する必要がある場合は、それを使用して実装できます。実...