在制作网站、小程序或者APP时,肯定离不开图片的,那么这些图片存放在什么位置?怎么存放?又如何展示呢,那么,这篇文章手把手带你搭建一台属于自己的图片服务器。
话不多说,上号,不对,是上代码:
所需工具:Linux系统+FastDFS+Nginx
1.依赖环境下载
系统: vagrant(centos7)
-
yum install -y gcc-c++ #需要依赖gcc
-
yum install -y pcre #用于支持rewrite模块 pcre-8.32-17
-
yum install -y libevent #FastDFS依赖libevent库 libevent-2.0.21-4.el7.x86_64
-
yum install -y zlib zlib-devel #用于支持gzip模块 zlib-1.2.7-17.el7.x86_64
-
libfastcommon-master.zip #libfastcommon包含了FastDFS运行所需要的一些基础库https://github.com/happyfish100/libfastcommon/releases
-
fastdfs-nginx-module-master.zip # https://codeload.github.com/happyfish100/fastdfs-nginx-module/zip/master
-
FastDFS版本:fastdfs-5.11.zip #https://github.com/happyfish100/fastdfs/archive/V5.11.zip
-
Nginx版本:nginx-1.14.tar.gz : #官网下载: http://nginx.org/en/download.html
2.安装libfastcommon
unzip libfastcommon-1.0.39.zipmv libfastcommon-1.0.39 /usr/local/libfastcommoncd /usr/local/libfastcommon/./make.sh #编译./make.sh install #安装# 检查确认/usr/lib64 和 /usr/lib 目录下都生成了 libfastcommon.so (有些版本可能/usr/lib下不会生成)ls /usr/lib64 | grep libfastcommon.sols /usr/lib | grep libfastcommon.so
3.安装tracker
cd /downloadunzip fastdfs-5.11.zipmv fastdfs-5.11 /usr/local/FastDFScd /usr/local/FastDFS/./make.sh && ./make.sh install #编译之后接着进行安装#确认安装成功,没有报错后,拷贝配置文件到/etc/fdfscp /usr/local/FastDFS/conf/* /etc/fdfs/#,进入/etc/fdfs 目录, 如果没有tracker.conf就拷贝一份tracker.conf.sample 去掉samplecp tracker.conf.sample track.conf#配置tracker.confvim track.conf # 修改以下配置#===============base_path=/home/fastdfs #基础目录,以后的data 和日志目录都会放在此目录下http.server_port=80 #配置http服务端口,这个端口跟后面nginx的监听端口对应mkdir /home/fastdfs#启动tracker,运行如下命令/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart#检查是否启动成功:默认端口22122ps -ef | grep fdfs#检查/home/fastdfs下是否生成data / logs 两个目录ls /home/fastdfs/
4.安装storage
cd /etc/fdfs#如果没有storage.conf 拷贝一份storage.conf.sample 命名为storage.confcp storage.conf.sample storage.conf#配置storage.confvi storage.conf #修改如下配置#===========================group_name=group1 #配置组名,同一个组的storage 互为备份base_path=/home/fastdfs #基础目录#store存放文件的位置(store_path), 可以配置多个, 记得创建路径store_path0=/home/fdfs_storage#如果有多个挂载磁盘则定义多个store_path,如下#store_path1=.....#store_path2=......#配置tracker服务器:IP,阿里云服务器如果需要外部访问请配置公网ip, 不要使用私有iptracker_server=192.168.33.111:22122#如果有多个tracker则配置多个tracker#tracker_server=192.168.33.112:22122#配置http端口http.server_port=80#==========完===========#创建 /home/fdfs_storage 目录mkdir -p /home/fdfs_storage#启动storage/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart#查看启动是否成功fdfs_monitor /etc/fdfs/storage.conf #查看fdfs状态ps -ef | grep fdfs#查看目录是否创建,/home/fdfs_storage/data 应该会自动生成256个文件夹ls /home/fdfs_storage/data
5.测试上传文件
cd /etc/fdfscp client.conf.sample client.confvim client.conf #修改如下配置#=================base_path=/home/fastdfstracker_server=192.168.33.111:22122#=======完========#准备一张图片进行测试/usr/bin/fdfs_test /etc/fdfs/client.conf upload /download/fengjing.jpg#一切正常的话会返回图片地址等信息example file url: http://192.168.33.111/group1/M00/00/00/wKghb1vqf7GAIdYqAAJo1aj_C9s003_big.jpg#检查文件是否存在(文件名被存放在/home/fdfs_storage/data/00/00对应的目录中),如果存在即是保存 OK,此时还无法使用http下载cd /home/fdfs_storage/data/00/00 #查看是否存在wKghb1vqf7GAIdYqAAJo1aj_C9s003_big.jpg
6.FastDFS 和Nginx整合
#解压 fastdfs-nginx-module 到 /usr/local目录下;cd /downloadunzip fastdfs-nginx-module-master.zipmv fastdfs-nginx-module-master /usr/local/fastdfs-nginx-modulecd /usr/local/fastdfs-nginx-module/src#修改config文件# 将文件中的所有 /usr/local/ 路径改为 /usr/ ,#如果后面步骤中编译nginx报错把下面两项做以下修改ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"#拷贝配置文件到/etc/fdfscp mod_fastdfs.conf /etc/fdfs/#修改 /etc/fdfs/mod_fastdfs.conf ;vi /etc/fdfs/mod_fastdfs.conf#======修改以下内容========base_path=/home/fastdfs #保存日志的路径tracker_server=192.168.33.111:22122 #track_server配置的服务端口url_have_group_name=true #url中是否包含group名称store_path0=/home/fdfs_storage #指定文件存储路径(必须和storage.conf配置相同)ls /usr/lib | grep libfdfsclient.sols /usr/lib64 | grep libfdfsclient.somkdir -p /var/temp/nginx/clienttar -zxvf nginx-1.14.0.tar.gz -C /usr/local/#进入解压目录, 日志目录可自己定义,主要是add-modoulecd /usr/local/nginx-1.14.0#添加模块./configure \--prefix=/usr/local/nginx \--add-module=/usr/local/fastdfs-nginx-module/src#在nginx1.14.0目录下执行make && make installvi /usr/local/nginx/conf/nginx.conf#======添加配置===========server {listen 80;server_name 192.168.33.111;location /group1/M00/ {root /home/fdfs_storage/data;ngx_fastdfs_module;}}/usr/local/nginx/sbin/nginx#检查是否启动成功,不成功就去查看错误日志/var/log/nginx/error.logps -ef | grep nginxsystemctl stop firewalld.service/usr/bin/fdfs_test /etc/fdfs/client.conf upload /download/123.jpgexample file url: http://192.168.33.111/group1/M00/00/00/wKghb1vqf7GAIdYqAAJo1aj_C9s003_big.jpghttp://1192.168.33.111/group1/M00/00/00/wKghb1vqf7GAIdYqAAJo1aj_C9s003_big.jpg#查看nginx 日志可以看到访问记录tail -f -n 100 /var/log/nginx/access.log
7.项目中如何使用fastdfs
<dependency><groupId>net.oschina.zcx7878</groupId><artifactId>fastdfs-client-java</artifactId><version>1.27.0.0</version></dependency>配置文件: fdfs.conf# 连接tracker服务器超时时长connect_timeout = 10# socket连接超时时长network_timeout = 30# 文件内容编码charset = UTF-8# tracker服务器端口http.tracker_http_port = 80http.anti_steal_token = no#密码http.secret_key = 123456# tracker服务器IP和端口(可以写多个)tracker_server = 192.168.33.111:22122package com.zc;import org.csource.fastdfs.*;public class FastdfsTest {public static void main(String[] args) throws Exception {//1、把FastDFS提供的jar包添加到工程中//2、初始化全局配置。加载一个配置文件。ClientGlobal.init("fdfs.conf");//3、创建一个TrackerClient对象。TrackerClient trackerClient = new TrackerClient();//4、创建一个TrackerServer对象。TrackerServer trackerServer = trackerClient.getConnection();//5、声明一个StorageServer对象,null。StorageServer storageServer = null;//6、获得StorageClient对象。StorageClient storageClient = new StorageClient(trackerServer, storageServer);//7、直接调用StorageClient对象方法上传文件即可。String[] result = storageClient.upload_file("/Users/zc21/Downloads/img.jpg", "jpg", null);StringBuilder sb = new StringBuilder("http://192.168.33.111/");sb.append(result[0]).append("/").append(result[1]);System.out.println("图片访问地址: " + sb.toString());}}
这样,就能实现上传一张图片,返回一个图片地址,直接访问这个地址,即可看见这张图片,图片的大小和位置,可以用css+js控制
439



被折叠的 条评论
为什么被折叠?



