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 提供出色而又稳定的服务。
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
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
# ./configure
4、 编译、 安装
# make
# make install
5、 启动 nginx
# cd /usr/local/nginx/sbin/
# ./nginx
其它命令
# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload
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 安装配置成功了! ! !
FastDFS 通过 Tracker 服务器, 将文件放在 Storage 服务器存储, 但是同组存储服务
器之间需要进行文件复制, 有同步延迟的问题。
假设 Tracker 服务器将文件上传到了 192.168.78.128, 上传成功后文件 ID 已经返回给
客户端。 此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.78.129, 在文件
还没有复制完成的情况下, 客户端如果用这个文件 ID 在 192.168.78.129 上取文件,就会出
现文件无法访问的错误。 而 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 分布式文件系统搭建完成! 庆祝一下……