2019-10-31 FastDFS + Nginx 實(shí)現(xiàn)文件的上傳與下載

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)備

  1. 關(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)即可。
  2. 下載 libfastcommon,文件格式:zip,通過github下載
  3. 下載 fastdfs,文件格式:zip,通過github下載
  4. home 路徑下的/Python/fastdfs/tracker 需要?jiǎng)?chuàng)建 sudo mkdir -p /Python/fastdfs/tracker
  5. 查詢本機(jī)ip地址 ifconfig

注意: 第一個(gè)坑: mkdir: test: Operation not supported
解決: * 執(zhí)行sudo vim /etc/auto_master,注釋掉/home選項(xiàng)。 允許 --> 重啟電腦

image.png

參考鏈接:mkdir: test: Operation not supported

了解文件存儲(chǔ)路徑

image.png

FastDFS 文件上傳

配置跟蹤服務(wù)器 Tracker
  1. 準(zhǔn)備:libfastcommon-master.zip/fastdfs-master.zip 解壓縮到 桌面;文件夾名稱為libfastcommon-master/fastdfs-master
  2. 移動(dòng)文件夾到 /usr/local;
    1. cd Desktop
    2. sudo mv libfastcommon-master /usr/local
    3. sudo mv fastdfs-master /usr/local
  3. cd /usr/local/libfastcommon-master
    1. ./make.sh # 編譯
    2. ./make.sh install # 安裝
  4. 配置 跟蹤服務(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
  1. 拷貝storage配置文件
    sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  2. 在/home/Python/fastdfs/ 目錄下創(chuàng)建目錄 storage
    mkdir /home/Python/fastdfs/storage
  3. 編輯配置文件storage.conf
  4. 修改其中的 base_path, store_path0,tracker_server
    base_path=/home/Python/fastdfs/storage
    store_path0=/home/Python/fastdfs/storage
    tracker_server=Mac的IP地址:22122
  5. 啟動(dòng) tracker & storage
    sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
    sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
  1. 檢查是否啟動(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ì)說到

  1. 上述顯示,則表示啟動(dòng)成功

測試上傳

配置client文件
  1. 拷貝client配置文件
    sudo cp /etc/fdfs/client.confi.sample /etc/fdfs/client.conf
  1. 修改client配置文件
    sudo vi /etc/fdfs/client.conf
  1. 修改內(nèi)容
    base_path=/home/Python/fastdfs/tracker tracker_server=Mac的IP地址:22122
  1. 上傳文件測試
    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)備
  1. 下載fastdfs-nginx-module-master.zip

  2. 下載nginx-1.17.5.tar.gz

  3. 分別解壓縮到桌面,然后移動(dòng)到 /usr/local

  4. 在 /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模塊

  5. 編譯并安裝
    make && make install

注意:
第三個(gè)坑: 這里會(huì)出現(xiàn)問題 make: *** No rule to make target build, needed by default. Stop.

重要:
因?yàn)槿鄙侔惭b先決條件

  1. Command Line Tools
    所以裝完系統(tǒng)后,不管用不用Xcode 都得安裝上,其次要安裝 Command Line Tools
  2. GCC - GUN編譯器集合
  3. PCRE 庫
  4. zlib 庫
  5. OpenSSL庫
image.png

使用Homebrew來進(jìn)行安裝

再嘗試下:make && make install

配置nginx
  1. 修改 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配置相同)
    
  2. 拷貝配置文件/usr/local/fastdfs-nginx-master/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf

    image.png

  1. http.conf & mime.types
    通過 sudo find . -name 'http.conf'找到 http.conf & mime.types 的全路徑
    拷貝到 /etc/fdfs/http.conf ; /etc/fdfs/mime.types


    image.png
  1. 編輯 nginx.conf 文件

    sudo vi /usr/local/nginx/conf/nginx.conf

    server {
                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`**
image.png

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ā)請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容