FastDFS在linux下的安裝和整合nginx實現上傳圖片和url訪問


安裝

FastDFS依賴libevent庫,需要安裝:

yum -y install libevent

安裝libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS運行所需要的一些基礎庫

上傳安裝包,解壓

tar -xf libfastcommonV1.0.7.tar.gz

進入解壓的文件夾編譯和安裝

 ./make.sh && ./make.sh install

將/usr/lib64目錄下的libfastcommon.os拷貝到/usr/lib目錄下

cp libfastcommon.so /usr/lib

FastDFS-Tracker安裝

上傳FastDFS_v5.05.tar.gz文件,解壓

tar -xf *.gz

編譯&安裝

進入FastDFS/

./make.sh && ./make.sh install

執行完成后,會將如下3個文件拷貝到/etc/fdfs目錄下,拷貝這個動作它自己會執行。

client.conf.sample

storage.conf.sample

tracker.conf.sample

進入/etc/fdfs把三個配置文件的.sample后綴都去掉

配置tracker

編輯tracker.conf文件

Base_path是日志和數據存儲目錄,需要修改為自己的路徑,

這里改成/home/FastDFS,然后在home目錄下創建FastDFS目錄

啟動tracker

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

檢查是否啟動

ps -ef | grep  tracker

設置開機啟動

進入

vi /etc/rc.local

添加啟動命令即可

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

FastDFS—storage安裝

Storage在同一台安裝tracker的機器上不需要進行安裝,只需要修改配置即可

如果沒有安裝,則必須安裝tracker

配置storage

到/etc/fdfs目錄,編輯storage.conf,修改storage相關配置

找到base_path=/home/yuqing/FastDFS改為:base_path=/home/FastDFS

//(fdfs_storage必須存在,沒有就創建,可以寫多個掛載磁盤)

找到store_path0=/home/yuqing/FastDFS改為:store_path0=/home/FastDFS/fdfs_storage

tracker_server=192.168.237.192:22122 ip改為本機ip,同樣有多個可以創建多個

不要忘了在/home/FastDFS下創建fdfs_storage文件夾

啟動storage

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

大概會啟動一分鍾

查看是否開啟成功

ps -ef | grep storage

設置開機啟動參考上面的tracker

本地上傳文件測試

首先配置/etc/fdfs/client.conf

修改client.conf2個參數

Base_path=/home/FastDFS

Tracker_server=192.168.174.130:22122//ip為本機ip

上傳一張圖片到linux

再通過命令上傳到fastdfs服務器

上傳成功會返回訪問地址,說明配置成功,不過暫時還無法訪問,需要和nginx整合才能通過瀏覽器直接訪問圖片

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/image/zookeeper.jpg 

1. Fastfdfs整合Nginx

為了通過http請求的方式去訪問storage里存儲的文件,我們可以通過給Nginx添加fastdfs-nginx-module模塊來實現,當然,使用nginx的主要目的是負載均衡及實現高可用。

安裝fastdfs-nginx-module

進入fastdfs-nginx-module/src,配置config

把有local的路徑的local刪除

配置mod_fastdfs.conf

需要修改的地方

tracker_server=192.168.237.192:22122(本機ip)
base_path=/home/FastDFS
store_path0=/home/FastDFS/fdfs_storage
url_have_group_name = true

mod_fastdfs.conf修改后拷貝到/etc/fdfs目錄下

再將usr/lib64目錄下的2個文件libfastcommon.so libfdfsclient.so

拷貝到usr/lib下

安裝nginx

安裝依賴

yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

指定安裝路徑和安裝fastdfs-nginx-module模塊

./configure --prefix=/usr/local/nginx/
./configure --add-module=/usr/local/app/fastDFS/fastdfs-nginx-module/src

然后直接安裝

make && make install

安裝完之后,會在local文件夾下面生成一個/usr/local/nginx,這個才是真正的文件路徑,那個安裝包只是用來安裝

拷貝/usr/local/app/fastDFS/FastDFS/conf下的http.conf和 mime.type到/etc/fdfs

啟動

/usr/local/nginx/sbin/nginx

關閉

 /usr/local/nginx/sbin/nginx -s stop

瀏覽器輸入localhost會看到nginx的歡迎界面

在nginx里面配置一個虛擬機

Location模塊里面標識以 /group1/M00開始的,交給 ngx_fastdfs_module模塊處理,root
指定了靜態文件根目錄

開啟80端口,重啟

再次上傳一張照片,訪問照片地址

后台上傳代碼實現

向fastDFS只需要三個參數

1.如下的tracker.conf

2.文件的字節數組

3.文件的后綴

配置文件

在resource下添加文件tracker.conf

內容是你的fastDFS的ip,我這里java代碼是在另外一台windows下寫的,所以屬於遠程調用

tracker_server=192.168.237.129:22122

字節數組和后綴

獲取從前端傳入的圖片

@ResponseBody
	@RequestMapping(value="/upload",method=RequestMethod.POST)
	public String upload1(@RequestParam(value="uploadFile")MultipartFile file,HttpSession session) throws Exception
	{
	
		suffix=file.getBytes();
		//獲取文件名稱后綴
		String filename = file.getOriginalFilename();
		String suffix = StringUtils.substringAfterLast(filename, ".");
		
	
		
	}
	

上傳

			//初始化tracker配置信息   tracker.conf的絕對路徑
			ClientGlobal.init("F:/git/mall-web/src/main/resources/resource/tracker.conf");

			//創建一個tracker客戶端
			TrackerClient tracker = new TrackerClient();
			
			//通過tracker客戶端獲取tracker鏈接信息
			TrackerServer trackerServer = tracker.getConnection();
			
			//定義一個Storage服務
			StorageServer storageServer = null;

			//通過trackerserver獲取Storage信息,然后創建一個Storage客戶端
			StorageClient storageClient = new StorageClient(trackerServer, storageServer);

			//文件上傳   參數1字節數組,參數2文件后綴名
			String[] fileIds = storageClient.upload_file(buffer,suffix,null);
			
			//有了fileIds可以得到文件的全路徑比如
			//http://192.168.174.128/group1/M00/00/00/wKiugFmSvSWAJLFdAAArGuxAxEw905.jpg
			//這樣數據庫就只需要存入一個這樣的路徑就可以了
			//FastDFS_Domain配置的域名,如果沒有配置可以直接寫遠程ip
			//得到訪問路徑
			String url ="www.mall.com"+fileIds[0]+"/"+fileIds[1];
			//String[] fileIds = storageClient.upload_file();
			////System.out.println("組名:" + fileIds[0]);
			//System.out.println("路徑: " + fileIds[1]);
			
			


免責聲明!

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



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