一、整合 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
错误
/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_incs
和 CORE_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.conf
和 mime.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
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
启动成功会显示 ngx_http_fastdfs_set pid=xxx
字样,这是因为和 fastdfs-nginx-module
模块整合的原因。
(2)访问资源文件
之前介绍过客户端模拟用户上传,成功后返回的 group1/M00/00/00/rBB3gFw_T2CADZ-LAAAXLcZMWT480.jpeg
可以理解为:文件ID。
访问文件格式:http://域名:端口号+文件ID
或 http://IP:端口号+文件ID
。
访问地址:http://172.16.119.128:8888/group1/M00/00/00/rBB3gFw_T2CADZ-LAAAXLcZMWT480.jpeg
二、相关启停命令
#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 访问上传的图片文件(五)