1 - 介绍及安装教程
缓存规则
cdn
系统缓存命中率为100%
,也就是只要通过cdn
域名访问的视频切片,均会100%
缓存到cdn
所在的服务器里面,无需担心命中问题。- 缓存容量内置上限,也就是最多只能缓存服务器总容量的
80%
,防止使用过多,影响系统其它进程;当缓存容量超过80%
时候,就不会再缓存了,低于80%
立即自动缓存。 - 可以自动清理某时间,比如
1
天内未被使用的切片,该时间可自行设置;可结合缓存容量上限 一起使用。 - 防盗链系统,可设置指定域名网站才能使用该
cdn
域名的切片播放。
安装CDN
系统要求:CentOS 7+
,Debian 8+
,Ubuntu 16+
(推荐),AlmaLinux 8+
,Rocky Linux 8+
。
如果你的切片访问量比较大,那么服务器的cpu
即配置尽量好点,且多用几台服务器提供cdn
,不然负载多cdn
服务器容易卡。
友情提示
如果你的服务器在中国大陆以外,包括中国香港,中国台湾,建议先安装BBR
,可优化TCP
连接,尽可能让用户流畅的观看视频。
如果你是CentOS 7
系统,建议BBR
在新装系统的服务器上安装,毕竟超小概率会造成换内核访问不了服务器。
使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh
该脚本会自动给你更换BBR
内核,并开启BBR
,CentOS 7
系统安装完成后需要重启服务器,其它系统不需要。
如果第一行命令出现wget: unable to resolve host address
报错,则解决方法 ⇒ 传送门。
开始安装
首先使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
#下载脚本
wget --no-check-certificate -O '/tmp/cdn-node.sh' 'https://file.efvcms.com/moeapp/efvcdn/cdn-node.sh'
#运行前请将后面1个参数修改成自己的,即源码安装路径/home,路径自定义,为绝对路径写法,不存在会自动创建
bash /tmp/cdn-node.sh /home
安装完成后,还需要配置才能使用,注意EFV
防盗链设置的禁止ts
下载功能需要关闭,才能缓存。
配置CDN
如果我的安装目录为/home/cdn-node
,则配置文件为/home/cdn-node/config/config.js
,在SSH
客户端使用命令:
vi /home/cdn-node/config/config.js
首先按一下键盘的i
键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下:
module.exports = {
dbUrl: "127.0.0.1",
db: "efvcdn",
dbUser: "efvcdn",
dbPassword: "efvcdn",
apiKey: 'iqi36022bytheway', //apiKey随便设置,也可以默认
efvDomain: 'https://127.0.0.1:4000', //设置成你的EFV域名,也可以为ip:3000,且都需要能访问
whiteLists: [
],
antiurls: [
],
banurls: [],
keeptime: 2 //缓存时间,默认单位分钟,如设置60,即自动清理60分钟没有使用过的切片缓存
};
全部编辑好了后,按一下键盘的esc
键退出编辑模式,接下来输入英文:wq
,enter
保存退出。
最后如果你不是很会命令行,依然不会修改,可以使用FTP
软件或宝塔文件管理,找到该文件后手动修改即可。
配置防盗链
防盗链设置依旧在配置文件/home/cdn-node/config/config.js
,大致如下:
antiurls: [
'play1.efvcms.com',
'play2.efvcms.com'
],
配置格式一行一个网址,结尾用英文,
分开,即切片只能被此处的网站引用播放;反之留空则默认切片可以被所有网站引用播放。
如果设置防盗链后,你播放不了切片,则建议先不设置防盗链。
启动CDN
最后编辑好了后,使用以下命令启动:
#进入源码目录
cd /home/cdn-node
#环境生效
source /etc/profile
#启动程序
pm2 start ecosystem.config.js --env production
#设置开机自启
pm2 save
pm2 startup
#验证是否运行成功,返回Hello World!信息即安装成功
curl 127.0.0.1:3888
最后访问地址就是服务器ip:3888
,接下来要正常使用需要绑定一个域名,绑定教程 ⇒ 传送门,反代地址修改为127.0.0.1:3888
即可。
当然你有宝塔的话,可以直接使用宝塔添加域名,并设置反向代理,URL
填入https://127.0.0.1:3888
。
特别注意
有时候会因为系统原因,会导致数据库新建失败,从而使cdn
运行异常,也就是拉取缓存的时候,会出现504
超时错误,这时候使用以下命令:
#将下面命令一起复制进SSH客户端运行
cat <<EOF > createdb
use efvcdn
db.createUser( { user: "efvcdn", pwd: "efvcdn", roles: [ { role: "readWrite", db: "efvcdn" } ] } )
EOF
mongo < createdb && rm -rf createdb
最后再运行命令重启生效:
pm2 reload all
2 - cdn其它用法及缓存清理
接口用法
该cdn
除了加速切片,还可以用作一个图片云处理服务器,直接处理任何的图片地址,并将图片转换为webp
格式缓存到本地服务器,体积极小,加载极快,也可直接通过该接口处理调用其它图片。
云处理服务接口/api
,调用示例:
https://imageserver.querydata.org/api?url=https://wmdb.querydata.org/movie/poster/no-poster.jpg&width=200&format=webp
#参数详解
url为需要加速处理的图片地址,且服务器必须可以正常请求该图片域名
width和height参数为海报长宽,至少需要存在一个,当仅存在其中一个时,则会保留图片宽高比自动处理!
format为返回类型,支持jpg、png和webp,推荐使用webp,程序会判断浏览器是否支持webp,支持webp返回webp,不支持返回jpg!webp加载实在太快了!
清除缓存文件
有时候我们想清空节点服务器缓存,这里分2
部分操作,清楚缓存文件和缓存数据库表。
先停止节点服务器
首先使用SSH
客户端,比如Xshell
软件,登录服务器,再使用命令:
pm2 kill
删除缓存文件
比如我节点服务器目录为/home/cdn-node
,删除/home/cdn-node/public/tmp
目录里全部文件即可,可使用命令:
rm -rf /home/cdn-node/public/tmp/*
删除缓存数据库表
使用命令:
mongo efvcdn --eval "db.files.deleteMany({})"
最后输出true
则删除成功,然后使用ctrl + d
退出即可。
全部操作完成后,使用命令重新启动节点:
#进入源码目录
cd /home/cdn-node
#环境生效
source /etc/profile
#启动程序
pm2 start ecosystem.config.js --env production