阿里云服务器如何搭建图片服务器?

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 网上虽然有不少资料,但是很多教程写的并不完整,照着去做的时候会出现各种各样的问题

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

服务器:阿里云服务器ECS
系统: 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

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 负责存储服务

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 ;

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

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

mkdir /home/fastdfs

启动tracker,运行如下命令:

/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服务

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自带了测试客户端,我们可以使用它测试搭建是否成功

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访问

#解压 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文件,

#将文件中的所有 /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

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

ls  /usr/lib | grep libfdfsclient.so
ls  /usr/lib64 | grep libfdfsclient.so

创建nginx/client目录

mkdir -p /var/temp/nginx/client

安装nginx

tar -zxvf nginx-1.14.0.tar.gz -C /usr/local/

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

#进入解压目录, 日志目录可自己定义,主要是add-modoule
cd /usr/local/nginx-1.14.0
#添加模块
./configure \
--prefix=/usr/local/nginx \
--add-module=/usr/local/fastdfs-nginx-module/src

编译并安装

#在nginx1.14.0目录下执行
make && make install

编译后在/usr/local下生成nginx 目录
修改nginx 配置文件

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

/usr/local/nginx/sbin/nginx 

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

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

systemctl stop firewalld.service

再次上传一张图片

/usr/bin/fdfs_test /etc/fdfs/client.conf upload  /download/123.jpg

得到一个地址

example file url: http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg

在浏览器中访问该图片:

http://192.168.112.130/group1/M00/00/00/wKhwgltekE6AeekMAAJHNmHqPh0069_big.jpg

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

#查看nginx 日志可以看到访问记录
tail -f  -n 100 /var/log/nginx/access.log

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

项目中如何使用fastdfs

使用方式比较简单,我们就直接拿来一个示例代码了
导入依赖(也可以自己去git编译一个jar包出来)

<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 = 80
http.anti_steal_token = no
#密码
http.secret_key = 123456
# tracker服务器IP和端口(可以写多个)
tracker_server = 192.168.58.128:22122

测试代码

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());
    }
}

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

项目用到的阿里云产品:阿里云服务器ECShttps://www.aliyun.com/product/ecs

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
SQL 弹性计算 安全
阿里云服务器产品详情介绍:云服务器是什么、应用场景、租用流程、使用教程参考
对于很多新手用户来说,阿里云服务器是什么、阿里云服务器可以干嘛、阿里云服务器租用价格表、阿里云服务器新手教程是很多用户对于阿里云服务器最为关心的问题。同时,面对琳琅满目的服务器配置和优惠活动,如何选择最适合自己的服务器并充分利用其资源,成为许多用户面临的难题。本文将从阿里云服务器的定义、应用场景、价格、租用流程以及使用技巧等方面进行全面解析,帮助用户更好地了解和应用阿里云服务器。
|
14天前
|
存储 弹性计算 安全
阿里云服务器ECS详解:云服务器是什么,云服务器优势和应用场景及价格参考
云服务器ECS是阿里云众多云产品中,最受用户关注的产品,阿里云服务器提供多样化的计算能力,支持x86、Arm架构,涵盖CPU、GPU等多种服务器类型,满足各种用户需求。本文为大家详细介绍阿里云服务器是什么?云服务器的优势和应用场景,以及最新价格情况,以供大家参考。
|
17天前
|
存储 人工智能 弹性计算
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理
阿里云弹性计算(ECS)提供强大的AI工作负载平台,支持灵活的资源配置与高性能计算,适用于AI训练与推理。通过合理优化资源分配、利用自动伸缩及高效数据管理,ECS能显著提升AI系统的性能与效率,降低运营成本,助力科研与企业用户在AI领域取得突破。
35 6
|
17天前
|
弹性计算 固态存储 Linux
阿里云服务器、轻量应用服务器、gpu云服务器收费标准与实时活动价格参考
云服务器ECS、轻量应用服务器和gpu云服务器是阿里云的主要云服务器产品,目前轻量应用服务器2核2G收费标准为60元/月,活动价格只要36元/1年或68元1年,云服务器1核1G包月收费标准最低为24.0元/月,GPU云服务器中gn6i实例4核15G配置月付1681.00/1个月起,gn6v实例8核32G配置月付3817.00/1个月起。本文为大家整理汇总了阿里云服务器、轻量应用服务器、gpu云服务器的最新收费标准与活动价格情况,以表格形式展示给大家,以供参考。
|
22天前
|
人工智能 弹性计算 编解码
阿里云GPU云服务器性能、应用场景及收费标准和活动价格参考
GPU云服务器作为阿里云提供的一种高性能计算服务,通过结合GPU与CPU的计算能力,为用户在人工智能、高性能计算等领域提供了强大的支持。其具备覆盖范围广、超强计算能力、网络性能出色等优势,且计费方式灵活多样,能够满足不同用户的需求。目前用户购买阿里云gpu云服务器gn5 规格族(P100-16G)、gn6i 规格族(T4-16G)、gn6v 规格族(V100-16G)有优惠,本文为大家详细介绍阿里云gpu云服务器的相关性能及收费标准与最新活动价格情况,以供参考和选择。
|
27天前
|
机器学习/深度学习 人工智能 弹性计算
什么是阿里云GPU云服务器?GPU服务器优势、使用和租赁费用整理
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等多种场景。作为亚太领先的云服务提供商,阿里云的GPU云服务器具备灵活的资源配置、高安全性和易用性,支持多种计费模式,帮助企业高效应对计算密集型任务。
|
27天前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
183 2
|
弹性计算 Linux Shell
阿里云ECS续领
计算机小白第一次使用云服务器
阿里云ECS续领
|
弹性计算 NoSQL Java
阿里云续领ecs
通过阿里云的高校计划,我掌握了linux的一些基本命令,搭建了个人的博客
|
29天前
|
存储 分布式计算 固态存储
阿里云2核16G、4核32G、8核64G配置云服务器租用收费标准与活动价格参考
2核16G、8核64G、4核32G配置的云服务器处理器与内存比为1:8,这种配比的云服务器一般适用于数据分析与挖掘,Hadoop、Spark集群和数据库,缓存等内存密集型场景,因此,多为企业级用户选择。目前2核16G配置按量收费最低收费标准为0.54元/小时,按月租用标准收费标准为260.44元/1个月。4核32G配置的阿里云服务器按量收费标准最低为1.08元/小时,按月租用标准收费标准为520.88元/1个月。8核64G配置的阿里云服务器按量收费标准最低为2.17元/小时,按月租用标准收费标准为1041.77元/1个月。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。