2019-10-31 FastDFS + Nginx 实现文件的上传与下载

Mac系统下实现 FastDFS 文件的上传 与下载

在 Mac 下通过 Docker + FastDFS + Nginx 是不能够实现的
原因在于:虽然Docker中有network host模式,但是Docker是通过虚拟化的Linxu主机网络作为Host网络,所以无法使用Mac主机的网络,因此Docker中 FastDFS 无法链接到Mac 找不到storage下的资源。
解决办法:本机编译FastDFS实现文件的上传与下载。

准备

  1. 关闭mac的系统保护:Mac对关键目录进行了保护(例如:/bin, /usr/bin等)
    1. 重启系统,重启的过程中按住Command+R进入Recovery模式;
    2. 从菜单中选择“终端”或“Terminal”进入命令行模式;
    3. 输入命令csrutil disable关闭保护模式,然后输入reboot重启系统即可。
  2. 下载 libfastcommon,文件格式:zip,通过github下载
  3. 下载 fastdfs,文件格式:zip,通过github下载
  4. home 路径下的/Python/fastdfs/tracker 需要创建 sudo mkdir -p /Python/fastdfs/tracker
  5. 查询本机ip地址 ifconfig

注意: 第一个坑: mkdir: test: Operation not supported
解决: * 执行sudo vim /etc/auto_master,注释掉/home选项。 允许 --> 重启电脑

image.png

参考链接:mkdir: test: Operation not supported

了解文件存储路径

image.png

FastDFS 文件上传

配置跟踪服务器 Tracker
  1. 准备:libfastcommon-master.zip/fastdfs-master.zip 解压缩到 桌面;文件夹名称为libfastcommon-master/fastdfs-master
  2. 移动文件夹到 /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. 配置 跟踪服务器 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
配置跟踪服务器 Storage
  1. 拷贝storage配置文件
    sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
  2. 在/home/Python/fastdfs/ 目录下创建目录 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. 启动 tracker & storage
    sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
    sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
  1. 检查是否启动成功
    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

注意:
第二个坑: root 用户 暂时不影响,下面会说到

  1. 上述显示,则表示启动成功

测试上传

配置client文件
  1. 拷贝client配置文件
    sudo cp /etc/fdfs/client.confi.sample /etc/fdfs/client.conf
  1. 修改client配置文件
    sudo vi /etc/fdfs/client.conf
  1. 修改内容
    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 文件下载

准备
  1. 下载fastdfs-nginx-module-master.zip

  2. 下载nginx-1.17.5.tar.gz

  3. 分别解压缩到桌面,然后移动到 /usr/local

  4. 在 /usr/local下创建一个 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

注意:
第三个坑: 这里会出现问题 make: *** No rule to make target build, needed by default. Stop.

重要:
因为缺少安装先决条件

  1. Command Line Tools
    所以装完系统后,不管用不用Xcode 都得安装上,其次要安装 Command Line Tools
  2. GCC - GUN编译器集合
  3. PCRE 库
  4. zlib 库
  5. OpenSSL库
image.png

使用Homebrew来进行安装

再尝试下:make && make install

配置nginx
  1. 修改 mod_fastdfs.conf 配置

    sudo vi /usr/local/fastdfs-nginx-master/src/mod_fastdfs.conf

    #======修改以下内容========
    base_path=/home/Python/fastdfs/storage  #保存日志的路径
    tracker_server=本地IP:22122  #track_server配置的服务端口
    url_have_group_name=true        #url中是否包含group名称
    store_path0=/home/Python/fastdfs/storage  #指定文件存储路径(必须和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用户

启动 Nginx

1. 启动 nginx
shell /usr/local/nginx/sbin/nginx

2. 查看是否启动
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. 强制杀死进程
sudo kill -9 进程号

注意:通过强制杀死进程可处理该问题
关于nginx启动失败 [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)


相关博文连接地址:

Mac 安装 FastDFS
评价:完全按照博文操作上传功能绝对能够实现,本文在博文基础上进行了优化

nginx+fastdfs搭建图片服务器
评价:只作为思路参考

Django使用FastDFS小码弟关注赞赏支持
评价:关于添加 Nginx 模块建议看下

在Mac上如何安装FastDFS
评价:提供了很好的思路,了解到 Docker无法通过host来访问到Mac主机网络

nginx 安装时候报错:make: *** No rule to make target build', needed bydefault'. Stop.

回顾: 花费了一天的时间爬坑、花费了半天的时间进行回顾 和总结。希望可以帮助到你。

免责申明: 回顾今天的过程,文中的终端命令纯手敲,难免会有手残的时候。还请谅解

如果还有其他问题可以留言

如果解决了您的问题,可以进行打赏。尊重博主劳动成果,转发请注明出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容