1. 程式人生 > >阿里雲伺服器搭建FTP圖片伺服器[圖文詳解]

阿里雲伺服器搭建FTP圖片伺服器[圖文詳解]

FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。

Tracker 用來負載均衡與排程   

Storage 儲存圖片  

1.1 檔案上傳流程

1.2 檔案下載流程

1.3 上傳檔案的檔名

客戶端上傳檔案後儲存伺服器將檔案ID返回給客戶端,此檔案ID用於以後訪問該檔案的索引資訊。

檔案索引資訊包括:組名,虛擬磁碟路徑,資料兩級目錄,檔名。

 n 組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後有storage伺服器返回,需要客戶端自行儲存。

n 虛擬磁碟路徑:storage配置的虛擬路徑,與磁碟選項store_path*對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。

n 資料兩級目錄:storage伺服器在每個虛擬磁碟路徑下建立的兩級目錄,用於儲存資料檔案。

檔名:與檔案上傳時不同。是由儲存伺服器根據特定資訊生成,檔名包含:源儲存伺服器IP地址、檔案建立時間戳、檔案大小、隨機數和檔案拓展名等資訊。

1.4 FastDFS搭建

可以使用一臺虛擬機器來模擬,只有一個Tracker、一個Storage服務。

配置nginx訪問圖片。

1需要的工具  

FastDFS_v5.05.tar.gz

fastdfs-nginx-module_v1.16.tar.gz

libfastcommon-1.0.7.tar.gz

2 安裝fastdfs之前先安裝libevent工具包  

如果沒有gcc環境,需要安裝gcc:

yum install gcc-c++

Fastdfs依賴libevent庫,需要安裝

yum -y install libevent

3 先安裝libfastcommon-1.0.7

a) 解壓縮

b) ./make.sh

c) ./make.sh install

進入usr下面

把lib64/libfastcommon.so  拷貝到lib下面

4 安裝tracker檔案

a) 解壓縮 FastDFS_v5.05.tar.gz

b) ./make.sh

c) ./make.sh install

會在usr/lib  生成一坨fdfs_*的檔案  

 d).把/root/FastDFS/conf配置檔案都要放在/etc/fdfs下面

cp * /etc/fdfs/

e). 配置/etc/fdfs/tracker.conf

需要修改上述路徑為自己配置的路徑 /home/fdfs/tracker

F) 啟動tracker

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

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart  (重啟)

5 安裝storage 服務

1)如果在不同的伺服器安裝,第四部1~4步需要重新執行

2)修改/etc/fdfs/storage.conf檔案

第一個地方:

第二個地方

第三個地方

3) 啟動storage服務

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

6 測試服務  

a) 修改配置檔案/etc/fdfs/client.conf

建立 /home/fastdfs/client

測試

/usr/bin/fdfs_test /etc/fdfs/client.conf upload /root/FastDFS/conf/anti-steal.jpg

會返回上述的一個圖片路徑   拷貝進瀏覽器發現不好使

7 搭建nginx提供的http服務  

可以使用官方提供的nginx外掛,要使用nginx外掛需要重新編譯  

1 解壓壓縮包fastdfs-nginx-module_v1.16.tar.gz

2 修改/root/fastdfs-nginx-module/src/config檔案 把其中的local去掉

3 對nginx重新config

./configure \

--prefix=/usr/local/nginx \

--pid-path=/var/run/nginx/nginx.pid \

--lock-path=/var/lock/nginx.lock \

--error-log-path=/var/log/nginx/error.log \

--http-log-path=/var/log/nginx/access.log \

--with-http_gzip_static_module \

--http-client-body-temp-path=/var/temp/nginx/client \

--http-proxy-temp-path=/var/temp/nginx/proxy \

--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \

--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \

--http-scgi-temp-path=/var/temp/nginx/scgi \

--add-module=/root/fastdfs-nginx-module/src

4 將/usr/lib64/libfdfsclient.so 拷貝到/usr/lib   如果不拷貝則會報錯

5  make

6  make install

7  將/root/fastdfs-nginx-module/src/mod_fastdfs.conf 複製到/etc/fdfs下面  並編輯

8 nginx的配置

在nginx的配置檔案(conf裡面的 vim nginx.conf)中新增一個Server:

server {

        listen       80;

        server_name 39.106.51.32; ---對應我們的IP或者阿里雲的公網IP

        location /group1/M00/{

                #root /home/FastDFS/fdfs_storage/data;

                ngx_fastdfs_module;

        }

}

圖片伺服器的使用  

1 把FastDFS提供的jar包新增到工程中  

2 初始化全域性配置,載入一個配置檔案

3 建立一個TrackerClient物件

4 建立一個TrackerServer物件

5 宣告一個StorageServer物件

6 獲得StorageClient物件

7 直接呼叫StorageClient物件方法上傳檔案  

在專案中如何上傳檔案  

Service

@Override

public String updateFile(MultipartFile book_image)  {

try {

String fileName = book_image.getOriginalFilename();

System.out.println(fileName);

ClientGlobal.init("E:\\yulei  xiangmu\\ssm_book\\config\\client.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[] strings = storageClient.upload_file(book_image.getBytes(), "jpg", null);

String url = "";

for(String str : strings)

{

url += str + "/";

}

url = "http://192.168.11.132/" + url.substring(0,url.lastIndexOf("/"));

return url;

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

Controller

@RequestMapping("/addBook1.action")

public String insert1(Book book,MultipartFile book_image) throws IllegalStateException, IOException{

PictureService pictureService = new PictureServiceImpl();

String url = pictureService.updateFile(book_image);

book.setBookpic(url);

bookService.insertBook(book);

return "redirect:findAll.action";

}

iptables -L;iptables -F;service iptables stop    關閉防火牆

相關推薦

no