一草雕、 Nginx 介紹
1.1 Nginx 簡介
Nginx 是一款自由的、 開源的崇众、 高性能的 HTTP 服務(wù)器和反向代理服務(wù)器; 同時也是一個 IMAP航厚、 POP3顷歌、 SMTP 代理服務(wù)器; Nginx 可以作為一個 HTTP 服務(wù)器進(jìn)行網(wǎng)站的發(fā)布處理阶淘,另外 Nginx 可以作為反向代理進(jìn)行負(fù)載均衡的實現(xiàn)衙吩。
Nginx 同 Apache 一樣都是一種 WEB 服務(wù)器。 基于 REST 架構(gòu)風(fēng)格溪窒, 以統(tǒng)一資源描述符(Uniform Resources Identifier)URI 或者統(tǒng)一資源定位符(Uniform Resources Locator)URL 作為溝通依據(jù)坤塞, 通過 HTTP 協(xié)議提供各種網(wǎng)絡(luò)服務(wù)。
然而澈蚌, 這些服務(wù)器在設(shè)計之初受到當(dāng)時環(huán)境的局限摹芙, 例如當(dāng)時的用戶規(guī)模, 網(wǎng)絡(luò)帶寬宛瞄,產(chǎn)品特點(diǎn)等局限并且各自的定位和發(fā)展都不盡相同浮禾。 這也使得各個 WEB 服務(wù)器有著各自鮮明的特點(diǎn)。
Apache 的發(fā)展時期很長份汗, 而且是毫無爭議的世界第一大服務(wù)器盈电。 它有著很多優(yōu)點(diǎn): 穩(wěn)定、 開源杯活、 跨平臺等等匆帚。 它出現(xiàn)的時間太長了, 它興起的年代旁钧, 互聯(lián)網(wǎng)產(chǎn)業(yè)遠(yuǎn)遠(yuǎn)比不上現(xiàn)在吸重。
所以它被設(shè)計為一個重量級的互拾。 它不支持高并發(fā)的服務(wù)器。 在 Apache 上運(yùn)行數(shù)以萬計的并發(fā)訪問嚎幸, 會導(dǎo)致服務(wù)器消耗大量內(nèi)存颜矿。 操作系統(tǒng)對其進(jìn)行進(jìn)程或線程間的切換也消耗了大量的 CPU 資源, 導(dǎo)致 HTTP 請求的平均響應(yīng)速度降低嫉晶。
這些都決定了 Apache 不可能成為高性能 WEB 服務(wù)器骑疆, 輕量級高并發(fā)服務(wù)器 Nginx 就應(yīng)運(yùn)而生了。
俄羅斯的工程師 Igor Sysoev替废,他在為 Rambler Media 工作期間封断,使用 C 語言開發(fā)了 Nginx。Nginx 作為 WEB 服務(wù)器一直為 Rambler Media 提供出色而又穩(wěn)定的服務(wù)舶担。
二 Nginx 安裝配置
2.1 安裝 Nginx 依賴環(huán)境
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教沾、 使用默認(rèn)配置
# ./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 服務(wù)器荤堪, 將文件放在 Storage 服務(wù)器存儲合陵, 但是同組存儲服務(wù)器之間需要進(jìn)行文件復(fù)制, 有同步延遲的問題澄阳。
假設(shè) Tracker 服務(wù)器將文件上傳到了 192.168.78.128拥知, 上傳成功后文件 ID 已經(jīng)返回給客戶端。 此時 FastDFS 存儲集群機(jī)制會將這個文件同步到同組存儲 192.168.78.129碎赢, 在文件還沒有復(fù)制完成的情況下低剔, 客戶端如果用這個文件 ID 在 192.168.78.129 上取文件,就會出現(xiàn)文件無法訪問的錯誤。 而 fastdfs-nginx-module 可以重定向文件鏈接到源服務(wù)器取文件揩抡,避免客戶端由于復(fù)制延遲導(dǎo)致的文件無法訪問錯誤户侥。
3.2 fastdfs-nginx-module 安裝配置
1、 下載 fastdfs-nginx-module
最新版的 master 與當(dāng)前 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 服務(wù)
# /usr/local/nginx/sbin/nginx -s stop
進(jìn)入解壓包目錄
# 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、 復(fù)制 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄恋谭, 并修改
# cd /Downloads/fastdfs-nginx-module-master/src
# cp mod_fastdfs.conf /etc/fdfs/
修改如下配置糠睡, 其它默認(rèn)
# 連接超時時間
connect_timeout=10
# Tracker Server
tracker_server=192.168.78.128:22122
# StorageServer 默認(rèn)端口
storage_server_port=23000
# 如果文件 ID 的 uri 中包含/group**, 則要設(shè)置為 true
url_have_group_name = true
# Storage 配置的 store_path0 路徑疚颊, 必須和 storage.conf 中的一致
store_path0=/home/fastdfs/file
6狈孔、 復(fù)制 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
修改配置均抽, 其它的默認(rèn)
在 80 端口下添加 fastdfs-nginx 模塊
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:
listen 80 端口值是要與 /etc/fdfs/storage.conf 中的 http.server_port=80 (前面改成 80 了)
相對應(yīng)。 如果改成其它端口其掂, 則需要統(tǒng)一油挥, 同時在防火墻中打開該端口。
location 的配置款熬, 如果有多個 group 則配置 location ~/group([0-9])/M00 深寥, 沒有則不用配group。
8贤牛、 在/home/fastdfs/file 文件存儲目錄下創(chuàng)建軟連接翩迈, 將其鏈接到實際存放數(shù)據(jù)的目錄
# ln -s /home/fastdfs/file/data/ /home/fastdfs/file/data/M00
9、 啟動 nginx
# /usr/local/nginx/sbin/nginx
打印處如下就算配置成功
10盔夜、 測試
能下載文件就算安裝成功负饲。 注意和第三點(diǎn)中直接使用 nginx 路由訪問不同的是, 這里配置 fastdfs-nginx-module 模塊喂链, 可以重定向文件鏈接到源服務(wù)器取文件返十。
http://47.100.224.4/group1/M00/00/00/rBOr_1zqWcSASGLfAALpMV3ZLVg841.jpg
到此, FastDFS&Nginx 分布式文件系統(tǒng)搭建完成椭微! 慶祝一下……