全部安装条件在确保之前的FastDFS 的tracker、storage和client可以正常使用。 模块包源码包下载地址(https://github.com/happyfish100/fastdfs-nginx-module)。
为避免端口直接的冲突,建议备份原有的nginx服务。
cd /usr/local
sudo mv nginx bk-nginx-20221106
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/refs/tags/V1.22.tar.gz
tar -zxvf V1.22.tar.gz
cd fastdfs-nginx-module-1.22/
cd fastdfs-nginx-module-1.22/ 会发现里面有个INSTALL 和 src目录,这个不需要make而是需要重新编译一下storage的Nginx模块。
查看fastdfs-nginx-module模块src决对路径(后面要用决对路径):
# pwd
/home/fly/fastdfs-nginx-module-1.22
(1)下载原始的版本(原始版本有bug):
wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gz
(2)解压:
tar -zxvf nginx_upload_module-2.2.0.tar.gz
(3)下载修改过的nginx upload模块,替换部分原始的文件:
git clone https://github.com/winshining/nginx-upload-module.git
(4)拷贝当前该目录的内容到nginx_upload_module-2.2.0:
cd nginx-upload-module
cp -arf * ../nginx_upload_module-2.2.0
(5)获取到路径:
cd ../nginx_upload_module-2.2.0
pwd
显示:
/home/fly/nginx_upload_module-2.2.0
进入到nginx源码目录(笔者路径:/home/fly/nginx-1.16.1)配置添加模块:
#进入到nginx源码目录,(笔者路径:/home/fly/nginx-1.16.1)
cd nginx-1.16.1/
# 配置添加模块:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_v2_module --with-openssl=../openssl-1.1.1g --add-module=/home/fly/fastdfs-nginx-module-1.22/src --add-module=/home/fly/nginx_upload_module-2.2.0
注意–add-module的路径,用自己的路径,最好是绝对路径,防止错误。 其中/home/fly/fastdfs-nginx-module-1.22/src 是刚才下载的的fastdfs_nginx_module模块的绝对路径,就是在编译Nginx时候,连同这个模块一起编译。
configure时, 出现以下信息表示添加成功:
configuring additional modules
adding module in /home/fly/fastdfs-nginx-module-1.22/src
+ ngx_http_fastdfs_module was configured
adding module in /home/fly/nginx_upload_module-2.2.0
+ ngx_http_upload_module was configured
(1)打开objs/Makefile 文件:
vim objs/Makefile
(2)添加:
ALL_INCS = -I src/core \
-I /usr/include/fastdfs \
-I /usr/include/fastcommon \
-I src/event \
-I src/event/modules \
-I src/os/unix \
-I ../openssl-1.1.1g/.openssl/include \
-I objs \
-I src/http \
-I src/http/modules \
-I src/http/v2 \
-I /usr/local/include
特别需要注意加入两行后 -I 和 \ 的颜色要和原来一致,否则报错:
Makefile:8: recipe for target 'build' failedmake: *** [build] Error 2
make
sudo make install
安装成功后:通过nginx -V 测试编译是否正常。
sudo /usr/local/nginx/sbin/nginx -V
显示:
nginx version: nginx/1.16.1
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
built with OpenSSL 1.1.1g 21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_v2_module --with-openssl=../openssl-1.1.1g --add-module=/home/fly/fastdfs-nginx-module-1.22/src --add-module=/home/fly/nginx_upload_module-2.2.0
(1)切换到fastdfs-nginx-module-1.22/src路径(笔者的路径是/home/fly/fastdfs-nginx-module-1.22/src):
cd /home/fly/fastdfs-nginx-module-1.22/src
# 查看文件
ls
(2)将fastdfs-nginx-module-1.22/src/mod_fastdfs.conf 拷贝到/etc/fdfs/下:
sudo cp mod_fastdfs.conf /etc/fdfs/
因为/etc/fdfs/是默认的加载路径。
(1)切换到fastdfs源码路径(笔者的路径是/home/fly/fastdfs):
cd /home/fly/fastdfs
(2)拷贝相关文件conf/http.conf和conf/mime.types到/etc/fdfs/。
sudo cp conf/http.conf /etc/fdfs/
sudo cp conf/mime.types /etc/fdfs/
创建目录(一定要记得):
mkdir -p /home/fastdfs/mod_fastdfs
修改配置:
vim /etc/fdfs/mod_fastdfs.conf
base_path =/home/fastdfs/mod_fastdfs :保存日志目录 tracker_server =114.215.169.66:22122 :tracker服务器的IP地址以及端口号, 确保跟storage.conf一致即可。 store_path0=/home/fastdfs/storage:确保路径正确并存在。
base_path =/home/fastdfs/mod_fastdfs
# Tracker 服务器IP和端口修改
tracker_server=114.215.169.66:22122
# url 中是否包含 group 名称,改为 true,包含 group
url_have_group_name = true
# store_path0的路径必须和storage.conf的配置一致
store_path0=/home/fastdfs/storage
# 其它的一般默认即可,例如
group_name=group1
storage_server_port=23000
store_path_count=1
主要修改base_path 、tracker_server、url_have_group_name、store_path0。
vim /usr/local/nginx/conf/nginx.conf
配置为支持 group0-group9,以及 M00-M99,以便于以后扩容。
location ~/group([0-9])/M([0-9])([0-9]) {
ngx_fastdfs_module;
}
具体位置:
配置完fastdfs-nginx-module后需要重启nginx。
# 停止:
sudo /usr/local/nginx/sbin/nginx -s stop
# 启动:
sudo /usr/local/nginx/sbin/nginx
如果出现如下错误。需要先停止nginx再启动nginx:
nginx: [emerg] unknown directive "ngx_fastdfs_module" in
/usr/local/nginx/conf/nginx.conf:92
指定配置文件的方式启动:
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx是否启动正常:
ps -ef | grep nginx
成功则显示:
root 53763 1 0 22:13 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 53764 53763 0 22:13 ? 00:00:00 nginx: worker process
如果没有work进程说明启动是异常的,一般有以下原因:
服务器中测试上传。
touch fly.txt
echo "You are not strong, no one brave for you" > fly.txt
sudo /usr/bin/fdfs_upload_file /etc/fdfs/client.conf fly.txt
得到:
group1/M00/00/00/wKgAaGNnwtmAYy4NAAAAKTIQHvk741.txt
拿到存储位置:group1/M00/00/00/wKgAaGNnwtmAYy4NAAAAKTIQHvk741.txt,如果是group1开头,查看group1中storage文件是否存在。
浏览器输入:
http://192.168.10.104/group1/M00/00/00/wKgAaGNnwtmAYy4NAAAAKTIQHvk741.txt
浏览器能显示对应的文本信息。
本文详细介绍了如何构建可靠的文件上传解决方案,重点讲解了nginx-fastdfs和upload-module的安装与配置过程。通过安装和配置Nginx、FastDFS和upload-module,读者可以搭建一个高效、可靠的文件上传系统。 在文章中,介绍了使用nginx-fastdfs和upload-module的优势。提供了详细的步骤和示例,帮助读者完成Nginx、FastDFS和upload-module的安装和配置,并解释了关键的配置文件和组件。 最后,提供了一些测试和验证方法,以确保系统正常运行并满足需求。通过本文,读者将获得一个全面的指南,掌握nginx-fastdfs和upload-module的安装与配置技巧,并能够应用这些知识来构建高效、可靠的文件上传系统。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。