Nginx+fastDFS插件安装
本文编写时候的测试平台:腾讯云轻量应用服务器
操作系统:ubuntu18.4
在文件服务器中
文件下载流程
1.可以直接让客户端连接存储节点的nginx直接实现文件下载.
2.前提是要在nginx中安装fastDFS的插件.
在存储节点上安装Nginx, 将软件安装包拷贝到fastDFS存储节点对应的主机上
- 找fastDFS的存储节点
- 在存储节点对应的主机上安装Nginx, 安装的时候需要一并将插件装上
(余庆提供插件的代码 + nginx的源代码 ) * 交叉编译 = Nginx
- fastdfs-nginx-module_v1.16.tar.gz 解压缩
- 进入nginx的源码安装目录
- 检测环境, 生成makefile
/configure --add-module=fastdfs插件的源码目录/src
./configure --add-module=/home/lampbobo/work/package/nginx/fastdfs-nginx-module/src
make
sudo make install
解决编译错误
1.将警告当成错误处理
src/core/ngx_murmurhash.c:37:11: error: this statement may fall through [-Werror=implicit-fallthrough=]
h ^= data[2] << 16;
找到当前目录下找到objs文件夹,并进入,打开文件Makefile,找到有一下内容的这行:
[root@lnmp nginx-1.8.1]# vim objs/Makefile
CFLAGS = -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g
-Werror: gcc将所有的警告当成错误进行处理把这行内容中的 “-Werror”去掉
2.找不到头文件fdfs_define.
fatal error: fdfs_define.h: No such file or directory
首先查找出这个头文件
sudo find / -name “fdfs_define.h”
/usr/include/fastdfs/fdfs_define.h
解决方案 - 修改objs/Makefile 把-I /usr/include/fastdfs加入
ALL_INCS = -I src/core \
-I src/event \
-I src/event/modules \
-I src/os/unix \
-I /usr/include/fastdfs \
-I /usr/include/fastcommon/ \
-I objs \
-I src/http \
-I src/http/modules\
安装完成之后在
目录/usr/local/nginx/sbin下之前安装的nginx会更名为nginx.old
出现一个新的nginx
sudo nginx之后呢 会发现没有工作进程
root 11553 0.0 0.0 37876 624 ? Ss 14:12 0:00 nginx: master process nginx
ubuntu 11556 0.0 0.0 13776 1016 pts/3 S+ 14:12 0:00 grep nginx
查看nginx error.log
73 [2022-11-26 07:35:54] ERROR - file: shared_func.c, line: 968, file /etc/fdfs/mod_fastdfs.conf not exist
需要配置mod_fastdfs.conf文件
#存储log日志的目录
base_path=/home/lampbobo/work/fastdfs
# 连接tracker地址信息
tracker_server=192.168.31.64:22122
# 存储节点绑定的端口
storage_server_port=23000
# 当前存储节点所属的组
group_name=group1
# 客户端下载文件的时候, 这个下载的url中是不是包含组的名字
// 上传的fileID: group1/M00/00/00/wKj3h1vJRPeAA9KEAAAIZMjR0rI076.cpp
// 完整的url: http://192.168.1.100/group1/M00/00/00/wKj3h1vJRPeAA9KEAAAIZMjR0rI076.cpp
url_have_group_name = true
# 存储节点上存储路径的个数
store_path_count=1
# 存储路径的详细信息
store_path0=/home/lampbobo/work/fastdfs
解决工作进程无法启动的问题
1.# ERROR - file: ini_file_reader.c, line: 631, include file "http.conf" not exists,
line: "#include http.conf"
从 /etc/fdfs 下找的时候不存在
- 从fastDFS源码安装目录找/conf
- sudo cp http.conf /etc/fdfs
2.# ERROR - file: shared_func.c, line: 968, file /etc/fdfs/mime.types not exist
- 从nginx的源码安装包中找/conf
- sudo cp mime.types /etc/fdfs
3. ERROR - file: ../storage/trunk_mgr/trunk_shared.c, line: 177, "Permission denied" can't be accessed, error info: /home/ubuntu/work/fastdfs
-nginx没有操作文件的权限
-修改nginx.conf文件
-添加user root;
验证安装是否成功
修改nginx的配置文件
cd /usr/local/nginx/conf
vim nginx.conf
添加
location /group1/M00/
{
# 告诉服务器资源的位置
root /home/ubuntu/work/fastdfs/data;
ngx_fastdfs_module;
}
先使用fdfs_upload_file随便上传一个文件
ubuntu@VM-24-14-ubuntu:~/test$ fdfs_upload_file /etc/fdfs/client.conf main.c
group1/M00/00/00/CgAYDmPXbi-APo9RAAAAL6s_8hY93939.c
得到一个文件信息到浏览器访问
http://101.43.140.222/group1/M00/00/00/CgAYDmPXbi-APo9RAAAAL6s_8hY93939.c
然后可以成功下载到文件CgAYDmPXbi-APo9RAAAAL6s_8hY93939.c表明安装成功。