服务器大本营

 找回密码
 我要入营

QQ登录

只需一步,快速开始

查看: 4|回复: 0

怎么搭建图片服务器?Linux图片服务器搭建教程

[复制链接]

8万

敬重

925

主题

207

精华

管理员

积分
9727

启航之章进阶之印里程之碑突破之证飞跃之星蜕变之勋卓越之路龙年行大运

QQ
发表于 4 小时前 | 显示全部楼层 |阅读模式

我要入营,结交更多好友,开启更多功能,轻松玩转服务器大本营!

您需要 登录 才可以下载或查看,没有账号?我要入营

x
系统:CentOS 7

环境和依赖
按照后面标注的方式下载或者安装好需要的依赖
  1. yum install -y  gcc-c++  #需要依赖gcc
  2. yum install -y  pcre  #用于支持rewrite模块   pcre-8.32-17

  3. yum  install -y  libevent  #FastDFS依赖libevent库 libevent-2.0.21-4.el7.x86_64

  4. yum  install -y  zlib zlib-devel    #用于支持gzip模块 zlib-1.2.7-17.el7.x86_64

  5. libfastcommon-master.zip   #libfastcommon包含了FastDFS运行所需要的一些基础库。https://github.com/happyfish100/libfastcommon/releases

  6. fastdfs-nginx-module-master.zip  # https://codeload.github.com/happyfish100/fastdfs-nginx-module/zip/master

  7. FastDFS版本:fastdfs-5.11.zip  #https://github.com/happyfish100/fastdfs/archive/V5.11.zip

  8. Nginx版本:nginx-1.14.tar.gz : #官网下载: http://nginx.org/en/download.html
复制代码

安装依赖
可以yum 安装的先直接yum 安装
将所有下载好依赖上传至服务器/download目录

安装libfastcommon
  1. unzip libfastcommon-1.0.39.zip
  2. mv libfastcommon-1.0.39 /usr/local/libfastcommon
  3. cd /usr/local/libfastcommon/
  4. ./make.sh           #编译
  5. ./make.sh install   #安装
  6. # 检查确认/usr/lib64  和 /usr/lib 目录下都生成了 libfastcommon.so (有些版本可能/usr/lib下不会生成)
  7. ls /usr/lib64  | grep libfastcommon.so  
  8. ls /usr/lib  | grep libfastcommon.so
复制代码

安装tracker
FastDFS由跟踪服务器(tracker server)、存储服务器(storage server)和客户端组成,
fastdfs的tracker 和storage其实用的是同一个服务,只是配置文件不同
Tracker是FastDFS的协调者,负责管理所有的storage server和group
storage server 负责存储服务
  1. cd /download
  2. unzip  fastdfs-5.11.zip
  3. mv fastdfs-5.11 /usr/local/FastDFS
  4. cd /usr/local/FastDFS/
  5. ./make.sh && ./make.sh install  #编译之后接着进行安装
  6. #确认安装成功,没有报错后,拷贝配置文件到/etc/fdfs
  7. cp /usr/local/FastDFS/conf/* /etc/fdfs/
  8. #,进入/etc/fdfs 目录, 如果没有tracker.conf就拷贝一份tracker.conf.sample 去掉sample
  9. cp tracker.conf.sample track.conf
复制代码

配置tracker.conf
  1. vi track.conf  # 修改以下配置
  2. #===============
  3. base_path=/home/fastdfs  #基础目录,以后的data 和日志目录都会放在此目录下
  4. http.server_port=80 #配置http服务端口,这个端口跟后面nginx的监听端口对应
复制代码

创建目录(目录可能不存在)
  1. mkdir /home/fastdfs
复制代码

启动tracker,运行如下命令:
  1. /usr/bin/fdfs_trackerd /etc/fdfs/track.conf restart
  2. #检查是否启动成功:默认端口22122
  3. ps -ef | grep fdfs  
  4. #检查/home/fastdfs下是否生成data / logs 两个目录
  5. ls  /home/fastdfs/
复制代码

安装storage
fastdfs的tracker 和storage其实用的是同一个服务,只是配置文件不同,我们只需要使用storage的配置文件启动fastdfs即是storage服务
  1. cd /etc/fdfs
  2. #如果没有storage.conf  拷贝一份storage.conf.sample 命名为storage.conf
  3. cp storage.conf.sample  storage.conf
  4. #配置storage.conf
  5. vi storage.conf  #修改如下配置
  6. #===========================
  7. group_name=group1 #配置组名,同一个组的storage 互为备份
  8. base_path=/home/fastdfs #基础目录
  9. #store存放文件的位置(store_path), 可以配置多个, 记得创建路径
  10. store_path0=/home/fdfs_storage
  11. #如果有多个挂载磁盘则定义多个store_path,如下
  12. #store_path1=.....
  13. #store_path2=......

  14. #配置tracker服务器:IP,阿里云服务器如果需要外部访问请配置公网ip, 不要使用私有ip
  15. tracker_server=192.168.112.130:22122
  16. #如果有多个tracker则配置多个tracker
  17. #tracker_server=192.168.112.131:22122
  18. #配置http端口
  19. http.server_port=80
  20. #==========完===========
  21. #创建 /home/fdfs_storage 目录
  22. mkdir -p /home/fdfs_storage
  23. #启动storage
  24. /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
  25. #查看启动是否成功
  26. fdfs_monitor /etc/fdfs/storage.conf   #查看fdfs状态
  27. ps -ef | grep fdfs
  28. #查看目录是否创建,/home/fdfs_storage/data 应该会自动生成256个文件夹
  29. ls   /home/fdfs_storage/data
复制代码

测试上传文件
fastdfs自带了测试客户端,我们可以使用它测试搭建是否成功
  1. cd /etc/fdfs
  2. cp client.conf.sample  client.conf
  3. vim client.conf  #修改如下配置
  4. #=================
  5. base_path=/home/fastdfs
  6. tracker_server=192.168.112.130:22122
  7. #=======完========
  8. #准备一张图片进行测试
  9. /usr/bin/fdfs_test /etc/fdfs/client.conf upload  /download/123.jpg
  10. #一切正常的话会返回图片地址等信息
  11. example file url: [img]http://192.168.112.130/group1/M00/00/00/wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg[/img]
  12. #检查文件是否存在(文件名被存放在/home/fdfs_storage/data/00/00对应的目录中),如果存在即是保存  OK,此时还无法使用http下载
  13. cd  /home/fdfs_storage/data/00/00  #查看是否存在wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg
复制代码

FastDFS 和Nginx整合
单独的Fastdfs 对http支持不好,所以作为图片服务器,我们一般都会整合Nginx来支持图片的http访问
  1. #解压 fastdfs-nginx-module 到 /usr/local目录下;
  2. cd /download
  3. unzip  fastdfs-nginx-module-master.zip
  4. mv fastdfs-nginx-module-master  /usr/local/fastdfs-nginx-module
  5. cd /usr/local/fastdfs-nginx-module/src
复制代码

修改config文件
  1. # 将文件中的所有 /usr/local/ 路径改为 /usr/ ,
  2. #如果后面步骤中编译nginx报错把下面两项做以下修改
  3. ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
  4. CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
复制代码

拷贝配置文件到/etc/fdfs
  1. cp mod_fastdfs.conf  /etc/fdfs/
  2. #修改 /etc/fdfs/mod_fastdfs.conf ;
  3. vi /etc/fdfs/mod_fastdfs.conf
  4. #======修改以下内容========
  5. base_path=/home/fastdfs  #保存日志的路径
  6. tracker_server=192.168.112.130:22122  #track_server配置的服务端口
  7. url_have_group_name=true        #url中是否包含group名称
  8. store_path0=/home/fdfs_storage  #指定文件存储路径(必须和storage.conf配置相同)
复制代码

检查/usr/lib 和usr/lib64下是否有 libfdfsclient.so
  1. ls  /usr/lib | grep libfdfsclient.so
  2. ls  /usr/lib64 | grep libfdfsclient.so
复制代码

创建nginx/client目录
  1. mkdir -p /var/temp/nginx/client
复制代码

安装nginx
  1. tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/
复制代码

编译nginx,加入fastdfs模块, 如果之前装过nginx, 需要重新安装
  1. #进入解压目录, 日志目录可自己定义,主要是add-modoule
  2. cd /usr/local/nginx-1.14.0
  3. #添加模块
  4. ./configure \
  5. --prefix=/usr/local/nginx \
  6. --add-module=/usr/local/fastdfs-nginx-module/src
复制代码

编译并安装
  1. #在nginx1.14.0目录下执行
  2. make && make install
复制代码

编译后在/usr/local下生成nginx 目录
修改nginx 配置文件
  1. vi /usr/local/nginx/conf/nginx.conf
  2. #======添加配置===========
  3. server {
  4.               listen 80;
  5.               server_name 192.168.112.130;
  6.               location /group1/M00/ {
  7.                   root /home/fdfs_storage/data;
  8.                   ngx_fastdfs_module;
  9.               }
  10.          }
复制代码

启动nginx
  1. /usr/local/nginx/sbin/nginx

  2. #检查是否启动成功,不成功就去查看错误日志/var/log/nginx/error.log
  3. ps -ef | grep nginx
复制代码

关闭防火墙或者添加对应端口
  1. systemctl stop firewalld.service
复制代码

再次上传一张图片
  1. /usr/bin/fdfs_test /etc/fdfs/client.conf upload  /download/123.jpg
复制代码

得到一个地址
  1. example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg
复制代码

在浏览器中访问该图片:
  1. http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg
复制代码

如果能够正常浏览图片那就大功告成
  1. #查看nginx 日志可以看到访问记录
  2. tail -f  -n 100 /var/log/nginx/access.log
复制代码

PS: nginx fastfds的安装最坑的就是一些版本中动态链接的问题, 在使用之前一些版本的时候经常会出现各种问题,如果确实需要使用之前的版本可能就需要自己去改一些动态链接的指向了,如果没有特别版本要求,使用本文的版本是没有问题的

项目中如何使用fastdfs
使用方式比较简单,我们就直接拿来一个示例代码了

导入依赖(也可以自己去git编译一个jar包出来)
  1.        <dependency>
  2.             <groupId>net.oschina.zcx7878</groupId>
  3.             <artifactId>fastdfs-client-java</artifactId>
  4.             <version>1.27.0.0</version>
  5.         </dependency>
复制代码

配置文件: fdfs.conf
  1. # 连接tracker服务器超时时长
  2. connect_timeout = 10
  3. # socket连接超时时长
  4. network_timeout = 30
  5. # 文件内容编码
  6. charset = UTF-8
  7. # tracker服务器端口
  8. http.tracker_http_port = 80
  9. http.anti_steal_token = no
  10. #密码
  11. http.secret_key = 123456
  12. # tracker服务器IP和端口(可以写多个)
  13. tracker_server = 192.168.58.128:22122
复制代码

测试代码
  1. public class FastdfsTest {

  2.     @Test
  3.     public void testUpload() throws Exception {

  4.         //1、把FastDFS提供的jar包添加到工程中
  5.         //2、初始化全局配置。加载一个配置文件。
  6.         ClientGlobal.init("F:\\wolf-shop\\src\\main\\resources\\fdfs.conf");
  7.         //3、创建一个TrackerClient对象。
  8.         TrackerClient trackerClient = new TrackerClient();

  9.         //4、创建一个TrackerServer对象。
  10.         TrackerServer trackerServer = trackerClient.getConnection();
  11.         //5、声明一个StorageServer对象,null。
  12.         StorageServer storageServer = null;
  13.         //6、获得StorageClient对象。
  14.         StorageClient storageClient = new StorageClient(trackerServer, storageServer);

  15.         //7、直接调用StorageClient对象方法上传文件即可。
  16.         String[] result = storageClient.upload_file("F:\\redis_demo\\src\\main\\resources\\logo.png", "png", null);
  17.         StringBuilder sb = new StringBuilder("http://192.168.112.130/");
  18.         sb.append(result[0]).append("/").append(result[1]);
  19.         System.out.println("图片访问地址: "+sb.toString());
  20.     }
  21. }
复制代码
项目中根据自己的实际使用情况抽取一个工具类用起来就方便了

感谢您的阅读,服务器大本营-技术文章内容集合站,助您成为更专业的服务器管理员!
一入IDC深似海,从此你我是良人!
您需要登录后才可以回帖 登录 | 我要入营

本版积分规则

点击直接加入[服务器大本营QQ频道]
滴!摸鱼时间到~
Loading...

QQ|Archiver|手机版|网站地图|服务器大本营 ( 赣ICP备2021009089号 )

GMT+8, 2025-10-16 18:30 , Processed in 0.064825 second(s), 26 queries , Gzip On.

Powered by 服务器大本营

© 2021-2023 联系飞飞

快速回复 返回顶部 返回列表