Mac系统下实现 FastDFS 文件的上传 与下载
在 Mac 下通过 Docker + FastDFS + Nginx 是不能够实现的
原因在于:虽然Docker中有network host模式,但是Docker是通过虚拟化的Linxu主机网络作为Host网络,所以无法使用Mac主机的网络,因此Docker中 FastDFS 无法链接到Mac 找不到storage下的资源。
解决办法:本机编译FastDFS实现文件的上传与下载。
准备
- 关闭mac的系统保护:Mac对关键目录进行了保护(例如:/bin, /usr/bin等)
1. 重启系统,重启的过程中按住Command+R进入Recovery模式;
2. 从菜单中选择“终端”或“Terminal”进入命令行模式;
3. 输入命令csrutil disable关闭保护模式,然后输入reboot重启系统即可。
- 下载 libfastcommon,文件格式:zip,通过github下载
- 下载 fastdfs,文件格式:zip,通过github下载
- home 路径下的/Python/fastdfs/tracker 需要创建
sudo mkdir -p /Python/fastdfs/tracker
- 查询本机ip地址
ifconfig
注意: 第一个坑: mkdir: test: Operation not supported
解决: * 执行sudo vim /etc/auto_master,注释掉/home选项。 允许
--> 重启电脑
参考链接: mkdir: test: Operation not supported
了解文件存储路径
FastDFS 文件上传
配置跟踪服务器 Tracker
- 准备:libfastcommon-master.zip/fastdfs-master.zip 解压缩到 桌面;文件夹名称为libfastcommon-master/fastdfs-master
- 移动文件夹到
/usr/local
;
cd Desktop
sudo mv libfastcommon-master /usr/local
sudo mv fastdfs-master /usr/local
cd /usr/local/libfastcommon-master
./make.sh
# 编译./make.sh install
# 安装- 配置 跟踪服务器 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
- 拷贝storage配置文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- 在/home/Python/fastdfs/ 目录下创建目录
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
- 启动 tracker & storage
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
- 检查是否启动成功
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 用户
暂时不影响,下面会说到
- 上述显示,则表示启动成功
测试上传
配置client文件
- 拷贝client配置文件
sudo cp /etc/fdfs/client.confi.sample /etc/fdfs/client.conf
- 修改client配置文件
sudo vi /etc/fdfs/client.conf
- 修改内容
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 文件下载
准备
下载fastdfs-nginx-module-master.zip
下载nginx-1.17.5.tar.gz
分别解压缩到桌面,然后移动到
/usr/local
-
在 /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模块
编译并安装
make && make install
注意:
第三个坑: 这里会出现问题 make: *** No rule to make target build, needed by default. Stop.
重要:
因为缺少安装先决条件
- Command Line Tools
所以装完系统后,不管用不用Xcode 都得安装上,其次要安装 Command Line Tools - GCC - GUN编译器集合
- PCRE 库
- zlib 库
- OpenSSL库
使用Homebrew来进行安装
再尝试下:make && make install
配置nginx
-
修改 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配置相同)
-
拷贝配置文件
/usr/local/fastdfs-nginx-master/src/mod_fastdfs.conf
至/etc/fdfs/mod_fastdfs.conf
-
http.conf & mime.types
通过 sudo find . -name 'http.conf'找到 http.conf & mime.types 的全路径
拷贝到 /etc/fdfs/http.conf ; /etc/fdfs/mime.types
-
编辑 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; } }
注意:这里的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`**
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 by
default'. Stop.
回顾: 花费了一天的时间爬坑、花费了半天的时间进行回顾 和总结。希望可以帮助到你。
免责申明: 回顾今天的过程,文中的终端命令纯手敲,难免会有手残的时候。还请谅解
如果还有其他问题可以留言
如果解决了您的问题,可以进行打赏。尊重博主劳动成果,转发请注明出处