上一篇讲了,这篇文章主要描述如何安装、使用fastdfs-nginx-module和nginx实现通过Http方式访问FastDFS分布式文件系统中的文件。
FastDFS通过Tracker服务器将文件放在Storage服务器存储。但是同组之间的服务器需要复制文件有延迟的问题,假设Tracker服务器将文件上传到了192.168.1.80,并将文件ID返回给客户端。这时,后台会将这个文件复制到192.168.1.30,如果复制没有完成,客户端就用这个文件ID在192.168.1.30上获取文件,肯定会出现错误。fastdfs-nginx-module可以重定向连接到源服务器取文件,避免客户端由于复制延迟的问题,出现错误。(此说法来源于http://blog.itpub.net/29254281/viewspace-1288761/,不知道是否正确)
但是,从FastDFS v5.0.1开始,tracker server和storage server已经默认已经不支持Http访问。问过很多人,都是通过搭建nginx或Apache实现的Http访问。解决方法是,在每个存储服务(storage)都应该安装nginx和fastdfs_nginx_module模块,然后用单独一台nginx做反向代理。
安装方法
- 首先安装FastDFS存储服务器和客户端库 FastDFS版本应该>=2.09。 安装方法详见:
- 下载FastDFS-nginx-module源码包并解压,例如:
tar xzf fastdfs_nginx_module_v1.16.tar.gz
- 安装nginx的服务器 FastDFS nginx模块在nginx 0.8.53通测试通过,余庆的nginx安装在“/usr/local/nginx”。 进入nginx的源代码目录,编译和安装模块,如:
cd nginx-1.5.12./configure --add-module=/home/yuqing/fastdfs-nginx-module/srcmakemake install
如果提示下面错误,可以安装pcre模块:./configure: error: the HTTP rewrite module requires the PCRE library.You can either disable the module by using --without-http_rewrite_moduleoption, or install the PCRE library into the system, or build the PCRE librarystatically from the source with nginx by using --with-pcre=
option. sudo apt-get install pcre*
若安装时找不到上述依赖模块,使用–with-openssl=<openssl_dir>、–with-pcre=<pcre_dir>、–with-zlib=<zlib_dir>指定依赖的模块目录。如已安装过,此处的路径为安装目录;若未安装,则此路径为编译安装包路径,nginx将执行模块的默认编译安装。也可以使用类似下面的命令跳过指定模块的安装:
./configure --without-http_gzip_module --add-module=/home/cjx/libs/fastdfs-nginx-module-master/srcmakemake install
注意: 编译之前,可以在config 文件中更改FDFS_OUTPUT_CHUNK_SIZE和FDFS_MOD_CONF_FILENAME宏:
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
- 更改config文件“mod_fastdfs.conf”,将配置文件拷贝到“/etc/fdfs”
sudo cp /home/cjx/libs/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/
修改该配置文件:
group_name=group1tracker_server=192.168.2.163:22122store_path0=/data/fastdfs/storagebase_path=/data/fastdfs/storage
- 配置nginx的config文件,如nginx.conf,加上下面几行:
location /M00 { root /data/fastdfs/storage; ngx_fastdfs_module; }
-
如果在fastdfs-nginx模块的配置文件中指定了启动组名访问则需要改成下面的:
location /group1/M00 { root /data/fastdfs/storage; ngx_fastdfs_module; }
- 创建一个符号链接 ${fastdfs_base_path}/data/M00 到 ${fastdfs_base_path}/data,在“/data/fastdfs/storage”目录下创建软连接,将其链接到实际存放数据的目录:
ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00
关闭和启动nginx服务器
关闭和启动nginx可以使用下列命令:
/usr/local/nginx/sbin/nginx -s stop/usr/local/nginx/sbin/nginx