前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >腾讯云服务器如何搭建图片服务器?

腾讯云服务器如何搭建图片服务器?

原创
作者头像
云上云
修改于 2019-07-09 04:24:32
修改于 2019-07-09 04:24:32
50.9K0
举报
文章被收录于专栏:上云上云

网上虽然有不少资料,但是很多教程写的并不完整,照着去做的时候会出现各种各样的问题,在网上也搜不出个解决方式来, 其实主要都是版本的问题,之前一些版本引用的库位置有问题,需要自己修改,我们还是自己整理一遍整个流程,用起来才放心.安装的时候请按照相同的版本安装,之前的一些版本确实是会出现不少问题的

腾讯云服务器:https://cloud.tencent.com/product/cvm
系统: Centos7

环境和依赖

按照后面标注的方式下载或者安装好需要的依赖

代码语言:txt
AI代码解释
复制
系统: 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

安装依赖

可以yum 安装的先直接yum 安装

将所有下载好依赖上传至服务器/download目录

安装libfastcommon
代码语言:txt
AI代码解释
复制
unzip libfastcommon-1.0.39.zip 
 mv libfastcommon-1.0.39 /usr/local/libfastcommon
cd /usr/local/libfastcommon/
./make.sh           #编译
./make.sh install   #安装
# 检查确认/usr/lib64  和 /usr/lib 目录下都生成了 libfastcommon.so (有些版本可能/usr/lib下不会生成)
ls /usr/lib64  | grep libfastcommon.so  
ls /usr/lib  | grep libfastcommon.so
安装tracker

FastDFS由跟踪服务器(tracker server)、存储服务器(storage server)和客户端组成,

fastdfs的tracker 和storage其实用的是同一个服务,只是配置文件不同

Tracker是FastDFS的协调者,负责管理所有的storage server和group

storage server 负责存储服务

代码语言:txt
AI代码解释
复制
cd /download
unzip  fastdfs-5.11.zip
 mv fastdfs-5.11 /usr/local/FastDFS
cd /usr/local/FastDFS/
./make.sh && ./make.sh install  #编译之后接着进行安装
#确认安装成功,没有报错后,拷贝配置文件到/etc/fdfs
cp /usr/local/FastDFS/conf/* /etc/fdfs/
#,进入/etc/fdfs 目录, 如果没有tracker.conf就拷贝一份tracker.conf.sample 去掉sample
cp tracker.conf.sample track.conf

配置tracker.conf ;

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

创建目录(目录可能不存在)

代码语言:txt
AI代码解释
复制
mkdir /home/fastdfs

启动tracker,运行如下命令:

代码语言:txt
AI代码解释
复制
/usr/bin/fdfs_trackerd /etc/fdfs/track.conf restart
#检查是否启动成功:默认端口22122
ps -ef | grep fdfs  
#检查/home/fastdfs下是否生成data / logs 两个目录
ls  /home/fastdfs/
安装storage

fastdfs的tracker 和storage其实用的是同一个服务,只是配置文件不同,我们只需要使用storage的配置文件启动fastdfs即是storage服务

代码语言:txt
AI代码解释
复制
cd /etc/fdfs 
#如果没有storage.conf  拷贝一份storage.conf.sample 命名为storage.conf
cp storage.conf.sample  storage.conf
#配置storage.conf
vi 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, 不要使用私有ip
tracker_server=192.168.112.130:22122
#如果有多个tracker则配置多个tracker
#tracker_server=192.168.112.131: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
测试上传文件

fastdfs自带了测试客户端,我们可以使用它测试搭建是否成功

代码语言:txt
AI代码解释
复制
cd /etc/fdfs
cp client.conf.sample  client.conf
vim client.conf  #修改如下配置
#=================
base_path=/home/fastdfs
tracker_server=192.168.112.130:22122
#=======完========
#准备一张图片进行测试
/usr/bin/fdfs_test /etc/fdfs/client.conf upload  /download/123.jpg
#一切正常的话会返回图片地址等信息
example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg
#检查文件是否存在(文件名被存放在/home/fdfs_storage/data/00/00对应的目录中),如果存在即是保存  OK,此时还无法使用http下载
cd  /home/fdfs_storage/data/00/00  #查看是否存在wKhwgltd_uyAZSPfAAJHNmHqPh0482_big.jpg

FastDFS 和Nginx整合

单独的Fastdfs 对http支持不好,所以作为图片服务器,我们一般都会整合Nginx来支持图片的http访问

代码语言:txt
AI代码解释
复制
#解压 fastdfs-nginx-module 到 /usr/local目录下;
cd /download
unzip  fastdfs-nginx-module-master.zip 
mv fastdfs-nginx-module-master  /usr/local/fastdfs-nginx-module
cd /usr/local/fastdfs-nginx-module/src

修改config文件,

代码语言:txt
AI代码解释
复制
# 将文件中的所有 /usr/local/ 路径改为 /usr/ , 
#如果后面步骤中编译nginx报错把下面两项做以下修改
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

拷贝配置文件到/etc/fdfs

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

检查/usr/lib 和usr/lib64下是否有 libfdfsclient.so

代码语言:txt
AI代码解释
复制
ls  /usr/lib | grep libfdfsclient.so
ls  /usr/lib64 | grep libfdfsclient.so

创建nginx/client目录

代码语言:txt
AI代码解释
复制
mkdir -p /var/temp/nginx/client

安装nginx

代码语言:txt
AI代码解释
复制
tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/

编译nginx,加入fastdfs模块, 如果之前装过nginx, 需要重新安装

代码语言:txt
AI代码解释
复制
#进入解压目录, 日志目录可自己定义,主要是add-modoule
cd /usr/local/nginx-1.14.0
#添加模块
./configure \
--prefix=/usr/local/nginx \
--add-module=/usr/local/fastdfs-nginx-module/src

编译并安装

代码语言:txt
AI代码解释
复制
#在nginx1.14.0目录下执行
make && make install

编译后在/usr/local下生成nginx 目录

修改nginx 配置文件

代码语言:txt
AI代码解释
复制
vi /usr/local/nginx/conf/nginx.conf
#======添加配置===========
 server {
              listen 80;
              server_name 192.168.112.130;
              location /group1/M00/ {
                  root /home/fdfs_storage/data;
                  ngx_fastdfs_module;
              }
         }

启动nginx

代码语言:txt
AI代码解释
复制
 /usr/local/nginx/sbin/nginx 

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

关闭防火墙或者添加对应端口

代码语言:txt
AI代码解释
复制
systemctl stop firewalld.service

再次上传一张图片

代码语言:txt
AI代码解释
复制
/usr/bin/fdfs_test /etc/fdfs/client.conf upload  /download/123.jpg

得到一个地址

代码语言:txt
AI代码解释
复制
example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg

在浏览器中访问该图片:

代码语言:txt
AI代码解释
复制
http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg

如果能够正常浏览图片那就大功告成,

代码语言:txt
AI代码解释
复制
#查看nginx 日志可以看到访问记录
tail -f  -n 100 /var/log/nginx/access.log

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

项目中如何使用fastdfs

使用方式比较简单,我们就直接拿来一个示例代码了

导入依赖(也可以自己去git编译一个jar包出来)

代码语言:txt
AI代码解释
复制
        <dependency>
            <groupId>net.oschina.zcx7878</groupId>
            <artifactId>fastdfs-client-java</artifactId>
            <version>1.27.0.0</version>
        </dependency>

配置文件: fdfs.conf

代码语言:txt
AI代码解释
复制
# 连接tracker服务器超时时长
connect_timeout = 10
# socket连接超时时长
network_timeout = 30
# 文件内容编码
charset = UTF-8
# tracker服务器端口
http.tracker_http_port = 80
http.anti_steal_token = no
#密码
http.secret_key = 123456
# tracker服务器IP和端口(可以写多个)
tracker_server = 192.168.58.128:22122

测试代码

代码语言:txt
AI代码解释
复制
public class FastdfsTest {

    @Test
    public void testUpload() throws Exception {

        //1、把FastDFS提供的jar包添加到工程中
        //2、初始化全局配置。加载一个配置文件。
        ClientGlobal.init("F:\\wolf-shop\\src\\main\\resources\\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("F:\\redis_demo\\src\\main\\resources\\logo.png", "png", null);
        StringBuilder sb = new StringBuilder("http://192.168.112.130/");
        sb.append(result[0]).append("/").append(result[1]);
        System.out.println("图片访问地址: "+sb.toString());
    }
}

项目中根据自己的实际使用情况抽取一个工具类用起来就方便了

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
从性能到成本,深度剖析 RK3588 与 RK3576 怎么选
在中国半导体产业的版图中,瑞芯微作为国内SoC芯片领跑者,凭借其在处理器芯片设计领域的深厚积累和持续创新,推出很多智能应用处理器芯片,在嵌入式系统领域得到大规模的应用。
用户11537198
2025/03/07
1580
深度探秘:瑞芯微 RK3568J 视频图像处理框架全解析
RK3568J是瑞芯微四核ARM Cortex-A55@1.8GHz工业旗舰处理器。 创龙科技基于RK3568J所设计的工业核心板(SOM-TL3568)板载的CPU、ROM、RAM、电源、晶振、连接器等所有元器件均采用国产工业级方案,国产化率达100%!
创龙科技Tronlong
2024/12/23
1640
深度探秘:瑞芯微 RK3568J 视频图像处理框架全解析
RK3588 EVB开发板原理图讲解【八】 RK3588 power Tree
这部分是DCDC部分,把12V降压到5V和4V,其中4V给rk806  5V工给外设 主要是usb。
用户11537198
2025/03/06
1250
于细微处见精致,RK3568开发板演绎美观与功能的和谐!
RK3568主板属于嵌入式原型机,普遍适用于智慧显示终端产品、视频类终端产品、工业自动化终端产品,如:广告机、数字标牌、智能自肋终端、智能零售终端、O2O智能设备、工控主机、机器人设备等。
用户11537198
2025/03/07
830
风火轮科技又发新品啦--YY3568开发板
风火轮近来又推出一款新的嵌入式主板YY3568它是一款基于瑞芯微RK3568 4核处理器的ARM主板,性价比极高;现在瑞芯微的旗舰款是rk3588主打性能,这个rk3568是主打性价比的定位,接口丰富,算力能满足大部份端级的需求,价格又做到极低,用到机器人、广告机、门禁闸机,自动售卖机控制等等走量的场景最适合,给这个本来就热闹的市场加入了新的活力!采用核心板+功能底板的设计方式RK3568采用四核64位Cortex-A55处理器,全新ARM V8.2-A架构,主频高达2.0GHZ,Mali G52,1T
用户9733784
2023/04/24
5580
风火轮科技又发新品啦--YY3568开发板
惊艳!200MSPS采样率,RK3588F高速AD采集与实时显示案例来了!
科技飞速发展,高速数据采集与实时显示技术成为众多领域的关键需求。今天给大家分享一个基于瑞芯微RK3588J + FPGA的高速AD采集与实时显示案例。适用开发环境如下:
创龙科技Tronlong
2025/02/25
1030
惊艳!200MSPS采样率,RK3588F高速AD采集与实时显示案例来了!
简谈RK3588S超高配置32G+256G,高清大图赏析
RK3588S 采用了先进的四核 Cortex-A76 和四核 Cortex-A55 大小核架构。Cortex-A76 核心提供了强劲的计算能力,能够轻松应对复杂的多任务处理和高强度的运算需求,无论是运行大型软件还是进行数据处理,都能高效运行。而 Cortex-A55 核心则在低负载场景下,以出色的能效比保障系统的稳定运行,降低整体功耗。这种大小核的协同工作模式,既保证了高性能,又兼顾了低功耗,为设备的长时间稳定运行提供了坚实基础。
用户11537198
2025/03/06
990
RK3588 EVB开发板原理图讲解【六】
RK3588 eMMC接口和FSPI Flash(一个复用口FSPI_M0)接口复用,在eMMC接口设计时,eMMC信号接法请按参考原理图,包含各路电源去耦电容。
用户11537198
2025/03/03
110
迅为干货 |瑞芯微RK3568开发板TFTP&NFS烧写(上)
使用网络烧写的方式来进行调试是非常方便的,本次推文将介绍使用tftp在服务器下载Linux内核镜像和设备树,并使用NFS网络挂载根文件系统的方法。
用户9167207
2022/06/09
1.4K0
迅为干货 |瑞芯微RK3568开发板TFTP&NFS烧写(上)
瑞芯微RK3568开发板在智慧交通行业中的应用方案
智能交通安全监测系统是通过利用高性能处理器和先进的图像处理算法,实现对交通场景的实时监测、分析和预警,以提高交通安全水平。以下是基于RK3568处理器的智能交通安全监测系统产品的应用方案:
用户10555372
2023/05/08
3200
瑞芯微RK3568开发板在智慧交通行业中的应用方案
RK3588 EVB开发板原理图讲解【四】
接口标准及特性PCIe(Peripheral Component Interconnect Express)是一种高速串行接口标准,用于连接主板和外部设备。它具备以下特性:
用户11537198
2025/03/01
1090
迅为RK3588开发板 | 在高性能处理器上如何使用GPIO
GPIO,即General-Purpose Input/Output,指的是可以由软件控制的通用输入输出引脚。每个GPIO引脚可以配置为输入或输出,用来读取外部设备的状态(如按键)或控制外设(如LED、马达等)
用户10555372
2024/09/19
2050
迅为RK3588开发板 | 在高性能处理器上如何使用GPIO
大揭秘!瑞芯微RK3568对比RK3399性能解析
RK3568核心板是武汉万象奥科基于瑞芯微Rockchip的RK3568设计的一款高性能核心板。它采用四核Cortex-A55架构,最高主频可达2.0GHz,同时集成Mali-G52 2EE GPU,支持4K@60fps H.265/H.264/VP9解码和4K@60fps H.265/H.264编码。此外,RK3568支持多种接口,包括USB 3.0、PCIe 2.0、Gigabit Ethernet、MIPI-CSI、MIPI-DSI等。
武汉万象奥科
2023/04/20
2.7K0
大揭秘!瑞芯微RK3568对比RK3399性能解析
动图评测基于瑞芯微rk3588设计开发板
2021年12月16日第六届瑞芯微开发者大会上,瑞芯微发布了全新一代旗舰处理器——RK3588, 相较前一代产品,RK3588性能提高20%~30%!同时采用新一代8nm制程工艺,也将大幅度降低功耗。这款处理器芯​片集成60多亿晶体管,采用8核CPU,8个EEGPU,6TOPS算力NPU,具有高算力、超强多媒体、丰富接口等特点
用户4984837
2022/12/01
1.5K0
动图评测基于瑞芯微rk3588设计开发板
RK3568 vs 树莓派4: 嵌入式计算的巅峰之争
嵌入式计算领域一直以来都有着激烈的竞争,RK3568和树莓派4作为两个备受瞩目的平台,引起了广泛的关注。本文将以处理器性能、扩展性、功耗和软件支持等方面对RK3568和树莓派4进行综合比较,以帮助读者更好的了解这两个平台的优势和适用场景。
武汉万象奥科
2023/06/16
1.6K0
RK3568 vs 树莓派4: 嵌入式计算的巅峰之争
RK3568|3588|3566处理器属于什么档次?
随着科技的迅猛发展,处理器作为计算机和电子设备的核心组件,其性能的提升对于设备的功能和用户体验起着至关重要的作用。在处理器市场中,不同的处理器被划分为不同的档次,以便用户能够更好地选择适合自己需求的产品。那么,RK3568处理器属于什么档次呢?本文将从性能、市场定位等方面对RK3568处理器的档次进行探讨。
武汉万象奥科
2023/05/16
1.6K0
RK3568|3588|3566处理器属于什么档次?
史上最全! 瑞芯微RK3568核心板评估板资源分享!
高性能处理器:采用四核A55架构CPU,G52 GPU;内置NPU,可提供1T算力
武汉万象奥科
2023/04/27
8950
史上最全! 瑞芯微RK3568核心板评估板资源分享!
基于RK3588的NPU案例分享!6T是真的强!
RK3588 NPU性能可谓十分强大,6TOPS设计能够实现高效的神经网络推理计算。这使得RK3588在图像识别、语音识别、自然语言处理等人工智能领域有着极高的性能表现。
创龙科技Tronlong
2024/07/18
6320
基于RK3588的NPU案例分享!6T是真的强!
国产高性能RK3568四核 | Cortex-A55核心板
HD-RK3568系列核心板基于国产高性能处理器RK3568/RK3568J设计,采用64bit 四核Cortex-A55架构,最高主频为2GHz。该系列核心板性能强劲、功能接口丰富,适合于医疗电子、电力电子、工业自动化、边缘网关、人工智能等众多应用场景。
武汉万象奥科
2022/12/01
1.1K0
国产高性能RK3568四核 | Cortex-A55核心板
国产RK3568J基于FSPI的ARM+FPGA通信方案分享
近年来,随着中国新基建、中国制造2025规划的持续推进,单ARM处理器越来越难胜任工业现场的功能要求,特别是如今能源电力、工业控制、智慧医疗等行业,往往更需要ARM + FPGA架构的处理器平台来实现例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等特定功能,因此ARM + FPGA架构处理器平台愈发受市场欢迎。
创龙科技Tronlong
2024/07/18
2160
国产RK3568J基于FSPI的ARM+FPGA通信方案分享
推荐阅读
相关推荐
从性能到成本,深度剖析 RK3588 与 RK3576 怎么选
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文