FastDFS基於Docker安裝,免采坑版


暫且不說Docker在生產環境的性能如何,單就在學習新技術的過程中能夠快速構建環境這一項來說,就值得推薦你嘗試使用。本文帶大家基於Docker來安裝FastDFS服務。

即便你對FastDFS的安裝不感興趣,也可以學習一下Docker安裝軟件的過程(基本通用),是提高學習效率的法寶之一。

如果想補習一下FastDFS的原理,請參考《文件管理系統FastDFS原理詳解》,有助於下面內容的理解和學習。

Docker安裝FastDFS

關於Docker的安裝不同的操作系統有不同的安裝方法,這里就不再贅述,默認你的電腦或服務器上已經安裝好了Docker,並已啟動。

我們來看一下Docker庫里面已經存在了哪些鏡像可供使用。執行以下命令(如果非管理員權限則可能需要使用sudo):

bogon:~ zzs$ docker search fastdfs
NAME                           DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
season/fastdfs                 FastDFS                                         66
luhuiguo/fastdfs               FastDFS is an open source high performance d…   25                                      [OK]
ygqygq2/fastdfs-nginx          整合了nginx的fastdfs                                20                                      [OK]
morunchang/fastdfs             A FastDFS image                                 19
delron/fastdfs                                                                 12
moocu/fastdfs                  fastdfs5.11                                     9
qbanxiaoli/fastdfs             FastDFS+FastDHT單機版                              8                                       [OK]
……

如果你是安裝其他的軟件,也可同樣通過docker search命令來進行查找。

這里采用名字為delron/fastdfs的鏡像,當然你也可以選擇其他的鏡像,配置會有所不同,有些鏡像內沒有Nginx相關配置。

那么,我們就把它pull下來吧。

docker pull delron/fastdfs

構建Tracker容器

使用docker鏡像構建tracker容器,用於啟動跟蹤服務器,起到調度的作用。

docker run -d --network=host --name tracker -v /Users/zzs/develop/temp/tracker:/var/fdfs delron/fastdfs tracker

上面的啟動命令是在Linux下,如果是Mac或Windows操作系統network=host(容器與主機享受相同的network namespace)會失效,此時需要指定對應的端口映射。本教程的Docker宿主機為Mac。

docker run -d --name tracker -p 22122:22122 -v /Users/zzs/develop/temp/tracker:/var/fdfs delron/fastdfs tracker

默認tracker是監聽在22122端口的。

其中-v參數將本地的目錄與容器中的/var/fdfs目錄進行掛載。

這里可以看到tracker服務已經啟動完成。

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                     NAMES
15bfca8b94eb        delron/fastdfs      "/usr/bin/start1.sh …"   4 seconds ago       Up 3 seconds        8080/tcp, 8888/tcp, 23000/tcp, 0.0.0.0:22122->22122/tcp   tracker

構建Storage容器

使用docker鏡像構建storage容器,用於啟動存儲服務器,提供容量和備份服務。

在執行下面命令時特別需要提醒的時,對應的IP地址,需要修改為tracker服務的IP地址,由於是在同一台電腦上操作,這里使用本機的內網地址即可,22122是tracker對應的端口。

示例,下面命令需要替換IP地址。

docker run -d --network=host --name storage -e TRACKER_SERVER=ip:22122 -v /Users/zzs/develop/temp/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

替換IP地址之后對應Mac下的的具體執行操作:

docker run -d --name storage -p 8888:8888 -p 23000:23000 -e TRACKER_SERVER=192.168.43.143:22122 -v /Users/zzs/develop/temp/storage:/var/fdfs -e GROUP_NAME=group1 delron/fastdfs storage

其中8888為Nginx對應的訪問端口,23000是storage服務端口。

此時可查看docker的服務情況:

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                                   NAMES
2bc9f8268eda        delron/fastdfs      "/usr/bin/start1.sh …"   5 seconds ago       Up 4 seconds        8080/tcp, 0.0.0.0:8888->8888/tcp, 22122/tcp, 0.0.0.0:23000->23000/tcp   storage
15bfca8b94eb        delron/fastdfs      "/usr/bin/start1.sh …"   2 minutes ago       Up 2 minutes        8080/tcp, 8888/tcp, 23000/tcp, 0.0.0.0:22122->22122/tcp                 tracker

修改配置

經過上面的步驟,tracker和storage都啟動完成。我們可以進入對應的docker容器查看一下默認的配置情況。

進入docker的命令為:

docker exec -it 2bc9f8268eda bash

其中參數值“2bc9f8268eda”為我們上面看到的要進入的容器的CONTAINER ID。

先進入storage,查看其對應配置文件中關於http訪問的配置,配置文件在/etc/fdfs目錄下的storage.conf。在最后一行可以看到如下配置:

# the port of the web server on this storage server
http.server_port=8888

也就是說,這個docker鏡像中默認監聽的是8888端口,當然此配置是需要修改的。如果修改為其他端口,對應的Nginx配置也需要修改。

那么Nginx配置在哪里呢?也在當前容器當中。Nginx配置文件的根目錄為:

/usr/local/nginx/conf/

可以對其下的nginx.conf進行查看和修改。先來看一下默認配置:

server {
    listen       8888;
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root html;
    }
}

上面是關於server的配置,端口與storage的端口一一對應。如果需要修改時兩個同步修改。

通過上面的操作你會發現默認FastDFS會需要開啟8888、23000、22122端口,如果在Linux操作系統下,注意防火牆對對應端口的開放。

測試一下

經過上面的步驟已經完成了FastDFS的安裝和配置,下面我們來放一張圖片驗證一下。

首先,將一張圖片放在本機掛載目錄/Users/zzs/develop/temp/storage下(上面命令中用到的目錄)。

然后,進入storage容器,進入/var/fdfs目錄,執行如下命令:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf weixin.jpg

其中wenxin.jpg是前面存放在本機storage目錄下的圖片的名稱。

相關執行命令及目錄:

[root@2bc9f8268eda fdfs]# pwd
/var/fdfs
[root@2bc9f8268eda fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf weixin.jpg
group1/M00/00/00/rBEAA18X7ZWAfAPiAABrsFVlX6U142.jpg

此時,文件已經上傳成功,會返回在storage存儲文件的路徑信息。

通過url訪問http://ip:8888/group1/M00/00/00/rBEAA18X7ZWAfAPiAABrsFVlX6U142.jpg,即可查看到圖片。這里ip替換成localhost或127.0.0.1接口。

展示效果如下:

image

下一步可以掃描一下圖片,關注一下我的公眾號【程序新視界】,持續更新干貨內容,總有你想要的。

下一篇文章,我們將介紹如何通過Spring Boot來集成FastDFS,也是關於FastDFS的最后一篇文章。


程序新視界:精彩和成長都不容錯過

程序新視界-微信公眾號


免責聲明!

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



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