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

推薦する

クラウド サーバーを使用して CentOS システムに .NET 6.0 をインストールする

.NET SDK ダウンロード リンクhttps://dotnet.microsoft.com/do...

.Net Core を使用して数千万のデータを MySQL にインポートする手順

目次事前準備実施方法: 1. 単一のデータを挿入する2. マージデータ挿入3. MySqlBulkL...

WeChatアプレットタブの左右スライドスイッチ機能実装コード

効果画像: 1. はじめに独自のアプレットでこのような機能を実装する必要がある1. 核となる考え方ス...

MySQLがファントムリードを解決する方法の詳細な説明

1. ファントムリーディングとは何ですか?トランザクションにおいて、複数のクエリの後に結果セットの数...

Navicat を使用してリモート Linux MySQL データベースに接続するときに発生する 10061 不明エラーの詳細な説明

Navicat を使用してリモート Linux MySQL データベースに接続すると、不明なエラー ...

Dockerはイメージ名とTAG操作の名前を変更します

docker イメージを使用する場合、以下に示すように、REPOSITORY と TAG の両方が ...

MySQLdump コマンドを使用した MySQL データの移行

このソリューションの利点はシンプルさと使いやすさですが、欠点はダウンタイムが長くなることです。 した...

LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...

Node-Redを使用してMySQLデータベースに接続する方法

Node-red をデータベース (mysql) に接続するには、まずコンピューターに MySQL ...

MySQLは適切なストレージエンジンを選択します

データベースに関して最もよく聞かれる質問の 1 つは、現在のビジネス ニーズを満たす MySQL の...

Ubuntu でディスク容量不足により MySQL が起動しない場合の解決策

序文最近、データベースのテーブルに 2 つのフィールドを追加しました。その後、ディスク容量不足のよう...

Linux での SSH パスワードフリーログイン設定の詳細な説明

Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...

MySQLクラスタのDockerデプロイメントの実装

シングルノードデータベースの欠点大規模なインターネットプログラムはユーザーベースが大きいため、アーキ...

データベース内のSQL整合性制約ステートメントの分析

整合性制約整合性制約はテーブル データの正確性を保つためのものです。データが正しくない場合は、そもそ...

WeChatアプレットはキャンバスを使用して時計を描画します

この記事では、キャンバスを使用してWeChatアプレットに時計を描く具体的なコードを参考までに共有し...