FastDFS 整合 Nginx 访问上传的图片文件(五)

一、整合 Nginx 访问上传的图片文件

1、下载 fastdfs-nginx-module 模块

下载地址为:https://github.com/happyfish100/fastdfs-nginx-module/releases 我这里选择 V1.20 版本

版本不对应可能会给接下来的安装带来各种问题。

  • fastdfs V5.11 对应 fastdfs-nginx-module V1.20

  • fastdfs V5.10 对应 fastdfs-nginx-module V1.19

# 下载 V1.20 版本
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz

# 解压
tar -zxvf V1.20.tar.gz

2、修改 fastdfs-nginx-module配置文件

在我编译 nginx 模块时,出现如下 fatal error: common_define.h 错误

fastdfs-nginx-install-error.jpg

/usr/include/fastdfs/fdfs_define.h:15:10: fatal error: common_define.h: 没有那个文件或目录
 #include "common_define.h"
          ^~~~~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [objs/Makefile:1187:objs/addon/src/ngx_http_fastdfs_module.o] 错误 1
make[1]: 离开目录“/home/liurenkui/文档/MyLibrary/nginx-1.14.2”
make: *** [Makefile:8:build] 错误 2

经过查询发现这个问题并非偶然。在 Github 的 issue 上也有人提出这个问题,幸运的是找到了解决方法。

编辑 fastdfs-nginx-module-1.20/src/config 文件。通过关键字 ngx_module_incsCORE_INCS 找到下面两行。

ngx_module_incs="/usr/local/include"
CORE_INCS="$CORE_INCS /usr/local/include"

修改为

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

3、安装 Nginx

如果早先已经安装了 Nginx 服务器,建议先进行删除,重新编译安装一次。

(1)安装 nginx 所需的依赖 lib

# 安装 gcc 依赖库
sudo apt install gcc

# 安装 pcre 依赖库
sudo apt install libpcre3 libpcre3-dev

# 安装 zlib 依赖库
sudo apt install zlib1g-dev

# 安装 ssl 依赖库
apt-get install openssl

(2)安装 nginx 并整合 fastdfs-nginx-module 模块

Nginx 下载地址:http://nginx.org/en/download.html

# 下载 Nginx
wget http://nginx.org/download/nginx-1.14.2.tar.gz

# 解压
tar -zxvf nginx-1.14.2.tar.gz

# 进入目录
cd nginx-1.14.2/

# 配置 nginx 安装位置 和 fastdfs-nginx-module-1.20/src 依赖模块的路径
./configure --prefix=/usr/local/nginx --add-module=/MySoftware/FastDFS/fastdfs-nginx-module-1.20/src

# 编译 nginx
make

# 安装
sudo make install

安装完毕后,发现启动 nginx 服务并不能正常使用。因为接下来还需要对 nginx 做一些配置。

4、拷贝并修改 mod_fastdfs.conf 配置文件

# 进入解压的 fastdfs-nginx-module-1.20 目录 
cd fastdfs-nginx-module-1.20/

# 将 mod_fastdfs.conf 文件拷贝到 /etc/fdfs/ 目录
sudo cp src/mod_fastdfs.conf /etc/fdfs/

# 编辑
vim /etc/fdfs/mod_fastdfs.conf

编辑 mod_fastdfs.conf 文件内容,重点修改几个属性

connect_timeout=10                  # 超时时间
base_path=/home/liurenkui/MyOpt/fastdfs/storage     # 保存日志目录
tracker_server=172.16.119.129:22122         # tracker 服务器
storage_server_port=23000               # storage 服务器端口
url_have_group_name=true                # url包含组名
store_path0=/home/liurenkui/MyOpt/fastdfs/storage_data  # 存储目录

5、拷贝 http.confmime.types 文件

# 进入解压的 fastdfs-5.11 目录
cd fastdfs-5.11/conf
# 拷贝到 /etc/fdfs/ 目录
sudo cp http.conf mime.types /etc/fdfs/

6、配置 M00 软连接

/home/liurenkui/MyOpt/fastdfs/storage_data/ 文件存储目录下创建软连接,将其链接到实际存放数据的目录。

sudo ln -s /home/liurenkui/MyOpt/fastdfs/storage_data/data/ /home/liurenkui/MyOpt/fastdfs/storage_data/data/M00

fastdfs-nginx-install.jpg

7、修改 nginx.conf 配置文件

修改 /usr/local/nginx/conf/nginx.conf 配置文件,找到如下代码段

server {
        listen       80;
        server_name  localhost;
        
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        
        location / {
            root   html;
            index  index.html index.htm;
        }
    ...
}

修改监听端口 listen 8888,并新增一个 location 节点。

server {
        listen       8888;
        server_name  localhost;
        
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        
        location / {
            root   html;
            index  index.html index.htm;
        }
        
        location ~/group([0-9])/M00 {
            root /home/liurenkui/MyOpt/fastdfs/storage_data/data;
            ngx_fastdfs_module;
        }
    ...
}

Nginx 对外开放的端口号,必须和 storage.conf 配置文件中的 http.server_port 属性值一样。

8、启动 Nginx 服务器,访问上传的文件内容

(1)启动nginx

# 启动 nginx
sudo /usr/local/nginx/sbin/nginx

fastdfs-nginx-run.jpg

启动成功会显示 ngx_http_fastdfs_set pid=xxx 字样,这是因为和 fastdfs-nginx-module 模块整合的原因。

(2)访问资源文件

之前介绍过客户端模拟用户上传,成功后返回的 group1/M00/00/00/rBB3gFw_T2CADZ-LAAAXLcZMWT480.jpeg 可以理解为:文件ID。

fastdfs-client-upload-1.jpg

访问文件格式:http://域名:端口号+文件IDhttp://IP:端口号+文件ID

访问地址:http://172.16.119.128:8888/group1/M00/00/00/rBB3gFw_T2CADZ-LAAAXLcZMWT480.jpeg

fastdfs-nginx-run-2.jpg

二、相关启停命令

#tracker节点启停
/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_trackerd stop

#storage启停
/etc/init.d/fdfs_storaged start
/etc/init.d/fdfs_storaged stop

#nginx启停
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s stop

#查看服务进程
ps -ef|grep fdfs
ps -ef|grep nginx

到此全部配置完成!!

三、mod_fastdfs.conf 配置文件介绍

# 连接超时,单位:秒
# default value is 30s
connect_timeout=2

# 网络超时,单位:秒
# default value is 30s
network_timeout=30

# 基础路径
base_path=/tmp

# 是否从跟踪服务器加载FastDFS参数
# since V1.12
# default value is false
load_fdfs_parameters_from_tracker=true

# 同 tracker.conf
# 仅当load_fdfs_parameters_from_tracker为false时有效
# since V1.12
# default value is 86400 seconds (one day)
storage_sync_file_max_delay = 86400

# 同 tracker.conf
# 仅当load_fdfs_parameters_from_tracker为false时有效
# default value is false
# since V1.13
use_storage_id = false

# 同 as tracker.conf
# 仅当load_fdfs_parameters_from_tracker为false时有效
# since V1.13
storage_ids_filename = storage_ids.conf

# FastDFS tracker 服务器地址
#  "host:port", host can be hostname or ip address
# 仅当load_fdfs_parameters_from_tracker为true时有效
tracker_server=tracker:22122

# storage server 端口
# the default value is 23000
storage_server_port=23000

# storage server 组名
group_name=group1

# url / uri 包括组名
# 当uri设置为false时,比如 /M00/00/00/xxx
# 设置为true时。比如 ${group_name}/M00/00/00/xxx, such as group1/M00/xxx
# 默认 false
url_have_group_name = false

# 路径(磁盘或挂载点)计数,默认1
# 必须和storage.conf一样
store_path_count=1

# store_path#,基于0,如果store_path0不存在,则其值为base_path
# 路径必须存在
# 必须和storage.conf一样
store_path0=/home/yuqing/fastdfs
#store_path1=/home/yuqing/fastdfs1

# 日志级别
log_level=info

# 设置日志文件名,例如/usr/local/apache2/logs/mod_fastdfs.log
# 输出到stderr为空(apache和nginx error_log文件)
log_filename=

# 当本地文件系统中不存在该文件时的响应模式
## proxy: 从其他存储服务器获取内容,然后发送到客户端
## redirect: 重定向到原始存储服务器(HTTP标头是位置)
response_mode=proxy

# NIC别名前缀,例如Linux中的eth,您可以通过ifconfig -a查看它
# 多个别名用逗号分隔。 空值表示按OS类型自动设置
# 此参数用于获取本地主机的所有IP地址
# 默认值为空
if_alias_prefix=

# 使用“#include”指令包含HTTP配置文件
# NOTE: #include is an include directive, do NOT remove the # before include
#include http.conf


# 支持 flv 格式
# 默认false
# since v1.15
flv_support = true

# flv文件扩展名
# since v1.15
flv_extension = flv


# 设置组计数
# 设置为none以支持此存储服务器上的多组
# 设置为0。仅对单个组,默认 0
# since v1.14
group_count = 0

# group settings for group #1
# since v1.14
# 当在此存储服务器上支持多组时,请取消注释以下部分
#[group1]
#group_name=group1
#storage_server_port=23000
#store_path_count=2
#store_path0=/home/yuqing/fastdfs
#store_path1=/home/yuqing/fastdfs1

# group settings for group #2
# since v1.14
#当支持多组时,取消注释以下部分是必要的
#[group2]
#group_name=group2
#storage_server_port=23000
#store_path_count=1
#store_path0=/home/yuqing/fastdfs


未经允许请勿转载:程序喵 » FastDFS 整合 Nginx 访问上传的图片文件(五)

点  赞 (1) 打  赏
分享到: