# 7 Nginx上部署fastDFS
**Nginx安裝fastDFS模塊,主要是安裝在fastDFS,storage存儲服務器上,而不是tracker和client上。**
目的實際是為了,當輸入類似
http://192.168.2.108/group1/M00/00/00/wKgCbFem0l2ALSbFAAEYXfRAMkc536.png
URL地址,其中192.168.2.108 是一個storage服務器。
能夠通過nginx的web服務功能,直接返回圖片。
### 注意:全部安裝條件在確保之前的fastDFS 的Tracker和storage和client可以正常使用。
### (1) 解壓Nginx的fastDFS模塊包
```bash
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/
```
會發現里面有個INSTALL 和 src目錄。這個不需要make而是需要重新編譯一下storage的Nginx模塊
### (2) 安裝和編譯Nginx 并添加fastDFS模塊
```bash
cd nginx-1.10.1/
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
```
其中
/usr/local/src/fastdfs-nginx-module/src 是剛才解壓的fastdfs模塊的絕對路徑,就是在編譯nginx時候,連同這個模塊一起編譯。
```bash
make
sudo make install
```
> 如果中途出現編譯錯誤,找不到fastdfs_define.h等頭文件。
>原因可能是nginx是會想/usr/local/include/fastdfs/去找,
而不是去/usr/include/fastdfs/去找
>將/usr/include/fastdfs/和/usr/include/fastcommon/兩個文件夾拷貝到/usr/local/include/下即可。
### (3) fastdfs-nginx-module 配置文件
將fastdfs-nginx-module/src/mod_fastdfs.conf 拷貝到/etc/fdfs/下
```bash
cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
```
修改mod_fastdfs.conf
--修改文件:
```bash
base_path=/usr/fastdfs/storage #保存日志目錄,跟storage.conf一致即可
tracker_server=192.168.2.102:22122 #tracker服務器的IP地址以及端口號,確保跟storage.conf一致即可
storage_server_port=23000 #storage服務器的端口號,確保跟storage.conf一致即可
group_name=group1 #當前服務器的group名,確保跟storage.conf一致即可
url_have_group_name = true #文件url中是否有group名,這個最好設置為true,這樣方便nginx服務器解析
store_path_count=1 #存儲路徑個數,需要和store_path個數匹配
store_path0=/usr/fastdfs/fastdfs0 #存儲路徑,跟storage.conf一致即可
group_count = 1 #設置組的個數
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/fastdfs/fastdfs0
#如果group_count =2 ,那就再配置一個
```
### 4. 建立軟連接
```bash
ln -s /usr/fastdfs/fastdfs0/data /usr/fastdfs/fastdfs0/data/M00
```
### 5. 配置nginx
```bash
location /group1/M00 {
root /usr/fastdfs/fastdfs0/data;
ngx_fastdfs_module;
}
```
啟動Nginx,觀察/usr/local/nginx/logs/errors.log
是否有ERROR存在。
如果有類似如下錯誤
```bash
ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
ERROR - file: /root/Open_Package/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
2016/08/06 23:51:13 [alert] 12734#0: worker process 12735 exited with fatal code 2 and cannot be respawned
```
類似這種錯誤會導致nginx-worker啟動失敗,致使nginx無法提供web服務。
表示/etc/fdfs/下缺少http.conf 和mime.types文件
從fastdfs-5.05/conf/http.conf 拷貝到/etc/fdfs/下
從nginx-1.10.1/conf/mime.types 拷貝到/etc/fdfs/下。
### (6)啟動storage和nginx
```bash
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx -s reload
```
通過fdfs_monitor /etc/fdfs/storage.conf
看看本臺storage服務器是否處于ACTIVE狀態。如果可以表示可以通過client上傳和下載文件。
### (7)測試
在client服務器 使用命令上傳
```bash
fdfs_test ./conf/client.conf upload 1.png
```
```bash
This is FastDFS client test program v5.05
Copyright (C) 2008, Happy Fish / YuQing
FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.
[2016-08-07 17:47:10] DEBUG - base_path=/usr/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=192.168.2.108, port=23000
group_name=group1, ip_addr=192.168.2.108, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895.png
source ip address: 192.168.2.108
file timestamp=2016-08-07 17:47:16
file size=71773
file crc32=4097847879
example file url: http://192.168.2.108/group1/M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895.png
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895_big.png
source ip address: 192.168.2.108
file timestamp=2016-08-07 17:47:16
file size=71773
file crc32=4097847879
example file url: http://192.168.2.108/group1/M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895_big.png
```
其中
http://192.168.2.108/group1/M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895.png
變為這個文件最終存放的web url路徑。192.168.2.108 應該是storage服務器的ip地址。
打開瀏覽器 輸入
http://192.168.2.108/group1/M00/00/00/wKgCbFenA6SAShwgAAEYXfRAMkc895.png
得到圖片顯示,則表示storage已經成功配置nginx服務。
- 概要
- 1 分布式存儲fastDFS
- 1.1 fastDFS 通用介紹
- 1.2 fastDFS安裝和使用
- 1.3 基于fastDFS實現分布式
- 2 緩存數據庫redis快速搭建
- 2.1 環境安裝
- 2.2 redis數據類型
- 2.3 redis訂閱發布模式
- 2.4 redis事務
- 2.5 redis備份
- 3 redis詳細攻略
- 3.1 redis簡介
- 3.2 redis使用場景
- 3.3 redis基本操作
- 3.4 redis數據類型
- 3.4.1 字符串
- 3.4.2 HASH-字典
- 3.4.3 List-列表
- 3.4.4 Set-集合
- 3.4.5 Sorted Set-有序集合
- 3.4.6 訂閱-發布
- 3.4.7 事務
- 3.5 redis配置文件
- 3.6 持久化
- 3.7 redis性能測試
- 3.8 redis-C-API
- 3.9 redis-C++-API
- 3.10 總結與建議
- 4 memcache緩存數據庫
- 4.1 什么是memcached
- 4.2 memcached的特征
- 4.3 memcached的內存管理
- 4.4 如何使用memcached
- 4.5 memcached參數詳解
- 4.6 memcached安裝
- 4.7 memcached-C客戶端
- 4.8 memcached-C++客戶端
- 5 Nginx
- 6 FastCGI
- 6.1 CGI
- 6.2 FastCGI
- 6.3 Nginx與FastCGI
- 7 Nginx上部署fastDFS
- 8 項目概要
- 8.1 上傳文件功能
- 8.2 主界面顯示與下載文件功能
- 8.3 注冊功能
- 8.4 登陸功能
- 8.5 文件分類功能
- 8.6 個人網盤功能
- 8.8 秒傳功能