一、 Nginx 介绍
1.1 Nginx 简介
Nginx 是一款自由的、 开源的、 高性能的 HTTP 服务器和反向代理服务器; 同时也是一个 IMAP、 POP3、 SMTP 代理服务器; Nginx 可以作为一个 HTTP 服务器进行网站的发布处理,另外 Nginx 可以作为反向代理进行负载均衡的实现。
Nginx 同 Apache 一样都是一种 WEB 服务器。 基于 REST 架构风格, 以统一资源描述符(Uniform Resources Identifier)URI 或者统一资源定位符(Uniform Resources Locator)URL 作为沟通依据, 通过 HTTP 协议提供各种网络服务。
然而, 这些服务器在设计之初受到当时环境的局限, 例如当时的用户规模, 网络带宽,产品特点等局限并且各自的定位和发展都不尽相同。 这也使得各个 WEB 服务器有着各自鲜明的特点。
Apache 的发展时期很长, 而且是毫无争议的世界第一大服务器。 它有着很多优点: 稳定、 开源、 跨平台等等。 它出现的时间太长了, 它兴起的年代, 互联网产业远远比不上现在。
所以它被设计为一个重量级的。 它不支持高并发的服务器。 在 Apache 上运行数以万计的并发访问, 会导致服务器消耗大量内存。 操作系统对其进行进程或线程间的切换也消耗了大量的 CPU 资源, 导致 HTTP 请求的平均响应速度降低。
这些都决定了 Apache 不可能成为高性能 WEB 服务器, 轻量级高并发服务器 Nginx 就应运而生了。
俄罗斯的工程师 Igor Sysoev,他在为 Rambler Media 工作期间,使用 C 语言开发了 Nginx。Nginx 作为 WEB 服务器一直为 Rambler Media 提供出色而又稳定的服务。
二 Nginx 安装配置
2.1 安装 Nginx 依赖环境
1、 gcc 安装
# yum install gcc-c++
2、 PCRE pcre-devel 安装
# yum install -y pcre pcre-devel
3、 zlib 安装
# yum install -y zlib zlib-devel
4、 OpenSSL 安装
# yum install -y openssl openssl-devel
2.2 安装 Nginx
1、 下载 nginx
# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
2、 解压
# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1
3、 使用默认配置
# ./configure
4、 编译、 安装
# make
# make install
5、 启动 nginx
# cd /usr/local/nginx/sbin/
# ./nginx
其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
#2.3 配置 Nginx 访问 FastDFS 文件
1、 访问文件(修改 nginx.conf)
# vim /usr/local/nginx/conf/nginx.conf
添加如下行, 将 /group1/M00 映射到 /homse/fastdfs/file/data
location /group1/M00 {
alias /home/fastdfs/file/data;
}
2、 测试访问文件
http://47.100.224.4/group1/M00/00/00/rBOr_1zqWcSASGLfAALpMV3ZLVg841.jpg
能够下载文件, 则说明 nginx 安装配置成功了! ! !
三 Nginx 配置 FastDFS 模块
3.1 fastdfs-nginx-module 模块说明
FastDFS 通过 Tracker 服务器, 将文件放在 Storage 服务器存储, 但是同组存储服务器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.78.128, 上传成功后文件 ID 已经返回给客户端。 此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.78.129, 在文件还没有复制完成的情况下, 客户端如果用这个文件 ID 在 192.168.78.129 上取文件,就会出现文件无法访问的错误。 而 fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。
3.2 fastdfs-nginx-module 安装配置
1、 下载 fastdfs-nginx-module
最新版的 master 与当前 nginx 有些版本问题, 所以这里选择下载。
# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
2、 解压, 重命名
解压
# unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
重命名
# mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1 fastdfs-nginx-module-master
3、 配置 Nginx, 在 nginx 中添加模块
先停掉 nginx 服务
# /usr/local/nginx/sbin/nginx -s stop
进入解压包目录
# cd /Downloads/nginx-1.12.1/
添加模块
# ./configure --add-module=../fastdfs-nginx-module-master/src
重新编译、 安装
# make
# make install
4、 查看 Nginx 的模块
# /usr/local/nginx/sbin/nginx -V
5、 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录, 并修改
# cd /Downloads/fastdfs-nginx-module-master/src
# cp mod_fastdfs.conf /etc/fdfs/
修改如下配置, 其它默认
# 连接超时时间
connect_timeout=10
# Tracker Server
tracker_server=192.168.78.128:22122
# StorageServer 默认端口
storage_server_port=23000
# 如果文件 ID 的 uri 中包含/group**, 则要设置为 true
url_have_group_name = true
# Storage 配置的 store_path0 路径, 必须和 storage.conf 中的一致
store_path0=/home/fastdfs/file
6、 复制 FastDFS 的部分配置文件到/etc/fdfs 目录
# cd /Downloads/fastdfs-5.05/conf/
# cp anti-steal.jpg http.conf mime.types /etc/fdfs/
7、 配置 nginx, 修改 nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
修改配置, 其它的默认
在 80 端口下添加 fastdfs-nginx 模块
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:
listen 80 端口值是要与 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成 80 了)
相对应。 如果改成其它端口, 则需要统一, 同时在防火墙中打开该端口。
location 的配置, 如果有多个 group 则配置 location ~/group([0-9])/M00 , 没有则不用配group。
8、 在/home/fastdfs/file 文件存储目录下创建软连接, 将其链接到实际存放数据的目录
# ln -s /home/fastdfs/file/data/ /home/fastdfs/file/data/M00
9、 启动 nginx
# /usr/local/nginx/sbin/nginx
打印处如下就算配置成功
10、 测试
能下载文件就算安装成功。 注意和第三点中直接使用 nginx 路由访问不同的是, 这里配置 fastdfs-nginx-module 模块, 可以重定向文件链接到源服务器取文件。
http://47.100.224.4/group1/M00/00/00/rBOr_1zqWcSASGLfAALpMV3ZLVg841.jpg
到此, FastDFS&Nginx 分布式文件系统搭建完成! 庆祝一下……