热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用cdnmanager自建CDN服务器,支持处理图片/缓存视频等资源

说明:cdn-manager是云转码express-ffmpeg的作者quazero根据@dadicdn制作的脚手架,该原理貌似是一个API服务,搭建好的CDN服务器第一次访问你设

文章目录[隐藏]

  • 安装
  • 运行环境配置
  • 图片处理配置
  • 域名反代

说明:cdn-manager是云转码express-ffmpeg的作者quazero根据@dadi/cdn制作的脚手架,该原理貌似是一个API服务,搭建好的CDN服务器第一次访问你设定的网站后,会将原站一些资源缓存到服务器,而且不仅仅可以缓存jpgcssjs等,就连tsm3u8mp4也可以缓存,默认是缓存一个小时,但可以设置永久缓存。并且当你的并发很高,硬盘IO跟不上的时候,就把图片转换成二进制存内存里边。更强的就是还可以给图片加参数,如高宽、格式、滤镜、比例、旋转等,然后拉取图片后按要求处理,再实时返回你需要的图片并缓存到服务器。有需求的可以使用延迟比较低的服务器搭建下,可以减轻我们源站压力,特别是并发比较高的网站。

安装

cdn-manager:https://gitee.com/quazero/cdn-manager
dadi/cdn:https://github.com/dadi/cdn

本教程适用于CentOS,建议使用CentOS 7系统。

1、安装依赖

#升级系统
yum update -y
#安装开发者工具包
yum -y groupinstall "Development Tools"
#安装nodejs
curl -sL https://rpm.nodesource.com/setup_10.x | bash -
yum install nodejs -y
#安装pm2
npm install pm2 -g

2、安装程序

#拉取源码
git clone https://gitee.com/quazero/cdn-manager.git
cd cdn-manager
#安装
npm install
#设置环境
export NODE_ENV=production

3、配置参数

注意:本步骤讲的默认配置只缓存图片,所以我们要了解下基本配置,然后再去参考文章最后面的更多设置,再使用4步骤运行程序。

本程序主要涉及到2个配置文件poster.jsonconfig.production.json,前者是图片处理的配置文件,后者是运行环境配置文件。

图片配置路径workspace/recipes/poster.json,默认参数如下:

{
  "recipe": "poster",
  "settings": {
    "format": "jpg",
    "quality": "90",
    "height": "240",
    "ratio": "16-9",
    "resizeStyle": "entropy"
  }
}

意思是将图片处理成16:9的比例,高度240PX,并且格式为jpg,质量为90%的格式。

运行环境配置路径config/config.production.json,默认参数如下:

{
  "server": {
    "host": "127.0.0.1",
    "port": 8001
  },
  "images": {
    "remote": {
      "enabled": true,
      "path": "#"
    }
  }
}

意思是运行端口为8001,设置远程连接path,比如我的域名是https://www.moerats.com,就在参数后面填该域名。

4、运行程序

#进入源码的文件夹
cd /root/cdn-manager
#这里避免出错,建议安装一些模块
npm install sharp farmhash
#运行
pm2 start index.js

运行环境配置

1、缓存设置

"caching": {
  "ttl": 3600,
  "expireAt": "0 5 0 * * *"
}

expireAt配置解释:

"0 5 0 * * _" 每天凌晨12点5分刷新缓存
"0 30 11 _ _ 1-5" 每周星期一到星期五 早上11点30刷新缓存
"0 15 14 1 _ _" 每个月一号下午2点15刷新缓存
"0 22 _ _ 1-5" 周一到周五晚上10点刷新缓存
"_ 5 4 * * 0" 每周日凌晨4点5分刷新缓存

ttl配置解释:

单位秒,默认3600秒,一个小时缓存失效,可以自行设置时长。
/api/flush可以通过这个API手动刷新缓存文件。

2、image配置

"images": {
  "directory": {
    "enabled": true,
    "path": "relative/path/to/your/images"
  },
  "remote": {
    "enabled": true,
    "path": "https://www.moerats.com/images"
  },
  "s3": {
    "enabled": true,
    "accessKey": "your-access-key",
    "secretKey": "your-secret",
    "bucketName": "your-bucket",
    "region": "your-region",
    "endpoint": "ams3.digitaloceanspaces.com"
  }
}

images配置项 一共有三种用法,一种是直接服务同主机图片,服务本地图片,一种是服务远程图片,最后一种是亚马逊和Digital Ocean Space云储存。

directory服务本地文件,直接指定path为文件夹地址即可直接处理本地图片。例如/www/moerats.com/picture,然后将图片地址host更改为CDN地址即可。

remote服务远程文件,直接设置path为远程url,例如https://www.moerats.com,最后把地址替换成 cdn地址即可。

s3云储存可扩展的云储存,可以直接缓存各种云储存上边的图片。

3、assets配置

"assets": {
  "directory": {
    "enabled": true,
    "path": "/Users/absolute/path/to/your/assets"
  }
}

该配置方法参考image配置,除了把images换成assets,其他用法一样,设置之后会缓存除了jpg的各种文件,包括视频文件。

图片处理配置

{
  "recipe": "poster",
  "settings": {
    "format": "jpg",
    "quality": "90",
    "height": "240",
    "ratio": "16-9",
    "resizeStyle": "entropy"
  }
}

recipe文件是预配置格式处理文件,在workspace/recipes文件夹中建立。

"recipe"参数设置必须和文件名一致。settings中可以设置的选项:

blur 模糊
filter 设置裁剪处理算法
flip 翻动
format 格式
gravity 设置裁剪区域
ratio 比例
rotate 旋转
width 宽度
height 高度

resizeStyle裁剪模式 推荐entropy等,详见dadi/cdn文档。

设置完成之后,比如recipeposter,则访问链接为cdnhost/poster/yourpath/1.jpg

域名反代

要想正常访问就需要使用域名反代,这里说下宝塔反代和Caddy反代。如果你网站有宝塔,就可以使用宝塔进行反代,如果没有,建议使用第2种的Caddy反代,配置很快。

1、宝塔反代
先进入宝塔面板,然后点击左侧网站,添加站点,然后再点击添加好了的域名名称,这时候就进入了站点配置,点击反向代理,目标URL填入http://127.0.0.1:8001,再启用反向代理即可。至于启用SSL就不说了,直接在站点配置就可以看到。

2、Caddy反代
安装Caddy

wget -N --no-check-certificate https://raw.githubusercontent.com/iiiiiii1/doubi/master/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh
#备用地址
wget -N --no-check-certificate https://www.moerats.com/usr/shell/Caddy/caddy_install.sh && chmod +x caddy_install.sh && bash caddy_install.sh

配置Caddy

#以下全部内容是一个整体,请修改域名后一起复制到SSH运行!

#http访问,该配置不会自动签发SSL
echo "xx.com {
 gzip
 proxy / http://127.0.0.1:8001
}" > /usr/local/caddy/Caddyfile

#https访问,该配置会自动签发SSL,请提前解析域名到VPS服务器
echo "xx.com {
 gzip
 tls admin@moerats.com
 proxy / http://127.0.0.1:8001
}" > /usr/local/caddy/Caddyfile

tls参数会自动帮你签发ssl证书,如果你要使用自己的ssl,改为tls /root/xx.crt /root/xx.key即可。后面为ssl证书路径。

启动Caddy

/etc/init.d/caddy start

最后我们都配置好了后,只需要在原网站将资源链接域名替换成CDN的地址即可。大概使用如下:

原图片地址为:https://www.moerats.com/rats.jpg
CDN中地址为:https://cdn.moerats.com/poster/rats.jpg,该链接会自动处理图片

#如果你不想对图片进行处理,直接代替原域名就可以了,如:
https://cdn.moerats.com/rats.jpg

#其他资源就直接替换域名为CDN地址即可

推荐阅读
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • MySQL数据库安装图文教程
    本文详细介绍了MySQL数据库的安装步骤。首先,用户需要打开已下载的MySQL安装文件,例如 `mysql-5.5.40-win32.msi`,并双击运行。接下来,在安装向导中选择安装类型,通常推荐选择“典型”安装选项,以确保大多数常用功能都能被正确安装。此外,文章还提供了详细的图文说明,帮助用户顺利完成整个安装过程,确保数据库系统能够稳定运行。 ... [详细]
  • Node.js 配置文件管理方法详解与最佳实践
    本文详细介绍了 Node.js 中配置文件管理的方法与最佳实践,涵盖常见的配置文件格式及其优缺点,并提供了多种实用技巧和示例代码,帮助开发者高效地管理和维护项目配置,具有较高的参考价值。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 大家好,我是李白。本文将分享一个从零开始的全栈项目,涵盖了设计、前端、后端和服务端的全面学习过程。通过这个项目,我希望能够帮助初学者更好地理解和掌握全栈开发的技术栈。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在配置Nginx的SSL证书后,虽然HTTPS访问能够正常工作,但HTTP请求却会遇到400错误。本文详细解析了这一问题,并提供了Nginx配置的具体示例。此外,还深入探讨了DNS服务器证书、SSL证书的申请与安装流程,以及域名注册、查询方法和CDN加速技术的应用,帮助读者全面了解相关技术细节。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
author-avatar
手机用户2502934541
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有