banner
biuaxia

biuaxia

"万物皆有裂痕,那是光进来的地方。"
github
bilibili
tg_channel

Centos7 シングルモードでの FastDFS デプロイ

title: Centos7 単機モードデプロイ FastDFS
date: 2022-03-28 10:12:00
toc: true
index_img: https://b3logfile.com/file/2022/03/Snipaste_2022-03-28_10-18-42-15a04261.png
category:

  • シェア
  • Linux
    tags:
  • Centos7
  • 単機
  • モード
  • デプロイ
  • FastDFS

環境準備#

Centos のバージョンを確認します(7.x バージョンが必要です):cat /etc/redhat-release

依存関係のインストール#

依存関係のインストールを完了するためにコマンドを実行します:

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y  

Snipaste20220328102343.png

データディレクトリの準備#

新しい /www/apps/fastdfs ディレクトリを作成します(カスタマイズ可能)データを保存するために; /usr/local/src/ ディレクトリに切り替えて、インストールパッケージをダウンロードします。

mkdir /www/apps/fastdfs  
cd /usr/local/src  

libfastcommon のインストール#

git clone https://github.com/happyfish100/libfastcommon.git --depth 1  
cd libfastcommon/  
./make.sh && ./make.sh install  

Snipaste20220328102945.png

Snipaste20220328103140.png

ヒント:Github へのアクセスが遅い場合は、ミラーを使用して加速できます。詳細は:【転載】GitHub ファイルダウンロード加速ブラウザスクリプトプラグイン + 加速ダウンロードサイトまとめ - biuaxia

FastDFS のインストール#

cd ../  
git clone https://github.com/happyfish100/fastdfs.git --depth 1  
cd fastdfs/  
./make.sh && ./make.sh install  
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/  
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/  

Snipaste20220328103906.png

注意が必要なのは、公式のチュートリアルには 3 つのコピーするファイルがあります。実際の操作では、cd /etc/fdfstracker.conf, storage.conf, client.conf の 3 つのファイルが存在するか確認することをお勧めします。存在する場合は、実行する必要はありません。

# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf  
# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf  
# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf  

Snipaste20220328104348.png

fastdfs-nginx-module のインストール#

cd ../  
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1  
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs  

fastdfs-nginx 設定#

vim /etc/fdfs/mod_fastdfs.conf  
# 修正が必要な内容は以下の通り  
tracker_server=192.168.10.13:22122  # trackerサーバーのIPとポート  
url_have_group_name=true  
store_path0=/www/apps/fastdfs  

宝塔に付属の Nginx を使用#

/www/server/nginx/sbin/nginx -V  

Snipaste20220328104954.png

出力結果は:

[root@server1013 src]# /www/server/nginx/sbin/nginx -v  
nginx version: nginx/1.20.2  
[root@server1013 src]# /www/server/nginx/sbin/nginx -V  
nginx version: nginx/1.20.2  
built by gcc 4.8.5  20150623 (Red Hat 4.8.5-44) (GCC)  
built with OpenSSL 1.1.1m  14 Dec 2021  
TLS SNI support enabled  
configure arguments: --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module  
[root@server1013 src]#  

コピー内容:

--user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module  

ヒント:cd /www/server/nginx/src を実行して -bash: cd: /www/server/nginx/src: そのファイルやディレクトリはありません と表示された場合は、Nginx をアンインストールし、再度コンパイルインストールして カスタムモジュールを追加 すれば大丈夫です。

コマンドを実行:

cd /www/server/nginx/src  
./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/usr/local/src/fastdfs-nginx-module/src  
make && make install  
/www/server/nginx/sbin/nginx -s stop    #これは停止  
/www/server/nginx/sbin/nginx            #これは起動  
/www/server/nginx/sbin/nginx -V  

単機デプロイ#

tracker 設定#

vim /etc/fdfs/tracker.conf  
# 修正が必要な内容は以下の通り  
port=22122                      # trackerサーバーのポート(デフォルト22122、一般的に変更しない、外部に開放する必要はありません)  
base_path=/www/apps/fastdfs     # ログとデータの保存ルートディレクトリ  

完全な設定:

# この設定ファイルは無効ですか  
# falseは有効  
# trueは無効  
disabled = false  

# このホストのアドレスをバインド  
# 空はこのホストのすべてのアドレスをバインド  
bind_addr =  

# trackerサーバーのポート  
port = 22122  

# 接続タイムアウト(秒)  
# デフォルト値は30  
# 注意:イントラネットネットワーク(LAN)では、2秒で十分です。  
connect_timeout = 5  

# 送信と受信のネットワークタイムアウト(秒)  
# デフォルト値は30  
network_timeout = 60  

# データとログファイルを保存するためのベースパス  
base_path = /www/apps/fastdfs  

# このサーバーがサポートする最大同時接続数  
# このパラメータを大きく設定する必要があります。例:10240  
# デフォルト値は256  
max_connections = 1024  

# 受け入れスレッド数  
# デフォルト値は1で推奨されます  
# V4.07以降  
accept_threads = 1  

# 作業スレッド数  
# ネットワークIOを処理する作業スレッド  
# デフォルト値は4  
# V2.00以降  
work_threads = 4  

# 最小ネットワークバッファサイズ  
# デフォルト値は8KB  
min_buff_size = 8KB  

# 最大ネットワークバッファサイズ  
# デフォルト値は128KB  
max_buff_size = 128KB  

# ファイルをアップロードするためのグループを選択する方法  
# 0:ラウンドロビン  
# 1:指定されたグループ  
# 2:ロードバランス、最大の空きスペースグループを選択してファイルをアップロード  
store_lookup = 2  

# ファイルをアップロードするグループ  
# store_lookupが1に設定されている場合、store_groupをグループ名に設定する必要があります  
store_group = group2  

# ファイルをアップロードするストレージサーバー  
# 0:ラウンドロビン(デフォルト)  
# 1:IPアドレスで順番に最初のサーバー  
# 2:優先順位(最小)で順番に最初のサーバー  
# 注意:use_trunk_fileがtrueに設定されている場合、store_serverを1または2に設定する必要があります  
store_server = 0  

# ファイルをアップロードするストレージサーバーのパス(ディスクまたはマウントポイント)  
# 0:ラウンドロビン  
# 2:ロードバランス、最大の空きスペースパスを選択してファイルをアップロード  
store_path = 0  

# ファイルをダウンロードするストレージサーバー  
# 0:ラウンドロビン(デフォルト)  
# 1:現在のファイルがアップロードされたソースストレージサーバー  
download_server = 0  

# システムまたは他のアプリケーションのための予約ストレージスペース。  
# グループ内の任意のストレージサーバーの空き(利用可能)スペースが  
# reserved_storage_space以下の場合、このグループにファイルをアップロードできません。  
# バイト単位は以下のいずれかを使用できます:  
### Gまたはgはギガバイト(GB)  
### Mまたはmはメガバイト(MB)  
### Kまたはkはキロバイト(KB)  
### 単位なしはバイト(B)  
### XX.XX%は比率、例:reserved_storage_space = 10%  
reserved_storage_space = 20%  

# syslogとしての標準ログレベル、大文字小文字を区別しない、値のリスト:  
### emergは緊急  
### alert  
### critは重大  
### error  
### warnは警告  
### notice  
### info  
### debug  
log_level = info  

# このプログラムを実行するためのunixグループ名、  
# 設定されていない(空)は現在のユーザーのグループで実行されることを意味します  
run_by_group=  

# このプログラムを実行するためのunixユーザー名、  
# 設定されていない(空)は現在のユーザーで実行されることを意味します  
run_by_user =  

# allow_hostsは複数回発生する可能性があり、ホストはホスト名またはIPアドレスです、  
# "*"(1つのアスタリスクのみ)はすべてのIPアドレスに一致します  
# CIDR IPのように192.168.5.64/26を使用できます  
# また、次のような範囲を使用できます:10.0.1.[0-254]およびhost[01-08,20-25].domain.com  
# 例:  
# allow_hosts=10.0.1.[1-15,20]  
# allow_hosts=host[01-08,20-25].domain.com  
# allow_hosts=192.168.5.64/26  
allow_hosts = *  

# ログバッファをディスクに同期する間隔(秒)  
# デフォルト値は10秒  
sync_log_buff_interval = 1  

# ストレージサーバーの生存確認間隔(秒)  
check_active_interval = 120  

# スレッドスタックサイズ、64KB以上である必要があります  
# デフォルト値は256KB  
thread_stack_size = 256KB  

# ストレージサーバーのIPアドレスが変更されたときに自動調整  
# デフォルト値はtrue  
storage_ip_changed_auto_adjust = true  

# ストレージ同期ファイルの最大遅延(秒)  
# デフォルト値は86400秒(1日)  
# V2.00以降  
storage_sync_file_max_delay = 86400  

# ファイルをストレージ同期する最大時間  
# デフォルト値は300秒  
# V2.00以降  
storage_sync_file_max_time = 300  

# 複数の小さなファイルを保存するためにトランクファイルを使用する場合  
# デフォルト値はfalse  
# V3.00以降  
use_trunk_file = false  

# 最小スロットサイズ、4KB以下である必要があります  
# デフォルト値は256バイト  
# V3.00以降  
slot_min_size = 256  

# 最大スロットサイズ、slot_min_sizeより大きい必要があります  
# この値以下のサイズのアップロードファイルをトランクファイルに保存します  
# デフォルト値は16MB  
# V3.00以降  
slot_max_size = 1MB  

# トランクスペースを割り当てるためのアラインメントサイズ  
# デフォルト値は0(アラインしない)  
# V6.05以降  
# 注意:アラインメントサイズが大きいほど、ディスクの  
#       断片化が少なくなりますが、無駄なスペースが増えます。  
trunk_alloc_alignment_size = 256  

# トランクファイルの連続した空きスペースをマージする場合  
# デフォルト値はfalse  
# V6.05以降  
trunk_free_space_merge = true  

# 未使用のトランクファイルを削除/回収する場合  
# デフォルト値はfalse  
# V6.05以降  
delete_unused_trunk_files = false  

# トランクファイルサイズ、4MB以上である必要があります  
# デフォルト値は64MB  
# V3.00以降  
trunk_file_size = 64MB  

# トランクファイルを事前に作成する場合  
# デフォルト値はfalse  
# V3.06以降  
trunk_create_file_advance = false  

# トランクファイルを作成する時間の基準  
# 時間形式:HH:MM  
# デフォルト値は02:00  
# V3.06以降  
trunk_create_file_time_base = 02:00  

# トランクファイルを作成する間隔、単位:秒  
# デフォルト値は38400(1日)  
# V3.06以降  
trunk_create_file_interval = 86400  

# トランクファイルを作成するためのしきい値  
# 空きトランクファイルサイズがこのしきい値未満になると、  
# トランクファイルが作成されます  
# デフォルト値は0  
# V3.06以降  
trunk_create_file_space_threshold = 20G  

# トランクの空きスペースを読み込むときに占有スペースをチェックする場合  
# 占有スペースは無視されます  
# デフォルト値はfalse  
# V3.09以降  
# 注意:このパラメータをtrueに設定すると、起動時にトランクスペースの読み込みが遅くなります。  
# 必要な場合はこのパラメータをtrueに設定してください。  
trunk_init_check_occupying = false  

# storage_trunk.datを無視し、トランクbinlogから再読み込みする場合  
# デフォルト値はfalse  
# V3.10以降  
# バージョンアップ時に、あなたのバージョンがV3.10未満の場合はtrueに設定してください。  
trunk_init_reload_from_binlog = false  

# トランクbinlogファイルを圧縮する最小間隔  
# 単位:秒、0は圧縮しないことを意味します  
# FastDFSはトランクの初期化とトランクの破棄時にトランクbinlogを圧縮します  
# このパラメータを86400(1日)に設定することをお勧めします  
# デフォルト値は0  
# V5.01以降  
trunk_compress_binlog_min_interval = 86400  

# トランクbinlogファイルを圧縮する間隔  
# 単位:秒、0は圧縮しないことを意味します  
# このパラメータを86400(1日)に設定することをお勧めします  
# デフォルト値は0  
# V6.05以降  
trunk_compress_binlog_interval = 86400  

# トランクbinlog圧縮の時間基準、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
# デフォルト値は03:00  
# V6.05以降  
trunk_compress_binlog_time_base = 03:00  

# トランクbinlogファイルの最大バックアップ数  
# デフォルト値は0(バックアップしない)  
# V6.05以降  
trunk_binlog_max_backups = 7  

# IPアドレスの代わりにストレージサーバーIDを使用する場合  
# ストレージサーバーにデュアルIPを使用する場合は、  
# このパラメータをtrueに設定し、次の項目で設定されたファイルにデュアルIPを設定する必要があります  
# storage_ids_filenameで、例えばstorage_ids.conf  
# デフォルト値はfalse  
# V4.00以降  
use_storage_id = false  

# ストレージIDファイル名を指定、相対パスまたは絶対パスを使用できます  
# このパラメータはuse_storage_idがtrueに設定されている場合のみ有効です  
# V4.00以降  
storage_ids_filename = storage_ids.conf  

# ファイル名のストレージサーバーのIDタイプ、値は:  
## ip:ストレージサーバーのIPアドレス  
## id:ストレージサーバーのサーバーID  
# このパラメータはuse_storage_idがtrueに設定されている場合のみ有効です  
# デフォルト値はip  
# V4.03以降  
id_type_in_filename = id  

# スレーブファイルをシンボリックリンクを使用して保存する場合  
# デフォルト値はfalse  
# V4.01以降  
store_slave_file_use_link = false  

# エラーログを毎日ローテーションする場合  
# デフォルト値はfalse  
# V4.02以降  
rotate_error_log = false  

# エラーログのローテーション時間基準、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
# デフォルト値は00:00  
# V4.02以降  
error_log_rotate_time = 00:00  

# 古いエラーログをgzipで圧縮する場合  
# デフォルト値はfalse  
# V6.04以降  
compress_old_error_log = false  

# エラーログの圧縮日数  
# デフォルト値は1  
# V6.04以降  
compress_error_log_days_before = 7  

# ログファイルがこのサイズを超えたときにエラーログをローテーションする  
# 0はログファイルサイズによってログファイルをローテーションしないことを意味します  
# デフォルト値は0  
# V4.02以降  
rotate_error_log_size = 0  

# ログファイルの保持日数  
# 0は古いログファイルを削除しないことを意味します  
# デフォルト値は0  
log_file_keep_days = 0  

# ファイルを同期する際に無効なレコードをスキップする場合  
# デフォルト値はfalse  
# V4.02以降  
file_sync_skip_invalid_record = false  

# 接続プールを使用する場合  
# デフォルト値はfalse  
# V4.05以降  
use_connection_pool = true  

# アイドル時間がこの時間を超える接続は閉じられます  
# 単位:秒  
# デフォルト値は3600  
# V4.05以降  
connection_pool_max_idle_time = 3600  

# HTTPポートこのtrackerサーバー上  
http.server_port = 8080  

# ストレージHTTPサーバーの生存確認間隔(秒)  
# <= 0は決して確認しない  
# デフォルト値は30  
http.check_alive_interval = 30  

# ストレージHTTPサーバーの生存確認タイプ、値は:  
#   tcp : HTTPポートでストレージサーバーに接続するだけ、  
#        リクエストを送信して応答を取得しない  
#   http: ストレージチェック生存確認URLはHTTPステータス200を返す必要があります  
# デフォルト値はtcp  
http.check_alive_type = tcp  

# ストレージHTTPサーバーの生存確認URI/URL  
# 注意:ストレージ埋め込みHTTPサーバーはURI:/status.htmlをサポートします  
http.check_alive_uri = /status.html  

storage 設定#

vim /etc/fdfs/storage.conf  
# 修正が必要な内容は以下の通り  
port=23000                          # storageサービスのポート(デフォルト23000、一般的に変更しない)  
base_path=/www/apps/fastdfs         # データとログファイルの保存ルートディレクトリ  
store_path0=/www/apps/fastdfs       # 最初の保存ディレクトリ  
tracker_server=192.168.10.13:22122  # trackerサーバーのIPとポート、127.0.0.1は指定できません!!!  
http.server_port=18888              # ファイルにHTTPアクセスするためのポート(デフォルト8888、状況に応じて変更)  

完全な設定:

# この設定ファイルは無効ですか  
# falseは有効  
# trueは無効  
disabled = false  

# このストレージサーバーが属するグループの名前  
#  
# trackerサーバーから取得するためにこの項目をコメントアウトまたは削除します、  
# この場合、tracker.confでuse_storage_idをtrueに設定する必要があります、  
# そしてstorage_ids.confを正しく設定する必要があります。  
group_name = group1  

# このホストのアドレスをバインド  
# 空はこのホストのすべてのアドレスをバインド  
bind_addr =  

# 他のサーバーに接続するときにこのホストのアドレスをバインドするかどうか  
# (このストレージサーバーはクライアントとして)  
# trueは上記のパラメータで設定されたアドレスをバインド  
# falseはこのホストの任意のアドレスをバインド  
client_bind = true  

# ストレージサーバーのポート  
port = 23000  

# 接続タイムアウト(秒)  
# デフォルト値は30  
# 注意:イントラネットネットワーク(LAN)では、2秒で十分です。  
connect_timeout = 5  

# 送信と受信のネットワークタイムアウト(秒)  
# デフォルト値は30  
network_timeout = 60  

# ハートビート間隔(秒)  
# ストレージサーバーは定期的にtrackerサーバーにハートビートを送信します  
# デフォルト値は30  
heart_beat_interval = 30  

# ディスク使用状況レポート間隔(秒)  
# ストレージサーバーは定期的にディスク使用状況レポートをtrackerサーバーに送信します  
# デフォルト値は300  
stat_report_interval = 60  

# データとログファイルを保存するためのベースパス  
# 注意:binlogファイルは大きくなる可能性があるため、  
#       ベースパスには十分なディスクスペースがあることを確認してください、  
#       例えば、ディスクの空きスペースは50GBを超える必要があります  
base_path = /www/apps/fastdfs  

# サーバーがサポートする最大同時接続数、  
# このパラメータを大きく設定する必要があります。例:10240  
# デフォルト値は256  
max_connections = 1024  

# ネットワークからデータを受信/送信するためのバッファサイズ  
# このパラメータは8KBより大きくする必要があります  
# 256KBまたは512KBを推奨します  
# デフォルト値は64KB  
# V2.00以降  
buff_size = 256KB  

# 受け入れスレッド数  
# デフォルト値は1で推奨されます  
# V4.07以降  
accept_threads = 1  

# 作業スレッド数  
# ネットワークIOを処理する作業スレッド  
# デフォルト値は4  
# V2.00以降  
work_threads = 4  

# ディスクの読み取り/書き込みが分離されているかどうか  
##  falseは混合読み取りと書き込み  
##  trueは分離された読み取りと書き込み  
# デフォルト値はtrue  
# V2.00以降  
disk_rw_separated = true  

# ストアパスごとのディスクリーダースレッド数  
# 混合読み取り/書き込みの場合、このパラメータは0にできます  
# デフォルト値は1  
# V2.00以降  
disk_reader_threads = 1  

# ストアパスごとのディスクライタースレッド数  
# 混合読み取り/書き込みの場合、このパラメータは0にできます  
# デフォルト値は1  
# V2.00以降  
disk_writer_threads = 1  

# 同期するエントリがない場合、Xミリ秒後にbinlogを再読み込みしようとします  
# 0より大きくする必要があります、デフォルト値は200ms  
sync_wait_msec = 50  

# ファイルを同期した後、usleepミリ秒  
# 0は同期を連続して行う(usleepを呼び出さない)  
sync_interval = 0  

# ストレージの同期開始時間、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
sync_start_time = 00:00  

# ストレージの同期終了時間、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
sync_end_time = 23:59  

# Nファイルを同期した後、マークファイルに書き込む  
# デフォルト値は500  
write_mark_file_freq = 500  

# ディスク回復スレッド数  
# デフォルト値は1  
# V6.04以降  
disk_recovery_threads = 3  

# ストアパス(ディスクまたはマウントポイント)のカウント、デフォルト値は1  
store_path_count = 1  

# store_path#、0から基づいて、ファイルを保存するためのストアパスを設定します  
# store_path0が存在しない場合、その値はbase_pathです(推奨しません)  
# パスは存在する必要があります。  
#  
# 重要な注意:  
#       ストアパスの順序は非常に重要です、混乱しないでください!!!  
#       base_pathはストアパスとは独立している(異なる)必要があります  

store_path0 = /www/apps/fastdfs  
#store_path1 = /home/yuqing/fastdfs2  

# subdir_count  * subdir_countディレクトリは各  
# store_path(ディスク)の下に自動的に作成されます、値は1から256まで、デフォルト値は256  
subdir_count_per_path = 256  

# tracker_serverは複数回発生する可能性があります、複数のtrackerサーバー用。  
# tracker_serverの値の形式は "HOST:PORT"、  
#   HOSTはホスト名またはIPアドレス、  
#   HOSTはカンマで区切られたデュアルIPまたはホスト名を持つことができます、  
#   デュアルIPは内部(イントラネット)IPと外部(エクストラネット)IP、  
#   または2つの異なるタイプの内部(イントラネット)IPである必要があります。  
#   例:192.168.2.100,122.244.141.46:22122  
#   別の例:192.168.1.10,172.17.4.21:22122  

#tracker_server = 192.168.209.121:22122  
tracker_server = 192.168.10.13:22122  

# syslogとしての標準ログレベル、大文字小文字を区別しない、値のリスト:  
### emergは緊急  
### alert  
### critは重大  
### error  
### warnは警告  
### notice  
### info  
### debug  
log_level = info  

# このプログラムを実行するためのunixグループ名、  
# 設定されていない(空)は現在のユーザーのグループで実行されることを意味します  
run_by_group =  

# このプログラムを実行するためのunixユーザー名、  
# 設定されていない(空)は現在のユーザーで実行されることを意味します  
run_by_user =  

# allow_hostsは複数回発生する可能性があり、ホストはホスト名またはIPアドレスです、  
# "*"(1つのアスタリスクのみ)はすべてのIPアドレスに一致します  
# CIDR IPのように192.168.5.64/26を使用できます  
# また、次のような範囲を使用できます:10.0.1.[0-254]およびhost[01-08,20-25].domain.com  
# 例:  
# allow_hosts=10.0.1.[1-15,20]  
# allow_hosts=host[01-08,20-25].domain.com  
# allow_hosts=192.168.5.64/26  
allow_hosts = *  

# ファイルのデータパスに分配されるモード  
# 0:ラウンドロビン(デフォルト)  
# 1:ランダム、ハッシュコードによって分配  
file_distribute_path_mode = 0  

# file_distribute_to_pathが0(ラウンドロビン)に設定されている場合に有効です。  
# 書き込まれたファイル数がこの数に達すると、次のパスにローテーションします。  
# 最後のパスの後に最初のパス(00/00)にローテーションします。  
# デフォルト値は100  
file_distribute_rotate_count = 100  

# 大きなファイルを書き込むときにfsyncを呼び出す  
# 0:fsyncを呼び出さない  
# その他:書き込まれたバイトがこのバイト以上の場合にfsyncを呼び出します  
# デフォルト値は0(fsyncを呼び出さない)  
fsync_after_written_bytes = 0  

# ログバッファをディスクに同期する間隔(秒)  
# 0より大きい必要があります、デフォルト値は10秒  
sync_log_buff_interval = 1  

# binlogバッファ/キャッシュをディスクに同期する間隔(秒)  
# デフォルト値は60秒  
sync_binlog_buff_interval = 1  

# ストレージ統計情報をディスクに同期する間隔(秒)  
# デフォルト値は300秒  
sync_stat_file_interval = 300  

# スレッドスタックサイズ、512KB以上である必要があります  
# デフォルト値は512KB  
thread_stack_size = 512KB  

# ファイルをアップロードするためのソースサーバーとしての優先度。  
# この値が低いほど、アップロードの優先度が高くなります。  
# デフォルト値は10  
upload_priority = 10  

# NICエイリアスプレフィックス、Linuxではethのように、ifconfig -aで確認できます  
# 複数のエイリアスはカンマで区切ります。空の値はOSタイプによって自動的に設定されます  
# デフォルト値は空  
if_alias_prefix =  

# ファイルの重複をチェックする場合、trueに設定すると、FastDHTを使用してファイルインデックスを保存します  
# 1またはyes:チェックが必要  
# 0またはno:チェックしない  
# デフォルト値は0  
check_file_duplicate = 0  

# ファイル重複をチェックするためのファイル署名方法  
## hash:4つの32ビットハッシュコード  
## md5:MD5署名  
# デフォルト値はhash  
# V4.01以降  
file_signature_method = hash  

# ファイルインデックス(キー-値ペア)を保存するための名前空間  
# check_file_duplicateがtrue/onのときにこの項目を設定する必要があります  
key_namespace = FastDFS  

# FastDHTサーバーとの持続的接続を有効にするためにkeep_aliveを1に設定  
# デフォルト値は0(短い接続)  
keep_alive = 0  

# "#include filename"(二重引用符を含めない)ディレクティブを使用して  
# FastDHTサーバーリストを読み込むことができます。ファイル名が相対パスの場合、  
# 現在の/この設定ファイルのベースパスがベースパスです。  
# check_file_duplicateがtrue/onのときにFastDHTサーバーリストを設定する必要があります  
# 詳細はFastDHTのINSTALLを参照してください  
##include /home/yuqing/fastdht/conf/fdht_servers.conf  

# アクセスログに記録する場合  
# デフォルト値はfalse  
# V4.00以降  
use_access_log = false  

# アクセスログを毎日ローテーションする場合  
# デフォルト値はfalse  
# V4.00以降  
rotate_access_log = false  

# アクセスログのローテーション時間基準、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
# デフォルト値は00:00  
# V4.00以降  
access_log_rotate_time = 00:00  

# 古いアクセスログをgzipで圧縮する場合  
# デフォルト値はfalse  
# V6.04以降  
compress_old_access_log = false  

# アクセスログの圧縮日数  
# デフォルト値は1  
# V6.04以降  
compress_access_log_days_before = 7  

# エラーログを毎日ローテーションする場合  
# デフォルト値はfalse  
# V4.02以降  
rotate_error_log = false  

# エラーログのローテーション時間基準、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
# デフォルト値は00:00  
# V4.02以降  
error_log_rotate_time = 00:00  

# 古いエラーログをgzipで圧縮する場合  
# デフォルト値はfalse  
# V6.04以降  
compress_old_error_log = false  

# エラーログの圧縮日数  
# デフォルト値は1  
# V6.04以降  
compress_error_log_days_before = 7  

# アクセスログがこのサイズを超えたときにローテーションする  
# 0はログファイルサイズによってログファイルをローテーションしないことを意味します  
# デフォルト値は0  
# V4.02以降  
rotate_access_log_size = 0  

# エラーログがこのサイズを超えたときにローテーションする  
# 0はログファイルサイズによってログファイルをローテーションしないことを意味します  
# デフォルト値は0  
# V4.02以降  
rotate_error_log_size = 0  

# ログファイルの保持日数  
# 0は古いログファイルを削除しないことを意味します  
# デフォルト値は0  
log_file_keep_days = 0  

# 同期ファイル時に無効なレコードをスキップする場合  
# デフォルト値はfalse  
# V4.02以降  
file_sync_skip_invalid_record = false  

# 接続プールを使用する場合  
# デフォルト値はfalse  
# V4.05以降  
use_connection_pool = true  

# アイドル時間がこの時間を超える接続は閉じられます  
# 単位:秒  
# デフォルト値は3600  
# V4.05以降  
connection_pool_max_idle_time = 3600  

# binlogファイルをgzipで圧縮する場合  
# デフォルト値はfalse  
# V6.01以降  
compress_binlog = true  

# binlog圧縮時間を試みる、時間形式:Hour:Minute  
# Hourは0から23、Minuteは0から59  
# デフォルト値は01:30  
# V6.01以降  
compress_binlog_time = 01:30  

# ストアパスのマークをチェックして混乱を防ぐ場合  
# このパラメータをtrueに設定することをお勧めします  
# 2つのストレージサーバー(インスタンス)が特定の目的のために同じストアパスを使用する必要がある場合、  
# このパラメータをfalseに設定する必要があります  
# デフォルト値はtrue  
# V6.03以降  
check_store_path_mark = true  

# domain_nameが空の場合はこのストレージサーバーのIPアドレスを使用し、  
# それ以外の場合はこのドメイン名がtrackerサーバーによってリダイレクトされたURLに表示されます  
http.domain_name =  

# このストレージサーバー上のWebサーバーのポート  
http.server_port = 18888  

client 設定#

vim /etc/fdfs/client.conf  
# 修正が必要な内容は以下の通り  
base_path=/www/apps/fastdfs  
tracker_server=192.168.10.13:22122    # trackerサーバーのIPとポート、127.0.0.1は指定できません!!!  

完全な設定:

# 接続タイムアウト(秒)  
# デフォルト値は30秒  
# 注意:イントラネットネットワーク(LAN)では、2秒で十分です。  
connect_timeout = 5  

# ネットワークタイムアウト(秒)  
# デフォルト値は30秒  
network_timeout = 60  

# ログファイルを保存するためのベースパス  
#base_path = /home/yuqing/fastdfs  
base_path = /www/apps/fastdfs  

# tracker_serverは複数回発生する可能性があります、複数のtrackerサーバー用。  
# tracker_serverの値の形式は "HOST:PORT"、  
#   HOSTはホスト名またはIPアドレス、  
#   HOSTはカンマで区切られたデュアルIPまたはホスト名を持つことができます、  
#   デュアルIPは内部(イントラネット)IPと外部(エクストラネット)IP、  
#   または2つの異なるタイプの内部(イントラネット)IPである必要があります。  
#   例:192.168.2.100,122.244.141.46:22122  
#   別の例:192.168.1.10,172.17.4.21:22122  

#tracker_server = 192.168.0.196:22122  
tracker_server = 192.168.10.13:22122  

# syslogとしての標準ログレベル、大文字小文字を区別しない、値のリスト:  
### emergは緊急  
### alert  
### critは重大  
### error  
### warnは警告  
### notice  
### info  
### debug  
log_level = info  

# 接続プールを使用する場合  
# デフォルト値はfalse  
# V4.05以降  
use_connection_pool = false  

# アイドル時間がこの時間を超える接続は閉じられます  
# 単位:秒  
# デフォルト値は3600  
# V4.05以降  
connection_pool_max_idle_time = 3600  

# trackerサーバーからFastDFSパラメータを読み込む場合  
# V4.05以降  
# デフォルト値はfalse  
load_fdfs_parameters_from_tracker = false  

# IPアドレスの代わりにストレージIDを使用する場合  
# tracker.confと同じ  
# load_fdfs_parameters_from_trackerがfalseのときのみ有効  
# デフォルト値はfalse  
# V4.05以降  
use_storage_id = false  

# ストレージIDファイル名を指定、相対パスまたは絶対パスを使用できます  
# tracker.confと同じ  
# load_fdfs_parameters_from_trackerがfalseのときのみ有効  
# V4.05以降  
storage_ids_filename = storage_ids.conf  


#HTTP設定  
http.tracker_server_port = 80  

#HTTPの他の設定を含めるために "#include" ディレクティブを使用  
##include http.conf  

trackerstorage の起動#

pkill -9 fdfs  
fdfs_trackerd /etc/fdfs/tracker.conf && fdfs_storaged /etc/fdfs/storage.conf  

client テスト#

テスト:

# /usr/local/src/nginx-1.15.4.tar.gz はサーバーの絶対パスで、実際に存在するファイルに変更できます。  
# 保存後、テストを行い、IDが返されれば成功です。例:group1/M00/00/00/xx.tar.gz  
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz  
# 例えば:`fdfs_upload_file /etc/fdfs/client.conf /www/apps/fastdfs/Snipaste_2022-03-17_16-11-51.png`  

Snipaste20220328112017.png

[root@server1013 src]# fdfs_upload_file /etc/fdfs/client.conf /www/apps/fastdfs/Snipaste_2022-03-17_16-11-51.png  
group1/M00/00/00/wKgKDWJBKieAFy55AAA1IWpVuRE893.png  
[root@server1013 src]#  

Nginx アクセスの設定#

  1. 新しいウェブサイトを作成;

    Snipaste20220328112153.png

  2. 設定を選択し、リバースプロキシを追加;

    Snipaste20220328112331.png

  3. 設定ファイルを編集します。

    Snipaste20220328112428.png

#PROXY-START/
location ~/group[0-9]/ {
ngx_fastdfs_module;
}
#PROXY-END/
```

アクセス前に client テストで得られた結果のアドレス:wKgKDWJBKieAFy55AAA1IWpVuRE893.png (364×278)

Snipaste20220328121016.png

FAQ#

設定後にブラウザからアップロード結果にアクセスできない#

fastdfs-nginx の設定を確認し、nginx を再起動します。

vim /etc/fdfs/mod_fastdfs.conf  

/www/server/nginx/sbin/nginx -s stop  
/www/server/nginx/sbin/nginx -t  
/www/server/nginx/sbin/nginx  

参考資料#

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。