『壹』 java+fastdfs上傳下載文件
fastdfs客戶端使用(java-API)及安裝教程,支持防盜鏈(token)和縮略圖等功能,在原作者YuQing與yuqih發布的java客戶端基礎上進行了大量重構工作,便於Java工作者開發,企業級圖片伺服器搭建和使用。git地址:網頁鏈接
『貳』 fdfs文件服務環境搭建詳細教程
Linux環境搭建少不了FastDFS的安裝,本文記錄Linux環境下安裝fdfs的步驟。
將安裝包上傳至伺服器
環境安裝好的跳過此步驟
[圖片上傳失敗...(image-c15bdd-1652446961897)]
libfatscommon 是 FastDFS 分離出的一些公用函數包,解壓之後進入libfastcommon目錄,執行 ./make.sh 和 ./make.sh install
同上,進入解壓目錄執行執行 ./make.sh 和 ./make.sh install
編譯成功之後進入 /etc/fdfs ,會出現 client.conf.sample 客戶端文件、 storage.conf.sample 、 tracker.conf.sample 兩個基礎配置文件,將這三個文件復制
再將fastdfs-5.05下conf文件夾中的http.conf和mime.types拷貝到 /etc/fdfs/中供nginx訪問使用
[圖片上傳失敗...(image-45d78d-1652446961897)]
執行命令 vim /etc/fdfs/tracker.conf
base_path=/data/fastdfs/tracker
修改如下:
[圖片上傳失敗...(image-280bff-1652446961897)]
執行命令 service fdfs_trackerd start
啟動成功後,在 /data/fastdfs/tracker 中找到兩個新文件
[圖片上傳失敗...(image-8bcea-1652446961897)]
大致流程和tracker配置一樣
執行命令 vim /etc/fdfs/storage.conf ,修改內容:
store_path0=/data/fastdfs/file
tracker_server=192.168.18.125:22122
http.server_port=8086
日誌文件存儲路徑
[圖片上傳失敗...(image-e550a9-1652446961897)]
文件存儲路徑
[圖片上傳失敗...(image-23e2c1-1652446961897)]
填寫伺服器ip(雲伺服器填內答扒網ip)
[圖片上傳失敗...(image-6c8618-1652446961897)]
執行命令 service fdfs_storaged start
啟動成功後,在 /data/fastdfs/storage 中找到兩個新文件
[圖片上傳失敗...(image-49a113-1652446961897)]
執行 /usr/bin/fdfs_monitor /etc/fdfs/storage.conf ,成功如下
[圖行舉橡片上傳失敗...(image-f6a0ef-1652446961897)]
執行命令 vim /etc/fdfs/client.conf ,修改內容:
如圖所示
[圖片上傳失敗...(image-aa4a20-1652446961897)]
在 /data/fastdfs 下編寫一個測試文件
[圖片上傳失敗...(image-3e14e4-1652446961897)]
執行命令 /usr/bin/fdfs_upload_file /etc/檔旁fdfs/client.conf /data/fastdfs/test.txt
[圖片上傳失敗...(image-395d27-1652446961897)]
成功返迴文件路徑,如圖:
[圖片上傳失敗...(image-80da85-1652446961897)]
如果出現錯誤,請檢查(tracker.conf、storage.conf、client.conf)base_path、store_path0配置路徑是否正確路徑需要一致。
上述文件如果想要在web上查看,就需要配置nginx和fastdfs-nginx-mole模塊
進入fastdfs-nginx-mole-master/src中,執行命令 cp mod_fastdfs.conf /etc/fdfs /將mod_fastdfs.conf文件復制到/etc/fdfs/目錄下
執行命令 vim /etc/fdfs/mod_fastdfs.conf 修改 mod_fastdfs.conf 文件
[圖片上傳失敗...(image-38e7af-1652446961897)]
fastdfs-nginx-mole-master/src/config文件
進入到nginx文件夾中,執行命令 ./configure --add-mole=/data/soft/fastdfs-nginx-mole-master/src (mole後面是fastdfs-nginx-mole-master的解壓路徑)
然後安裝nginx,執行命令 make && make install ,安裝成功編輯nginx.conf
[圖片上傳失敗...(image-ad1b90-1652446961897)]
修改監聽埠為 8086 (和前面配置的埠一致),添加如下內容:
重啟nginx之後,開放指定埠
如果需要其他代理訪問,需要監聽配置這台伺服器的8086埠。
如果 unknown directive 「ngx_fastdfs_mole」 in /usr/local/nginx/conf/nginx.conf:151 ,可能是nginx一直是啟動的,必須要重啟nginx才可以, nginx -s reload 無效。
nginx和之前配置一樣
『叄』 如何安裝FastDFS
目前FastDFS支持類Unix系統 ,在Linux和FreeBSD下測試過,本文使用的是Ubuntu10.4,建議安裝之前先簡單了解一下FastDFS的原理 ,這對後繼的配置部分會有很好的理解。
一、准備工作-安裝libevent
FastDFS 內部綁定了 libevent 作為 http 伺服器 ,在V2.X版本必須安裝 libevent ,本文安裝的是V2.2版本,因此必須安裝libevent。(官方也推薦使用 http 方式下載 文件 )
如果已經安裝了 libevent,請確認安裝路徑是仿消檔 /usr , 因為 FastDFS 在編譯源程序時,需要到此目錄下查找一些依賴文件,否則編譯 FastDFS 會出錯 。如果不是,建議首先卸載 libevent ,然後安裝到 /usr 下。Ubuntu10.4默認是安裝了libevent,可以到軟體中心卸載掉然後按照下面介紹的方式安裝。
安裝步驟:
解壓 libevent ,然後進入解壓後的目錄分別執行:
Shell代碼
./configure --prefix=/usr
make clean;
make
make install
安裝libevent完成。
二、安裝 FastDFS
1、下載 FastDFS 源程序
2、備亂在 FastDFS_v4.05.tar.gz 所在文件夾下執行:
Shell代碼
sudo tar vxzf FastDFS_v4.05.tar.gz /home/soar/FastDFS
註: /home/soar/FastDFS 也可以是其他目錄,記住這是解壓目錄,以後用 %FastDFS% 表示)
3、由於要使用內置的 http 服務,因此編輯 %FastDFS%/make.sh 文件,找到
#WITH_HTTPD=1
修改成
WITH_HTTPD=1
以支持 http
4、進入 %FastDFS% 目錄,執行:
Shell代碼
sudo ./make.sh
5、在 %FastDFS% 目錄下,執行:
Shell代碼
sudo ./make.sh install
如果運行如上命令後,在命令行信息最後看到類似
Shell代碼
#ln -fs /usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
#ln -fs /usr/local/lib/libfdfsclient.so.1 /橋鉛usr/local/lib/libfdfsclient.so
sh ./fdfs_link_library.sh
恭喜你,已經安裝成功了!
FastDFS的配置文件在%FastDFS%/conf目錄下,其中包括
Client.conf 客戶端上傳配置文件
Storage.conf 文件存儲伺服器配置文件
Tracker.conf 負責均衡調度伺服器配置文件
http.conf http伺服器配置文件
配置文件需要根據伺服器環境的不同,進行不同的配置,具體可以參考FastDFS官方的安裝配置文檔http://code.google.com/p/fastdfs/wiki/Setup,以及FastDFS原理介紹文檔http://code.google.com/p/fastdfs/wiki/Overview
在本例中,Tracker Server,Storage Server都安裝在一台伺服器上,IP:10.0.2.15
1、配置及啟動Tracker Server
A、修改%FastDFS%/conf/tracker.conf文件,修改如下
#可以自己指定目錄位置,但目錄必須存在,用於存儲日誌及storage server等信息,否則tracker server無法啟動
Txt代碼
base_path=/home/yuqing/fastdfs -> base_path=/home/soar/fastdfs_tracker
#改成你想要的http埠,將來http下載文件的埠就是他了
Txt代碼
http.server_port=8080 -> http.server_port=8090
#http支持
Txt代碼
##include http.conf -> #include http.conf
#默認4GB,如果空間不足,建議調小,否則會報no free space的異常,無法正常啟動
Txt代碼
reserved_storage_space = 4GB -> reserved_storage_space = 1GB
#tracker server對storage server供服務的埠,使用默認的即可,也可以自定義
Txt代碼
port=22122
B、將http.conf文件拷貝到/etc/fdfs目錄下,執行
Shell代碼
sudo cp %FastDFS%/conf/http.conf /etc/fdfs/
註:為了支持http,必須將這個文件拷貝到此目錄,否則無法啟動,報param http.XXX not exist or is empty類似的錯誤
C、進入/usr/local/bin/目錄,啟動tracker伺服器,執行
Shell代碼
sudo fdfs_trackerd %FastDFS%/conf/tracker.conf
D、進入/home/soar/fastdfs_tracker/logs/trackerd.log查看tracker的啟動日誌,如果看到類似
Shell代碼
[2010-11-04 16:21:25] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_tracker, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s
[2010-11-04 16:21:25] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html
恭喜你,tracker server已經啟動成功!
2、配置及啟動Storage Server
A、修改%FastDFS%/conf/storage.conf文件,修改如下:
#可以自定義,但必須存在此目錄,用於存儲storage相關的log、group內的相關信息
Txt代碼
base_path=/home/yuqing/fastdfs -> /home/soar/fastdfs_storge
#文件的存儲位置,在一台storage server上可以指定多個存儲位置
Txt代碼
store_path0=/home/yuqing/fastdfs -> store_path0=/home/soar/fastdfs_storge
#必須指定
Txt代碼
group_name=group1
#修改成tracker server的IP和埠信息
Txt代碼
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
#http支持
Txt代碼
##include http.conf ->#include http.conf
B、進入/usr/local/bin/目錄,啟動storage伺服器,執行
Shell代碼
sudo fdfs_storaged %FastDFS%/conf/storage.conf
C、進入/home/soar/fastdfs_tracker/logs/storage.log查看storage伺服器啟動日誌,如果看到類似
Shell代碼
[2010-11-04 16:37:16] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_storge, store_path_count=1, subdir_count_per_path=256, group_name=group1, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=200ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=60s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_plicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
[2010-11-04 16:37:16] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
[2010-11-04 16:37:16] INFO - file: storage_param_getter.c, line: 48, storage_ip_changed_auto_adjust=1
[2010-11-04 16:37:19] INFO - file: tracker_client_thread.c, line: 274, successfully connect to tracker server 10.0.2.15:22122, as a tracker client, my ip is 10.0.2.15
恭喜你,storage server已經啟動成功!
經過前面的安裝、配置、啟動,馬上就可以看到FastDFS的效果了,我們先上傳一個文件,然後再通過http下載。
一、上傳文件
FastDFS安裝包中,自帶了客戶端程序,通過程序可以進行文件上傳。在使用這個客戶端程序之前,首先需要配置client.conf,然後再進行文件上傳及下載。
1、修改%FastDFS%/conf/client.conf文件,修改如下:
#可自定義,但此目錄必須存在,用於存放文件上傳log
Txt代碼
base_path=/home/yuqing/fastdfs-> base_path=/home/soar/fastdfs_tracker
Txt代碼
tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122
Txt代碼
http.tracker_server_port=8080 ->http.tracker_server_port=8090
#支持http
Txt代碼
##include http.conf ->#include http.conf
2、進入/usr/local/bin/目錄,上傳文件,執行
Txt代碼
sudo fdfs_test %FastDFS%/conf/client.conf upload a.txt
註:a.txt可以在/usr/local/bin/目錄下自己創建一個
如果命令行反饋類似如下:
則說明上傳文件成功。
關於fastdfs集群和備份配置
1、修改tracker.conf文件中store_lookup=2 平衡負載
2、修改tracker.conf文件中store_server=0 採用輪詢方式。
如果希望只使用一台文件存儲伺服器,其他二台做備份,則修改文件tracker_server為某台主機的IP,只啟動文件存儲伺服器的tracker,其他二台備份伺服器不需要啟動tracker。
如果希望三台伺服器集群使用,互相備份,比如:使用A機器存儲文件,這時候A機器會將文件同步到B機器和C機器,同理使用B機器存儲文件,則會同時將文件同步到A機器和C機器。這時候需要將所有的機器IP和埠號
都配置在storage.conf中,如下所示:
tracker_server=10.207.16.127:22122
tracker_server=10.207.16.129:22122