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

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

内容简介: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_nameM00还不清楚
    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配置一样即可) 但实际上日志默认会输出到nginxerror.log 除非修改了log_filename参数
tracker_server=192.168.5.231:22122                        -- tracker_serverIP地址 有多个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里组1upstream 如有多个组要定义多个
        server 192.168.5.233:8080;
        server 192.168.5.234:8080;
    }
######### 设置反向代理 和 缓存 ###########
server区域修改以下内容
        listen       8080;
server区域添加以下内容
        location /group1/M00{                    -- 匹配group1/M00url  如果有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)

微信公众号

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


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

查看所有标签

猜你喜欢:

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

Game Programming Patterns

Game Programming Patterns

Robert Nystrom / Genever Benning / 2014-11-2 / USD 39.95

The biggest challenge facing many game programmers is completing their game. Most game projects fizzle out, overwhelmed by the complexity of their own code. Game Programming Patterns tackles that exac......一起来看看 《Game Programming Patterns》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试