Nginx+FastDFS圖片伺服器搭建
阿新 • • 發佈:2018-11-11
文章目錄
nginx的反向代理
反向代理應用於服務端,指定那臺伺服器給客戶提供服務。
反向代理模擬
使用一臺虛擬機器,安裝一個nginx,多個tomcat來模擬反向代理。
複製兩個tomcat模擬反向代理
tomcat1是8080埠,使tomcat2用8081埠
修改tomcat配置檔案
- tomcat2/conf/server.sml
- 8085改成8086
- 8080改成8081
- 8009改成8010
無法訪問歡迎頁面【防火牆問題】
檢視防火牆埠配置檔案:
vi /etc/sysconfig/iptables
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
新增兩個可訪問埠:
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT -A INPUT -p tcp -m tcp --dport 8081 -j ACCEPT
儲存,重啟防火牆
service iptables restart
更改兩個index.jsp主頁
在兩個tomcat的webapps/ROOT/index.jsp裡面加上-Port:8080或者-Port:8081以示區別:
<div id="asf-box">
<h1>${pageContext.servletContext.serverInfo}-Port:8080</h1>
</div>
<div id="asf-box">
<h1>${pageContext.servletContext.serverInfo}-Port:8081</h1>
</div>
反向代理
把原來/usr/local/nginx/conf/nginx.conf末尾的server
改為如下:並新增upstream tomcats:
upstream tomcats{
server 192.168.52.129:8080 weight=2;
server 192.168.52.129:8081;
}
server {
listen 80;
server_name test.taotao.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
index index.html index.htm;
}
}
負載均衡【新機器能者多勞】
通過權重weight分配服務概率,值越大分配概率越大。
啟動tomcat和nginx測試
- 啟動兩個tomcat
- 執行nginx程式
./nginx -s reload
執行./nginx -s reload找不到nginx.pid
nginx: [error] open() “/var/run/nginx/nginx.pid” failed (2: No such file or directory)
在sbin資料夾下執行如下命令,指定配置檔案路徑:
./nginx -c /usr/local/nginx/conf/nginx.conf
FastDFS檔案上傳下載
- client
- tracker-server
- storage-server
上傳流程
- storage定時向tracker上傳狀態資訊
- client向tracker上傳請求連線
- tracker查詢可用storage
- tracker返回可用storage的ip和埠
- 上傳檔案
- storage生成file-id
- storage將內容寫入磁碟
- storage向client返回file-id路徑和檔名
- client儲存檔案資訊
下載流程
- storage定時向tracker上傳狀態資訊
- client向tracker上傳請求連線
- tracker查詢可用storage
- tracker返回可用storage的ip和埠
- client向storage傳送file-id路徑資訊
- storage查詢檔案
- storage返回file-content
搭建FastDFS步驟
複製壓縮包到伺服器
- fastdfs-nginx-module_v1.16.tar.gz
- FastDFS_v5.05.tar.gz
- libfastcommonV1.0.7.tar.gz
安裝libevent和perl
yum -y install libevent
yum install perl
安裝libfastcommon
- 解壓
- ./make.sh
- ./make.sh install
- 把/usr/lib64/libfastcommon.so檔案向/usr/lib/下複製一份
安裝Tracker
- 解壓FastDFS_v5.05.tar.gz
- ./make.sh
- ./make.sh install
- 把cp –r /root/FastDFS/conf目錄下的所有的配置檔案都複製到/etc/fdfs下
- 注意使用
cp -r
,否則報錯cp: omitting directory ‘/root/FastDFS/conf
注意:檢查/etc/fdfs下mime.types
和http.conf
是否成功從/root/FastDFS/conf中拷貝成功,否則後面的nginx伺服器訪問時一直載入!
- cp ~/FastDFS/conf/mime.types /etc/fdfs
- cp ~/FastDFS/conf/http.conf /etc/fdfs
新建資料夾
- 新建資料夾/home/fastdfs/tracker
- 新建資料夾/home/fastdfs/storage
- 新建資料夾/home/fastdfs/client
配置tracker服務
修改/root/FastDFS/conf/tracker.conf檔案。
base_path=/home/fastdfs/tracker
複製到/etc/fdfs下cp tracker.conf /etc/fdfs。
啟動tracker服務
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
重新啟動:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
配置storage服務
如果是在不同的伺服器安裝,需要重新執行配置tracker之前的四步。
配置storage服務:修改/root/FastDFS/conf/storage.conf檔案
base_path=/home/fastdfs/storage
store_path0=/home/fastdfs/storage
tracker_server=192.168.52.129:22122
啟動storage服務
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
測試服務
- 進入/etc/fdfs/資料夾
- 複製配置檔案/etc/fdfs/client.conf.sample為/etc/fdfs/client.conf
- 複製一個圖片zxc.jpg到/etc/fdfs/資料夾
- 編輯client.conf
base_path=/home/fastdfs/client
tracker_server=192.168.52.129:22122
測試
/usr/bin/fdfs_test /etc/fdfs/client.conf upload zxc.jpg
如果顯示如下資訊則成功:
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.52.129, port=23000
group_name=group1, ip_addr=192.168.52.129, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKg0gVvliFOAFTCcAAIEbfjnAjM334.jpg
source ip address: 192.168.52.129
file timestamp=2018-11-09 08:14:59
file size=132205
file crc32=4175888947
example file url: http://192.168.52.129/group1/M00/00/00/wKg0gVvliFOAFTCcAAIEbfjnAjM334.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKg0gVvliFOAFTCcAAIEbfjnAjM334_big.jpg
source ip address: 192.168.52.129
file timestamp=2018-11-09 08:14:59
file size=132205
file crc32=4175888947
example file url: http://192.168.52.129/group1/M00/00/00/wKg0gVvliFOAFTCcAAIEbfjnAjM334_big.jpg
搭建nginx提供http服務
參考部落格(https://www.cnblogs.com/tc520/p/6822412.html)
可以使用官方提供的nginx外掛,要使用nginx外掛需要重新編譯。
- 解壓fastdfs-nginx-module_v1.16.tar.gz
- 改/root/fastdfs-nginx-module/src/config檔案,把其中的三個local去掉
- 安裝nginx重新config
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/root/fastdfs-nginx-module/src
- make
- make install
- /root/fastdfs-nginx-module/src/mod_fastdfs.conf檔案複製到/etc/fdfs目錄下
- 編輯/etc/fdfs/mod_fastdfs.conf
base_path=/tmp
tracker_server=192.168.52.129:22122
url_hava_group_name=true
store_path0=/home/fastdfs/storage
- 在nginx的配置檔案/usr/local/nginx/conf/nginx.conf中修改Server:
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~/group([0-9])/M00/{
ngx_fastdfs_module;
}
- libfdfsclient.so拷貝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
- 啟動nginx,瀏覽器訪問localhost
- 測試:/usr/bin/fdfs_test /etc/fdfs/client.conf upload girl.jpg
- 訪問生成的連結http://192.168.52.129/group1/M00/00/00/wKg0gVvmcmCAXXqFAAChaTZy5ds776_big.jpg
訪問不了nginx
- 檢查防火牆是否埠可訪問
vi /etc/sysconfig/iptables
檢查如下埠是否開啟:
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
儲存,重啟防火牆
service iptables restart
- 檢查/etc/fdfs下
mime.types
和http.conf
是否成功從/root/FastDFS/conf中拷貝成功,否則後面的nginx伺服器訪問時一直載入!
- cp ~/FastDFS/conf/mime.types /etc/fdfs
- cp ~/FastDFS/conf/http.conf /etc/fdfs