FastDFS+Nginx实现http协议下载(2)

栏目: 服务器 · 发布时间: 7年前

内容简介:FastDFS+Nginx实现http协议下载(2)
  • A+

所属分类:FastDFS

--nginx结合fastdfs-nginx-module插件去实现http协议下载 在所有storage节点和tracker节点都需要安装nginx

原理介绍

1. storage节点中的nginx 主要是结合fastdfs-nginx-module模块提供http的访问服务 同时解决group中storage服务器的同步延迟问题。

2. tracker节点中的nginx 主要是提供http访问的反向代理、负载均衡以及缓存服务

服务器角色

192.168.5.231    tracker + nginx

192.168.5.233    group1/stroage1 + nginx + fastdfs-nginx-module

192.168.5.234    group1/storage2 + nginx + fastdfs-nginx-module

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本实验请在完成《FastDFS部署(1)》后进行

软件下载

nginx1.8:

wget http://nginx.org/download/nginx-1.8.1.tar.gz

fastdfs-nginx-module v1.15:

wget http://downloads.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz?r=https%3A%2F%2Fsourceforge.net%2Fprojects%2Ffastdfs%2Ffiles%2FFastDFS%2520Nginx%2520Module%2520Source%2520Code%2F&ts=1477375666&use_mirror=nchc

ngx_cache_purge 2.3:

wget https://github.com/FRiCKLE/ngx_cache_purge/archive/2.3.tar.gz

storage上安装nginx

-- 在5.233 和 5.234上操作 -- 这里先在5.233上操作 然后把相关内容复制去5.234

-- storage节点中的nginx 主要是结合fastdfs-nginx-module模块提供http的访问服务 同时解决group中storage服务器的同步延迟问题。

-- 安装nginx依赖

yum install -y zlib-devel pcre-devel openssl-devel

-- 解决fastdfs-nginx-module模块的路径问题

tar -xzvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src
vim config                                        -- 修改模块的配置文件
修改以下内容
要修改的行: CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改成这样: CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

-- 编译安装nginx

 tar -xzvf nginx-1.8.1.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx --with-pcre --add-module=../fastdfs-nginx-module/src             -
- 这里暂时只with这个实验必要的模块 生产环境中可以按需添加模块
make && make install

-- 复制fastdfs-nginx-module模块的配置文件到fastdfs的配置目录

cp /root/software/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

-- 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
在将server段的listen端口改为8080
listen 8080;
在server段中添加以下内容
location ~ /group1/M00 {     -- 匹陪url 其中group1是该storage节点所属组的组名 对应storage配置文件中的 group_name,M00还不清楚
    root /home/fastdfs/data;      -- 根目录指向storage的存储目录 对应storage配置文件中的store_path0中的路径
    ngx_fastdfs_module;   -- 调用ngx_fasdfs_module模块
}

-- 这里只写了必须的配置 nginx的其他功能 请按需配置

-- 修改ngx_fastdfs_module模块的配置文件

vim /etc/fdfs/mod_fastdfs.conf
修改以下内容
base_path=/home/fastdfs                                        -- 保存日志的目录(跟storage.conf配置一样即可) 但实际上日志默认会输出到nginx的error.log 除非修改了log_filename参数
tracker_server=192.168.5.231:22122                        -- tracker_server的IP地址 有多个tracker_server就需要写多个tracker_server
storage_server_port=23000                                      -- storage服务器的端口号
group_name=group1                                                -- 当前storage节点所属的group名
url_have_group_name = true                                    -- 文件url中是否有group名(这个看刚刚上传文件后返回的url而定)
store_path_count=1                                                   -- 存储路径个数(跟storage.conf配置一样即可)
store_path0=/home/fastdfs                                       -- 存储路径(跟storage.conf配置一样即可)
group_count = 1                                                         -- 整个fastdfs有多少个组 这里暂时是1个
在最后添加以下内容
[group1]                                                                      -- 第1个组的详细信息
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs

-- 建立M00至存储目录的软连接(不然实际路径跟返回的url路径对不上 但实际测试中 不做这步也能正常访问  估计是模块做了路径转换 )

ln -s /home/fastdfs/data/ /home/fastdfs/data/M00
 
ll /home/fastdfs/data/M00
lrwxrwxrwx 1 root root 19 Oct 25 15:27 /home/fastdfs/data/M00 -> /home/fastdfs/data/

-- 这样的路径结构就对得上了

-- 复制fastdfs源码目录里与http功能相关的文件到fastdfs配置文件目录( 不然nginx启动会报错 )

cd /root/software/fastdfs-5.05/conf/
cp http.conf mime.types /etc/fdfs/

-- 启动nginx

/usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=6163

-- 这个 并不是表示模块以一个进程起来了 他只是输出了nginx其中一条子进程的pid

-- 查看启动情况

netstat -tnlp | grep 8080           -- 查看端口情况
 
tail -f /usr/local/nginx/logs/error.log        -- 查看错误日志 没有错误则表示启动正常

-- 访问nginx 和 存储的图片

浏览器访问 192.168.5.233:8080                                -- 就会看到nginx的欢迎页

访问上传的文件

192.168.5.233:8080/group1/M00/00/00/wKgF6VgO69WAW6kgAAULPRl0gCs682.png

-- 把上传图片时返回的url拼进去 即可访问上传的图片 看到图片即表示nginx配置成功

-- 把nginx及相关文件同步给5.234

rsync -avzR /usr/local/nginx/ 192.168.5.234:/
rsync -avzR /etc/fdfs/http.conf /etc/fdfs/mime.types /etc/fdfs/mod_fastdfs.conf 192.168.5.234:/

-- 由于5.234和5.233属于同一组 所以拷贝后需要修改的东西不多 如果是跨组的拷贝 就要注意需要修改的配置内容了

在5.234上也启动nginx 和访问上传的图片

tracker上安装nginx

-- 在192.168.5.231上操作

-- tracker上的nginx主要是为了 反向代理给storage上的nginx 和 负载均衡 和 实现缓存

-- 安装nginx依赖

yum install -y zlib-devel pcre-devel openssl-devel

-- 编译安装nginx

tar -xzvf nginx-1.8.1.tar.gz
tar -xzvf 2.3.tar.gz
cd nginx-1.8.1
./configure --prefix=/usr/local/nginx --with-pcre --add-module=../ngx_cache_purge-2.3/                 
-- 这里暂时只with这个实验必要的模块 生产环境中可以按需添加模块
make && make install

-- 修改nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
######### 配置缓存区域 ###########
在http区域添加以下内容
add_header X-Cache-Status $upstream_cache_status;                -- 添加缓存命中标识
proxy_cache_path /tmp levels=1:2 keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /tmp/proxy_tmp;
-- 缓存不是本笔记重点 意思解释请查看/project/nginx/反向代理/反向代理 缓存
######### 设置upstream ##########
在http区域添加以下内容
    upstream fdfs_group1 {                        -- fastdfs里组1的upstream 如有多个组要定义多个
        server 192.168.5.233:8080;
        server 192.168.5.234:8080;
    }
######### 设置反向代理 和 缓存 ###########
在server区域修改以下内容
        listen       8080;
在server区域添加以下内容
        location /group1/M00{                    -- 匹配group1/M00的url  如果有group2 3 就要配置多个
                proxy_next_upstream http_502 http_504 error timeout invalid_header;        -- 后端这些错误的就切换到upstream里的下一个后端服务器 所以我感觉他解决同步延迟问题是通过这里来解决
                proxy_cache http-cache;
                proxy_cache_valid 200 304 12h;
                proxy_cache_key $uri$is_args$args;
                proxy_pass http://fdfs_group1;                         -- 反向代理给名为fdfs_group1的upstream
                #expires 30d;
        }
-- 缓存不是本笔记重点 意思解释请查看/project/nginx/反向代理/反向代理 缓存
 
########## 配置清除缓存 ############
在server区域添加以下内容
        location ~ /purge(/.*) {
                allow 127.0.0.1;
                allow 192.168.5.0/24;
                deny all;
                proxy_cache_purge http-cache $1$is_args$args;
        }

-- 运行nginx

/usr/local/nginx/sbin/nginx

-- 访问nginx 和 存储的图片

浏览器访问 192.168.5.231:8080                                -- 就会看到nginx的欢迎页

访问上传的文件

192.168.5.231:8080/group1/M00/00/00/wKgF6VgO69WAW6kgAAULPRl0gCs682.png

-- 把上传图片时返回的url拼进去 即可访问上传的图片 看到图片即表示nginx配置成功

-- 清理nginx缓存 -- 在nginx配置的allow的IP列表内操作

curl http://192.168.5.231:8080/purge/group1/M00/00/00/wKgF6VgO69WAW6kgAAULPRl0gCs682.png

FastDFS+Nginx实现http协议下载(2)

微信公众号

扫一扫关注运维生存时间公众号,获取最新技术文章~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

暗时间

暗时间

刘未鹏 / 电子工业出版社 / 2011-7 / 35.00元

2003年,刘未鹏在杂志上发表了自己的第一篇文章,并开始写博客。最初的博客较短,也较琐碎,并夹杂着一些翻译的文章。后来渐渐开始有了一些自己的心得和看法。总体上在这8年里,作者平均每个月写1篇博客或更少,但从未停止。 刘未鹏说—— 写博客这件事情给我最大的体会就是,一件事情如果你能够坚持做8年,那么不管效率和频率多低,最终总能取得一些很可观的收益。而另一个体会就是,一件事情只要你坚持得足......一起来看看 《暗时间》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

随机密码生成器
随机密码生成器

多种字符组合密码