如何搭建圖片服務器?


原文:https://cloud.tencent.com/developer/article/1459349

nginx日志管理 可參考https://www.cnblogs.com/crazylqy/p/6891991.html

 

系統: Centos7

環境和依賴

按照后面標注的方式下載或者安裝好需要的依賴

 

系統: centos7
yum install -y gcc-c++    #需要依賴gcc
yum install -y pcre  #用於支持rewrite模塊 pcre-8.32-17

yum install -y libevent   #FastDFS依賴libevent庫 libevent-2.0.21-4.el7.x86_64

yum install -y zlib zlib-devel    #用於支持gzip模塊 zlib-1.2.7-17.el7.x86_64

libfastcommon-master.zip   #libfastcommon包含了FastDFS運行所需要的一些基礎庫。https://github.com/happyfish100/libfastcommon/releases

fastdfs-nginx-module-master.zip    # https://codeload.github.com/happyfish100/fastdfs-nginx-module/zip/master

FastDFS版本:fastdfs-5.11.zip   #https://github.com/happyfish100/fastdfs/archive/V5.11.zip

Nginx版本:nginx-1.14.tar.gz :   #官網下載: http://nginx.org/en/download.html

 

安裝依賴

可以yum 安裝的先直接yum 安裝

將所有下載好依賴上傳至服務器/download目錄

安裝libfastcommon

unzip libfastcommon-1.0.39.zip
mv libfastcommon-1.0.39 /usr/local/libfastcommon
cd /usr/local/libfastcommon/
./make.sh    #編譯
./make.sh install    #安裝
# 檢查確認/usr/lib64 和 /usr/lib 目錄下都生成了 libfastcommon.so (有些版本可能/usr/lib下不會生成)
ls /usr/lib64 | grep libfastcommon.so
ls /usr/lib | grep libfastcommon.so

 

安裝tracker

FastDFS由跟蹤服務器(tracker server)、存儲服務器(storage server)和客戶端組成,

fastdfs的tracker 和storage其實用的是同一個服務,只是配置文件不同

Tracker是FastDFS的協調者,負責管理所有的storage server和group

storage server 負責存儲服務

 

cd /download
unzip fastdfs-5.11.zip
mv fastdfs-5.11 /usr/local/FastDFS
cd /usr/local/FastDFS/
./make.sh && ./make.sh install #編譯之后接着進行安裝
#確認安裝成功,沒有報錯后,拷貝配置文件到/etc/fdfs
cp /usr/local/FastDFS/conf/* /etc/fdfs/
#,進入/etc/fdfs 目錄, 如果沒有tracker.conf就拷貝一份tracker.conf.sample 去掉sample
cp tracker.conf.sample track.conf

 

配置tracker.conf ;


vi track.conf # 修改以下配置
#===============
base_path=/home/fastdfs #基礎目錄,以后的data 和日志目錄都會放在此目錄下
http.server_port=80 #配置http服務端口,這個端口跟后面nginx的監聽端口對應

創建目錄(目錄可能不存在)

mkdir /home/fastdfs

啟動tracker,運行如下命令:

/usr/bin/fdfs_trackerd /etc/fdfs/track.conf restart #檢查是否啟動成功:默認端口22122 ps -ef | grep fdfs #檢查/home/fastdfs下是否生成data / logs 兩個目錄 ls /home/fastdfs/

安裝storage

fastdfs的tracker 和storage其實用的是同一個服務,只是配置文件不同,我們只需要使用storage的配置文件啟動fastdfs即是storage服務

 

cd /etc/fdfs #如果沒有storage.conf 拷貝一份storage.conf.sample 命名為storage.conf cp storage.conf.sample storage.conf #配置storage.conf vi storage.conf #修改如下配置 #=========================== group_name=group1 #配置組名,同一個組的storage 互為備份 base_path=/home/fastdfs #基礎目錄 #store存放文件的位置(store_path), 可以配置多個, 記得創建路徑 store_path0=/home/fdfs_storage #如果有多個掛載磁盤則定義多個store_path,如下 #store_path1=..... #store_path2=...... #配置tracker服務器:IP,阿里雲服務器如果需要外部訪問請配置公網ip, 不要使用私有ip tracker_server=192.168.112.130:22122 #如果有多個tracker則配置多個tracker #tracker_server=192.168.112.131:22122 #配置http端口 http.server_port=80 #==========完=========== #創建 /home/fdfs_storage 目錄 mkdir -p /home/fdfs_storage #啟動storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart #查看啟動是否成功 fdfs_monitor /etc/fdfs/storage.conf #查看fdfs狀態 ps -ef | grep fdfs #查看目錄是否創建,/home/fdfs_storage/data 應該會自動生成256個文件夾 ls /home/fdfs_storage/data


測試上傳文件

fastdfs自帶了測試客戶端,我們可以使用它測試搭建是否成功

 

cd /etc/fdfs cp client.conf.sample client.conf vim client.conf #修改如下配置 #================= base_path=/home/fastdfs tracker_server=192.168.112.130:22122 #=======完======== #准備一張圖片進行測試 /usr/bin/fdfs_test /etc/fdfs/client.conf upload /download/123.jpg #一切正常的話會返回圖片地址等信息 example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg #檢查文件是否存在(文件名被存放在/home/fdfs_storage/data/00/00對應的目錄中),如果存在即是保存 OK,此時還無法使用http下載 cd /home/fdfs_storage/data/00/00 #查看是否存在wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg



FastDFS 和Nginx整合

單獨的Fastdfs 對http支持不好,所以作為圖片服務器,我們一般都會整合Nginx來支持圖片的http訪問

 

#解壓 fastdfs-nginx-module 到 /usr/local目錄下; cd /download unzip fastdfs-nginx-module-master.zip mv fastdfs-nginx-module-master /usr/local/fastdfs-nginx-module cd /usr/local/fastdfs-nginx-module/src


修改config文件,

# 將文件中的所有 /usr/local/ 路徑改為 /usr/ , #如果后面步驟中編譯nginx報錯把下面兩項做以下修改 ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"


拷貝配置文件到/etc/fdfs

 cp mod_fastdfs.conf  /etc/fdfs/ #修改 /etc/fdfs/mod_fastdfs.conf ; vi /etc/fdfs/mod_fastdfs.conf #======修改以下內容======== base_path=/home/fastdfs #保存日志的路徑 tracker_server=192.168.112.130:22122 #track_server配置的服務端口 url_have_group_name=true #url中是否包含group名稱 store_path0=/home/fdfs_storage #指定文件存儲路徑(必須和storage.conf配置相同)

檢查/usr/lib 和usr/lib64下是否有 libfdfsclient.so

ls  /usr/lib | grep libfdfsclient.so ls /usr/lib64 | grep libfdfsclient.so

創建nginx/client目錄

mkdir -p /var/temp/nginx/client

安裝nginx

tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/

編譯nginx,加入fastdfs模塊, 如果之前裝過nginx, 需要重新安裝

#進入解壓目錄, 日志目錄可自己定義,主要是add-modoule cd /usr/local/nginx-1.14.0 #添加模塊 ./configure \ --prefix=/usr/local/nginx \ --add-module=/usr/local/fastdfs-nginx-module/src

編譯並安裝

#在nginx1.14.0目錄下執行 make && make install

編譯后在/usr/local下生成nginx 目錄

修改nginx 配置文件

vi /usr/local/nginx/conf/nginx.conf #======添加配置=========== server { listen 80; server_name 192.168.112.130; location /group1/M00/ { root /home/fdfs_storage/data; ngx_fastdfs_module; } }

啟動nginx

 /usr/local/nginx/sbin/nginx #檢查是否啟動成功,不成功就去查看錯誤日志/var/log/nginx/error.log ps -ef | grep nginx

關閉防火牆或者添加對應端口

systemctl stop firewalld.service

再次上傳一張圖片

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /download/123.jpg

得到一個地址

 

example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg


在瀏覽器中訪問該圖片:

http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg

如果能夠正常瀏覽圖片那就大功告成,

#查看nginx 日志可以看到訪問記錄
tail -f  -n 100 /var/log/nginx/access.log

PS: nginx fastfds的安裝最坑的就是一些版本中動態鏈接的問題, 在使用之前一些版本的時候經常會出現各種問題,如果確實需要使用之前的版本可能就需要自己去改一些動態鏈接的指向了,如果沒有特別版本要求,使用本文的版本是沒有問題的

項目中如何使用fastdfs

使用方式比較簡單,我們就直接拿來一個示例代碼了

導入依賴(也可以自己去git編譯一個jar包出來)

        <dependency> <groupId>net.oschina.zcx7878</groupId> <artifactId>fastdfs-client-java</artifactId> <version>1.27.0.0</version> </dependency>

配置文件: fdfs.conf

# 連接tracker服務器超時時長
connect_timeout = 10 # socket連接超時時長 network_timeout = 30 # 文件內容編碼 charset = UTF-8 # tracker服務器端口 http.tracker_http_port = 80 http.anti_steal_token = no #密碼 http.secret_key = 123456 # tracker服務器IP和端口(可以寫多個) tracker_server = 192.168.58.128:22122


測試代碼

public class FastdfsTest { @Test public void testUpload() throws Exception { //1、把FastDFS提供的jar包添加到工程中 //2、初始化全局配置。加載一個配置文件。 ClientGlobal.init("F:\\wolf-shop\\src\\main\\resources\\fdfs.conf"); //3、創建一個TrackerClient對象。 TrackerClient trackerClient = new TrackerClient(); //4、創建一個TrackerServer對象。 TrackerServer trackerServer = trackerClient.getConnection(); //5、聲明一個StorageServer對象,null。 StorageServer storageServer = null; //6、獲得StorageClient對象。 StorageClient storageClient = new StorageClient(trackerServer, storageServer); //7、直接調用StorageClient對象方法上傳文件即可。 String[] result = storageClient.upload_file("F:\\redis_demo\\src\\main\\resources\\logo.png", "png", null); StringBuilder sb = new StringBuilder("http://192.168.112.130/"); sb.append(result[0]).append("/").append(result[1]); System.out.println("圖片訪問地址: "+sb.toString()); } }

項目中根據自己的實際使用情況抽取一個工具類用起來就方便了







 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM