目录
要实现的效果
通过外网http可以访问到存储在fastdfs上的文件
nginx介绍
Nginx是俄罗斯人编写的一款高性能的HTTP和反向代理服务器,在高连接并发的情况下,它能够支持高达50000个并发连接数的响应,但是内存、CPU等系统资源消耗却很低,运行很稳定。目前Nginx在国内很多大型企业都有应用,据最新统计,Nginx的市场占有率已经到33%左右了。而Apache的市场占有率虽然仍然是最高的,但是是呈下降趋势。而Nginx的势头很明显。选择Nginx的理由也很简单:第一,它可以支持5W高并发连接;第二,内存消耗少;第三,成本低,如果采用F5、NetScaler等硬件负载均衡设备的话,需要大几十万。而Nginx是开源的,可以免费使用并且能用于商业用途。
在 storage server 上安装 nginx 的目的是对外通过 http 访问 storage server 上的文 件。使用 nginx 的模块
FastDFS-nginx-module 的作用是通过 http 方式访问 storage 中 的文件,当 storage 本机没有要找的文件时向源
storage 主机代理请求文件。
参考资料
整个安装配置nginx的过程较繁琐,容易出现一些坑
我也不是很明确具体的配置步骤
瞎捣鼓后来可以了
可以参考下面的链接:
https://www.cnblogs.com/Eivll0m/p/5378328.html
https://blog.csdn.net/u013378306/article/details/74852294
nginx安装配置
nginx需要添加fastdfs-nginx-module模块。
安装过程中可能会出现的问题
缺少pcre的依赖
缺少openssl的依赖
yum install pcre-devel
yum install openssl-devel
yum install zlib-devel
上面这三个我都装了
nginx的下载可以直接去官网
fastdfs-nginx-module下载地址: http://nchc.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/data/nginx --add-module=/data/soft/fastdfs-nginx-module/src
make
make install
make的时候如果报错:
可以参考下面的解决方法:(参考不是直接这样配,根据你的fastdfs的数据和日志路径,真实ip,暴露的端口号,分组的个数)
解决办法:
执行以下2条命令,然后重新make
# ln -sv /usr/include/fastcommon /usr/local/include/fastcommon
# ln -sv /usr/include/fastdfs /usr/local/include/fastdfs
拷贝相关文件到/etc/fdfs目录下:
# cp /data/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# cp /data/soft/FastDFS/conf/mime.types /etc/fdfs/
# cp /data/soft/FastDFS/conf/http.conf /etc/fdfs/
# cp /data/soft/FastDFS/conf/anti-steal.jpg /etc/fdfs/
修改nginx.conf的配置:
listen 9999;
location ~/group[1-3]/M00 {
root /data/fastdfs-storage/data;
ngx_fastdfs_module;
}
修改/etc/fdfs/mod_fastdfs.conf的配置:
base_path=/data/fastdfs-storage #保存日志目录
tracker_server=192.168.116.145:22122 #tracker 服务器的 IP 地址以及端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/data/fastdfs-storage # 存储路径
http.need_find_content_type=true # 从文件扩展名查找文件类型 (nginx 时 为true)
group_count = 3 #设置组的个数,事实上这次只使用了group1
在文件末添加如下内容:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs-storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs-storage
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs-storage
建立 M00 至存储目录的符号连接:
# ln -s /data/fastdfs-storage/data /data/fastdfs-storage/data/M00
启动nginx:
# /data/nginx/sbin/nginx
由于我只在一台服务器上搞fastdfs,group_count = 1
,再在文末追加[group1]
即可
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/fdfs_storage
#store_path1=/home/yuqing/fastdfs1
nginx配置文件
我这里监听的端口号是80,这样在浏览器输入url,不用加端口号,默认的是80
除此之外tracker的配置文件 tracker.conf
配置http端口 http.server_port=80
启动nginx -c后面跟的就是nginx的配置文件
./nginx -c /usr/local/nginx/conf/nginx-fastdfs.conf
访问 http://ip/group1/M00/00/00/rBGcalylpKGAZRzMAABHEBghxQ4101.jpg
结果404
查看nginx错误日志
cat /usr/local/nginx/logs/error.log
或者
tail -f /usr/local/nginx/logs/error.log
[2019-04-09 10:46:30] ERROR – file: ../common/fdfs_global.c, line: 52, the format of filename “group1/M00/00/00/rBGcalylpKGAZRzMAABHEBghxQ4101.jpg” is invalid
修改后再重新启动fastdfs和nginx就可以了
再体验
//上传文件
@Test
public void testUpload() throws IOException, MyException {
//加载配置文件
ClientGlobal.initByProperties("config/fastdfs-client.properties");
//创建TrackerClient
TrackerClient trackerClient = new TrackerClient();
//连接tracker
TrackerServer trackerServer = trackerClient.getConnection();
//获取storage
StorageServer storageServer = trackerClient.getStoreStorage(trackerServer);
//创建TrackerClient
StorageClient1 storageClient1 = new StorageClient1(trackerServer,storageServer);
//上传文件
String filePath = "e:/a.txt";
String fileId = storageClient1.upload_file1(filePath, "txt", null); //上传成功后得到的id
System.out.println("fileId : "+fileId);
}
上传一个文本文件
通过外网http访问
转载请注明:汪明鑫的个人博客 » fastdfs 安装配置nginx
说点什么
您将是第一位评论人!