fastdfs-安装fastdfs-nginx-module和配置使用
fastdfs-nginx-module这个模块主要有什么作用呢?
1、为了实现下载和方便访问文件。
2、访问源文件,由于上传一个大文件到一个组的一个stoage1服务器后,这里的同组的storage2将会进行进行通部复制,如果复制没有完成,用户访问值storage2的时候,那么这个将会没有办法完整访问的,所以fastdfs-nginx-module这个模块,将会查找一个源文件,也就是存在storage1的服务器上,可以访问storage1上的文件。
下面分为两种情况
第一种:没有安装nginx,需要重新安装这个过程的
第二种,已经安装好nginx,现在是添加模块的。
首先下载fastdfs-nginx-module模块
github地址:https://github.com/happyfish100/fastdfs-nginx-module
针对第一种情况:
进入nginx的源码目录(nginx自行下载)
./configure --prefix=... --add-module=/home/bing/fastdfs-nginx-module/src/ ...
make
make install
这里安装就不写nginx的其他模块了,比如
--prefix=path :定义一个目录,存放服务器上的文件 ,也就是nginx的安装目录。默认使用 /usr/local/nginx。
--sbin-path=path :设置nginx的可执行文件的路径,默认为 prefix/sbin/nginx.
--conf-path=path :设置在nginx.conf配置文件的路径。nginx允许使用不同的配置文件启动,通过命令行中的-c选项。默认为prefix/conf/nginx.conf.
--pid-path=path :设置nginx.pid文件,将存储的主进程的进程号。安装完成后,可以随时改变的文件名 , 在nginx.conf配置文件中使用 PID指令。默认情况下,文件名 为prefix/logs/nginx.pid.
--error-log-path=path :设置主错误,警告,和诊断文件的名称。安装完成后,可以随时改变的文件名 ,在nginx.conf配置文件中 使用 的error_log指令。默认情况下,文件名 为prefix/logs/error.log.
在这里就直接写--add-module,这里指向的就是fastdfs-nginx-module的源码路径,一定要进入到src目录下,然后执行make ,再执行make
install
make:主要是用来编译的,它从Makefile中读取指令,然后编译生成一个可执行文件在nginx源码目录下的objs,这个可执行文件时nginx
make install:主要是实现安装,它也从Makefile中读取指令,安装到指定的位置。
下面继续说一下如果安装完成nginx,现在在安装一个模块的问题,该如何解决,很多时候,我们是不能说,再重新安装nginx的,所以必须想一个办法实现动态安装module。
首先查看nginx已经安装了哪些模块
# nginx -V
nginx version: nginx/1.10.0
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module
可以看到列出了一些nginx的信息,包括已经安装的一些模块。
那么我们可以重新编译这些模块,同时在通过--add-module添加模块
例如上面的,重新进入nginx的源码目录
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module--add-module=/home/bing/fastdfs-nginx-module/src/
make
可以看到红色部分,重新添加一个--add-module,指定需要添加的模块的源码目录路径,然后执行make,特别注意,这里不需要执行make install
编译之后,将会在objs的目录下重新生成一个nginx的可执行文件,可以复制,然后用来覆盖原来安装nginx时生成的nginx文件,这个文件默认在/usr/local/nginx/sbin/下,为了安全起见,向备份原来的文件
cd /usr/local/nginx/sbin
cp nginx nginx.back
cp ..../objs/nginx /usr/local/nginx/sbin
然后重新启动nginx
那么查看是否安装成功这个模块
/usr/local/nginx/sbin/nginx -V
在这里要注意,我们也可以复制nginx 到/usr/local/sbin下面,这个样子就可以直接nginx -V,不需要输入完整路径。
安装完成这个fastdfs-nginx-module后,接下来,将是如何配置这个模块
在fastdfs的源码安装包下面的conf下面,我们需要复制两个文件至/etc/fdfs/下
cp http.conf mime.types /etc/fdfs/
同时把fastdfs-nginx-modul源码包的src目录下的mod_fastdfs.conf复制至/etc/fdfs/
那么可以看到/etc/fdfs下有的文件
-rwxrwxrwx 1 root root 1443 2月 10 03:33 client.conf
-rwxrwxrwx 1 root root 859 2月 8 23:44 http.conf
-rwxrwxrwx 1 root root 31172 2月 8 23:24 mime.types
-rwxrwxrwx 1 root root 3693 2月 9 17:14 mod_fastdfs.conf
-rwxrwxrwx 1 root root 7923 2月 10 04:07 storage.conf
-rwxrwxrwx 1 root root 71 2月 10 02:46 storage_ids.conf
-rwxrwxrwx 1 root root 7318 2月 10 01:51 tracker.conf
然后配置mod_fastdfs.conf这个文件,主要以下几个
# the base path to store log files
base_path=/tmp
tracker_server=192.168.1.67:22122
#include http.conf
group_name=group1
url_have_group_name = true
store_path0=/home/wwwroot/default
# group settings for group #1
# since v1.14
# when support multi-group on this storage server, uncomment following section
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/wwwroot/default
# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
#[group2]
#group_name=group2
#storage_server_port=23000
#store_path_count=1
#store_path0=/home/wwwroot/default
如果这里有多个group,测配置多个group,这里只有一个group,所以只配置group1
配置完成这个之后,我们将在nginx的配置文件中配置一下
server {
listen 8080 ;
server_name 192.168.1.67;
index index.html index.htm index.php;
root /home/wwwroot/default;
location /group1/M00 {
ngx_fastdfs_module;
}
}
建立软连接
ln -s /home/wwwroot/default/data /home/wwwroot/default/data/M00
重新启动nginx,将会如下图出现,关键是红色部分
Starting nginx... ngx_http_fastdfs_set pid=18283
done
上传之后测试:
http://192.168.1.67:8080/group1/M00/00/00/wKgBQ1ihmzuAIjAMAAAPBAI7S14151.png
如果可以看到图片,说明成功了。
如果不能访问的话,可能是8080端口没有开放,执行一下命令开放端口
iptables -A INPUT -ptcp --dport 8080 -j ACCEPT
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)