暫且不說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接口。
展示效果如下:
下一步可以掃描一下圖片,關注一下我的公眾號【程序新視界】,持續更新干貨內容,總有你想要的。
下一篇文章,我們將介紹如何通過Spring Boot來集成FastDFS,也是關於FastDFS的最后一篇文章。