Mac系統(tǒng)下實(shí)現(xiàn) FastDFS 文件的上傳 與下載
在 Mac 下通過 Docker + FastDFS + Nginx 是不能夠?qū)崿F(xiàn)的
原因在于:雖然Docker中有network host模式,但是Docker是通過虛擬化的Linxu主機(jī)網(wǎng)絡(luò)作為Host網(wǎng)絡(luò),所以無法使用Mac主機(jī)的網(wǎng)絡(luò),因此Docker中 FastDFS 無法鏈接到Mac 找不到storage下的資源。
解決辦法:本機(jī)編譯FastDFS實(shí)現(xiàn)文件的上傳與下載。
準(zhǔn)備
- 關(guān)閉mac的系統(tǒng)保護(hù):Mac對關(guān)鍵目錄進(jìn)行了保護(hù)(例如:/bin, /usr/bin等)
1. 重啟系統(tǒng),重啟的過程中按住Command+R進(jìn)入Recovery模式;
2. 從菜單中選擇“終端”或“Terminal”進(jìn)入命令行模式;
3. 輸入命令csrutil disable關(guān)閉保護(hù)模式,然后輸入reboot重啟系統(tǒng)即可。- 下載 libfastcommon,文件格式:zip,通過github下載
- 下載 fastdfs,文件格式:zip,通過github下載
- home 路徑下的/Python/fastdfs/tracker 需要?jiǎng)?chuàng)建
sudo mkdir -p /Python/fastdfs/tracker- 查詢本機(jī)ip地址
ifconfig
注意: 第一個(gè)坑: mkdir: test: Operation not supported
解決: * 執(zhí)行sudo vim /etc/auto_master,注釋掉/home選項(xiàng)。 允許 --> 重啟電腦

參考鏈接:mkdir: test: Operation not supported
了解文件存儲(chǔ)路徑

FastDFS 文件上傳
配置跟蹤服務(wù)器 Tracker
- 準(zhǔn)備:libfastcommon-master.zip/fastdfs-master.zip 解壓縮到 桌面;文件夾名稱為libfastcommon-master/fastdfs-master
- 移動(dòng)文件夾到
/usr/local;
cd Desktopsudo mv libfastcommon-master /usr/localsudo mv fastdfs-master /usr/localcd /usr/local/libfastcommon-master
./make.sh# 編譯./make.sh install# 安裝- 配置 跟蹤服務(wù)器 tracker
1. sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
2. 編輯配置文件`tracker.conf
3. `sudo vi /etc/fdfs/tracker.conf
4. 修改其中的bash_path
base_path=/home/Python/fastdfs/tracker
配置跟蹤服務(wù)器 Storage
- 拷貝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf- 在/home/Python/fastdfs/ 目錄下創(chuàng)建目錄
storage
mkdir /home/Python/fastdfs/storage- 編輯配置文件
storage.conf- 修改其中的 base_path, store_path0,tracker_server
base_path=/home/Python/fastdfs/storage
store_path0=/home/Python/fastdfs/storage
tracker_server=Mac的IP地址:22122- 啟動(dòng) tracker & storage
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
- 檢查是否啟動(dòng)成功
ps aux | grep fdfs
root 1699 0.0 0.4 4366520 66828 ?? S 9:21下午 0:02.77 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
root 1694 0.0 0.0 4314496 992 ?? S 9:20下午 0:02.71 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
lofoer 4055 0.0 0.0 4268056 812 s001 S+ 1:09上午 0:00.00 grep fdfs
注意:
第二個(gè)坑: root 用戶 暫時(shí)不影響,下面會(huì)說到
- 上述顯示,則表示啟動(dòng)成功
測試上傳
配置client文件
- 拷貝client配置文件
sudo cp /etc/fdfs/client.confi.sample /etc/fdfs/client.conf
- 修改client配置文件
sudo vi /etc/fdfs/client.conf
- 修改內(nèi)容
base_path=/home/Python/fastdfs/tracker tracker_server=Mac的IP地址:22122
- 上傳文件測試
fdfs_upload_file /etc/fdfs/client.conf 要上傳文件的路徑
如果返回類似group1/M00/00/00/wKgCZl0OIFWAZOVMAABwSY4nz_Q55.jpeg的文件id則說明文件上傳成功。
查看文件:
cd /home/Python/fastdfs/storage/data/00/00wKgCZl0OIFWAZOVMAABwSY4nz_Q55.jpg
查找
sudo find . -name 'wKgCZl0OIFWAZOVMAABwSY4nz_Q55.jpg'
FastDFS + Nginx 文件下載
準(zhǔn)備
下載fastdfs-nginx-module-master.zip
下載nginx-1.17.5.tar.gz
分別解壓縮到桌面,然后移動(dòng)到
/usr/local-
在 /usr/local下創(chuàng)建一個(gè) nginx文件夾
cd /usr/loca/nginx-1.17.5 ./configure \ > --prefix=/usr/local/nginx\ > --add-module=/usr/local/fastdfs-nginx-module-master/src添加fastdfs-nginx模塊
編譯并安裝
make && make install
注意:
第三個(gè)坑: 這里會(huì)出現(xiàn)問題 make: *** No rule to make target build, needed by default. Stop.
重要:
因?yàn)槿鄙侔惭b先決條件
- Command Line Tools
所以裝完系統(tǒng)后,不管用不用Xcode 都得安裝上,其次要安裝 Command Line Tools - GCC - GUN編譯器集合
- PCRE 庫
- zlib 庫
- OpenSSL庫

使用Homebrew來進(jìn)行安裝
再嘗試下:make && make install
配置nginx
-
修改 mod_fastdfs.conf 配置
sudo vi /usr/local/fastdfs-nginx-master/src/mod_fastdfs.conf#======修改以下內(nèi)容======== base_path=/home/Python/fastdfs/storage #保存日志的路徑 tracker_server=本地IP:22122 #track_server配置的服務(wù)端口 url_have_group_name=true #url中是否包含group名稱 store_path0=/home/Python/fastdfs/storage #指定文件存儲(chǔ)路徑(必須和storage.conf配置相同) -
拷貝配置文件
/usr/local/fastdfs-nginx-master/src/mod_fastdfs.conf至/etc/fdfs/mod_fastdfs.conf
image.png
-
http.conf & mime.types
通過 sudo find . -name 'http.conf'找到 http.conf & mime.types 的全路徑
拷貝到 /etc/fdfs/http.conf ; /etc/fdfs/mime.types
image.png
-
編輯 nginx.conf 文件
sudo vi /usr/local/nginx/conf/nginx.confserver { listen 8989; server_name 172.20.10.2; location /group1/M00/ { root /home/Python/fastdfs/storage/data/; ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }image.png
??注意:這里的root就是上文中的root用戶
啟動(dòng) Nginx
1. 啟動(dòng) nginx
shell /usr/local/nginx/sbin/nginx
2. 查看是否啟動(dòng)
shell ps aux | grep nginx
3. 查看nginx是否能夠顯示
**`http://172.20.10.2:8989`**

4. 查看上傳成功的文件
http://172.20.10.2:8989/ group1/M00/00/00/CtM3BVnij5-AQyvAAAHc1z_-Xc4112.jpg
5. 使用lsof 來查看被占用的端口
sudo lsof -i -n -P | grep 8989
sudo lsof -i -n -P | grep nginx
6. 強(qiáng)制殺死進(jìn)程
sudo kill -9 進(jìn)程號
注意:通過強(qiáng)制殺死進(jìn)程可處理該問題
關(guān)于nginx啟動(dòng)失敗 [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
相關(guān)博文連接地址:
Mac 安裝 FastDFS
評價(jià):完全按照博文操作上傳功能絕對能夠?qū)崿F(xiàn),本文在博文基礎(chǔ)上進(jìn)行了優(yōu)化
nginx+fastdfs搭建圖片服務(wù)器
評價(jià):只作為思路參考
Django使用FastDFS小碼弟關(guān)注贊賞支持
評價(jià):關(guān)于添加 Nginx 模塊建議看下
在Mac上如何安裝FastDFS
評價(jià):提供了很好的思路,了解到 Docker無法通過host來訪問到Mac主機(jī)網(wǎng)絡(luò)
nginx 安裝時(shí)候報(bào)錯(cuò):make: *** No rule to make target build', needed bydefault'. Stop.
回顧: 花費(fèi)了一天的時(shí)間爬坑、花費(fèi)了半天的時(shí)間進(jìn)行回顧 和總結(jié)。希望可以幫助到你。
免責(zé)申明: 回顧今天的過程,文中的終端命令純手敲,難免會(huì)有手殘的時(shí)候。還請諒解
如果還有其他問題可以留言
如果解決了您的問題,可以進(jìn)行打賞。尊重博主勞動(dòng)成果,轉(zhuǎn)發(fā)請注明出處


