Linux-部署FastDFS分布式文件系统
一、安装 fastdfs 依赖包
- 解压缩 libfastcommon-master.zip
- 进入到 libfastcommon-master 的目录中
- 执行
./make.sh
- 执行
sudo ./make.sh install
二、安装 fastdfs
- 解压缩 fastdfs-master.zip
- 进入到 fastdfs-master 目录中
- 执行
./make.sh
- 执行
sudo ./make.sh install
三、配置跟踪服务器tracker
- 执行
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
- 在 /home/python/ 目录中创建目录 fastdfs/tracker,
mkdir –p /data/home/silence/FastDFS/fastdfs/tracker
- 编辑 /etc/fdfs/tracker.conf 配置文件
sudo vim /etc/fdfs/tracker.conf
,修改base_path=/data/home/silence/FastDFS/fastdfs/tracker
四、配置存储服务器 storage
1、执行sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2、在 /home/python/fastdfs/ 目录中创建目录 storage mkdir –p /data/home/silence/FastDFS/fastdfs/storage
3、编辑/etc/fdfs/storage.conf配置文件 sudo vim /etc/fdfs/storage.conf
,修改内容:
1 | base_path=/data/home/silence/FastDFS/fastdfs/storage |
五、启动 tracker 和 storage 服务
启动 tracker 服务:sudo service fdfs_trackerd start
启动 storage 服务:sudo service fdfs_storaged start
注意:这是可能报错 Failed to start fdfs_trackerd.service: Unit fdfs_trackerd.service not found 和Failed to start fdfs_trackerd.service: Unit fdfs_trackerd.service not found,只需重启虚拟机再次执行以上指令即可。
六、测试是否安装成功
1、sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2、编辑 /etc/fdfs/client.conf 配置文件 sudo vim /etc/fdfs/client.conf
修改内容:
1 | base_path=/data/home/silence/FastDFS/fastdfs/tracker |
3、上传文件测试:
fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件
说明:fdfs_upload_file
是上传文件的指令;上传时要指定客户端的配置文件;然后接待上传图片的路径。
例如:fdfs_upload_file /etc/fdfs/client.conf /data/home/silence/image/test.jpg
执行指令后会返回类似 group1/M00/00/00/wKhQgV7EpkiAJy0yAAKdSYpwz7Q877.jpg
的文件 id,则说明文件上传成功。
最后该文件以 group1/M00/00/00/wKhQgV7EpkiAJy0yAAKdSYpwz7Q877.jpg 的名字保存在/data/home/silence/FastDFS/fastdfs/storage/data
中。
七、安装 nginx(web服务器)以及 fastdfs_nginx_module
1、解压缩 nginx-1.8.1.tar.gz
2、解压缩 fastdfs_nginx_module
3、进入 nginx-1.8.1 目录中
4、执行sudo ./configure --prefix=/usr/local/nginx/ --add-module=/data/home/silence/Nginx/fastdfs-nginx-module/src --with-http_ssl_module
sudo make
sudo make install
5、sudo cp /data/home/silence/Nginx/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
6、sudo vi /etc/fdfs/mod_fastdfs.conf
,修改内容:
1 | connect_timeout = 10 |
7、sudo cp /data/home/silence/FastDFS/fastdfs-master/fastdfs-master/conf/http.conf /etc/fdfs/http.conf
8、sudo cp /data/home/silence/FastDFS/fastdfs-master/fastdfs-master/conf/mime.types /etc/fdfs/mime.types
9、sudo vi /usr/local/nginx/conf/nginx.conf
,在 http
部分中添加配置信息如下:
1 | server{ |
10、启动 nginx
sudo /usr/local/nginx/sbin/nginx
这时,可能会报错:
1 | src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=] |
这是由于将警告当成错误处理了。
解决方法:
进入到 nginx-1.8.1目录下(解压的目录),找到当前目录下找到 objs 文件夹,并进入,打开文件 Makefile,找到有一下内容的这行:
1 | CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g |
将 -Werror
去掉即可。
11、停止 nginx 服务
sudo /usr/local/nginx/sbin/nginx -s stop
使用 python 客户端上传测试
1、下载 fdfs_client-py-master.zip
。
2、进入 fdfs_client-py-master.zip
所在目录,执行 pip3 install fdfs_client-py-master.zip。
3、执行 python3
进入python
1 | from fdfs_client.client import Fdfs_client |
返回如下信息:
1 | getting connection |
说明上传成功。
查看上传图片详细信息:
1 | ret |
注意:
导入 fdfs 包时可能会报错:ModuleNotFoundError: No module named 'mutagen'
,这时,安装 mutagen:
1 | pip install mutagen |
再次导入 fdfs,若报错 ModuleNotFoundError: No module named 'mutagen._compat'
:
查看源码可知,_compat
文件不在 mutagen 文件夹下,而是在 mutagen/_senf
路径下,只需要修改 fdfs_client/utils.py:
1 | # from mutagen._compat import StringIO |
接下来可能还会报错:ModuleNotFoundError: No module named 'requests'
,再 pip 安装该包即可。