nginx相关软件
nginx-1.10.1
http://nginx.org/en/download.html
nginx清除缓存模块 ngx_cache_purge-2.3
http://labs.frickle.com/nginx_ngx_cache_purge/
pcre-8.36
https://sourceforge.net/projects/pcre/files/pcre/8.36/
zlib库
http://zlib.net/zlib-1.2.8.tar.gz
FastDFS相关软件
FastDFS_v5.08
https://sourceforge.net/projects/fastdfs/files/FastDFS%20Server%20Source%20Code/stats/timeline
或者https://github.com/happyfish100/fastdfs
FastDFS Nginx Module 1.16
http://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/
或者https://github.com/happyfish100/fastdfs-nginx-module
libfastcommon
https://github.com/happyfish100/libfastcommon
其中github上的代码是最新的,sourceforge上不一定是最新的,当前FastDFS版本为5.08。
tracker的安装与配置
以下操作是在 tracker 10.10.10.80上操作。
通过rz工具或者FileZilla,把软件上传到Ubuntu的/usr/local/src目录下。
安装libfastcommon
安装FastDFS (FastDFS_v5.08.tar.gz)
到这里FastDFS在 tracker上安装完成,所有的可执行文件位于 /usr/bin 目录下,以fdfs开头的文件:
所有的配置文件在 /etc/fdfs/ 目录下:
配置
①进入到 /etc/fdfs 目录下,将tracker.conf.sample重命名为tracker.conf。
②创建数据文件和日志文件目录
③编辑 tracker.conf 文件,测试的时候只需要修改以下参数即可
运行
直接使用 fdfs_trackerd 来启动tracker进程,然后使用netstat 查看端口是否起来。
也可以查看日志看服务是否正常运行:
⑤设置开机自动启动
至此tracker上的安装与配置结束。
storage的安装与配置
两台机器(10.10.10.81, 10.10.10.82)配置完全一样,以81为例。
安装
利用上传 FastDFS_v5.08.tar.gz 和 libfastcommon-master.zip 至 storage服务器的/usr/local/src 目录下,解压安装 libfastcommon,这个和前面安装tracker一样。
配置
进入到 /etc/fdfs 目录下,复制/usr/local/src/FastDFS/conf/* 下面的所有文件到当前目录下(/etc/fdfs):
编辑配置文件 storage.conf 测试的时候,只需修改以下内容即可
[备注]:store_path_count如果有多个,那么需要设置多个存储路径,如:
store_path_count=2
store_path0=/data/fastdfs/storage
store_path1=/data/fastdfs/storage1
运行
执行如下命令:
查看进程是否运行:
观察日志 /data/fastdfs/storage/logs/storaged.log 看运行情况
这里看到,创建了二级目录,成功连接到tracker。
可以使用 fdfs_monitor 来查看一下storage的状态,看是否已经成功注册到了tracker:
看到这里显示“ACTIVE”,说明当前的storage节点已经注册到了Tracker上。
设置开机启动
同Tracker中的配置,把如下命令加到/etc/rc.local中:
到这里storage的安装配置也完成了。当第二台节点也加进来后,可以通过日志看到如下信息:
【注】因为同一组的节点会进行数据同步,所以一个组内的所有storage节点会进行通信,那么这个地方就可以看出来,他们上线后会建立连接。
另外,从端口信息上也可以看出来:
storage1会与storage2建立连接,同时会与tracker建立连接。
在storage上安装配置nginx
以下操作在storage1上完成。
安装nginx
上传 fastdfs-nginx-module_v1.16.tar.gz nginx-1.10.0.tar.gz pcre-8.36.tar.gz zlib-1.2.8.tar.gz 到storage服务器上的/usr/local/src 目录下
编译安装:
配置nginx
修改nginx配置文件
① 修改nginx的监听端口
将 server 段中的 listen 端口号改为 8888:
② 在 server 段中添加fastdfs的配置:
这里的group[1-3] 可以匹配 group1,group2,group3,当然group也可以是其他的名字,这里正则表达式只是用来过滤请求路径。
location ~ /group[1-3]/M00 {
root /data/fastdfs/storage/data;
ngx_fastdfs_module;
}
/data/fastdfs/storage/data 这个是指向真正存储文件的地方,该目录下有这些个二级目录
③将 FastDFS 的 nginx 插件模块的配置文件拷贝到 FastDFS 配置文件目录:
修改 fastdfs的nginx模块的配置文件 mod_fastdfs.conf
④建立 M00 至存储目录的符号连接
到这里,nginx和FastDFS 插件模块就配置完成了。
⑤启动nginx
执行/usr/local/nginx/sbin/nginx
把上述语句加入/etc/rc.local即可开机自启动。
可以通过netstat -unltp | grep nginx查看nginx是否起来,如果有错误,可以查看日志:
也可以访问http://10.10.10.80:8888查看nginx是否工作,看到如下界面说明nginx启动OK。
其他storage节点依照上述步骤安装与配置即可。
安装nginx反向代理及缓存服务器
在机器10.10.10.79上安装。
安装nginx
将所需的软件包上传至服务器/usr/local/src下
nginx 以及 nginx cache purge 插件模块安装完毕。
配置nginx
①创建nginx的缓存目录
②增加系统打开文件数的限制,手写到rc.local
③编辑 vim /usr/local/nginx/conf/nginx.conf 文件修改以下内容:
接下来,可以使用 /usr/local/nginx/sbin/nginx -t 来测试配置文件语法的正确性。
④启动nginx并加入到开机启动
把/usr/local/nginx/sbin/nginx加入/etc/rc.local即可。
同样可以查看端口看是否正常启动:
测试上传文件
以下操作在tracker服务器(10.10.10.80)上进行
①创建client 使用的日志目录
②修改客户端的配置文件/etc/fdfs/client.conf
③上传一个图片
得到了如下的地址:
group1/M00/00/00/CgoKeFRQqaaASddNAxEgRsu1UiU345.jpg
还可以通过fdfs_file_info 来查看上传文件的信息
通过浏览器访问:
④使用浏览器访问一下该地址:
http://10.10.10.79/group1/M00/00/00/CgoKeFRQqaaASddNAxEgRsu1UiU345.jpg
即可成功访问到图片。
⑤查看nginx的缓存目录,可以查看缓存的内容。
⑥清除缓存
如果清除该图片的缓存,可以在文件 URL 之前加上 purge 即可,如下图
http://10.10.10.79/purge/group1/M00/00/00/CgoKeFRQqaaASddNAxEgRsu1UiU345.jpg
清除之后,当storage中文件被删除后,将无法再请求到文件。
⑦配置浏览器端查看是否命中缓存
使用Chrome浏览器的开发工具,查看响应的头部信息来查看是否命中缓存,要启用此功能,修改nginx的主配置文件如下:
在location /group1/M00 段增加这2个行
最终效果
重启nginx,清除缓存再次访问即可查看响应头命中信息。
附录
需要再多写一点, FastDFS这样部署就已经可以正常运行了,但是有一个问题,就是FastDFS本身不支持对上传的文件去重。也就是说,同一个文件,我们反复上传,那么会在Storage中保存多份,这显然是不合理的。解决办法,需要的请参考我另一篇文章:
《FastDHT配合FastDFS进行文件上传去重》
http://blog.csdn.net/ForeverSunshine/article/details/51226061
