这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

EFV分离CMS搭建教程

独立于EFV系统的开源CMS,采用Svelte开发,可在任意服务器搭建,并通过API对接EFV的视频内容及其它功能。

1 - CMS介绍及安装教程

该系统可安装在任何低配置服务器,并且可以关闭EFV内置CMS后进行使用,也可以一起使用。

功能介绍

  • 完全由EFV API2驱动的开源CMS,采用svelte开发(运行效率数一数二,远超vuereact),采用服务端渲染(极有利于SEO),采用领先的自适应设计。
  • 类似bilibili的动态渲染技术,点推荐视频之后,页面并不会刷新,而视频信息,推荐视频,留言都是动态刷新。
  • 拥有剧集电影全预览视频支持(鼠标移动到海报上自动播放预览视频,完全支持剧集和电影)
  • 采用国际领先的播放器技术(多分辨率无缝切换,切换分辨率的时候不会重新播放,播放连贯的情况下切换成新分辨率,还支持画中画,外挂vtt字幕等多项高级功能,页面打开秒播!)
  • 全站内存缓存,10分钟会从EFVapi读取一次数据缓存到内存,比ssdn倍的读取速度,只要网络延迟允许下,任何页面均秒开!
  • 支持试看,支持支付,支持VIP用户组,支持剧集,支持电影等等整个功能。
  • 支持安装网站快捷应用到桌面,方便用户直接点击图标打开,速度比网页更快,目前国内视频网站仅爱奇艺在使用。
  • 敏感词过滤系统、针对求片和评论会自动替换敏感词为***,例如fuck you发布之后会替换成**** you,可自行添加更多的敏感词,一行一个。
  • 求片留言和电影评论功能,redis内存级别的API请求限制,针对评论为2分钟最多能发布一个评论,针对求片为60分钟只能发布2个求片信息。
  • 对接了EFV时间戳/播放次数防盗链系统,限制本站访问者请求API!非常安全,尽最大可能防止盗链盗播!

演示地址

地址:https://ytb.zhuanma.co/

推荐使用手机浏览器进行阅览。测试期间,当没有缓存时,如果有用户访问页面,这时api请求数据会缓存到cms所在服务器内存里,在其后10分钟内,任何用户访问相同页面都会直接从内存读取数据,以达到秒开的效果。

安装步骤

系统要求:CentOS 7+Debian 8+Ubuntu 16+(推荐),AlmaLinux 8+Rocky Linux 8+

推荐安装到网络比较好的低配置服务器中,且不建议和转码服务器安装在一起,不然就失去意义了。

友情提示

如果你的服务器在中国大陆以外,包括中国香港,中国台湾,建议先安装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内核,并开启BBRCentOS 7系统安装完成后需要重启服务器,其它系统不需要。

如果第一行命令出现wget: unable to resolve host address报错,则解决方法 ⇒ 传送门

开始安装

使用SSH客户端,比如Xshell软件,登录服务器,再使用命令:

#下载脚本
wget --no-check-certificate -O '/tmp/efvcms.sh' 'https://file.efvcms.com/moeapp/shell/efv-cms.sh'

#运行前请将后面1个参数修改成自己的,即源码安装路径/home,路径自定义,为绝对路径写法,不存在会自动创建
bash /tmp/efvcms.sh /home

Enter运行,直到脚本运行结束,期间会给你安装所有环境,接下来还需要配置才能使用。

程序配置

编辑主要配置文件

如果我的安装目录为/home/efvcms,则配置文件为/home/efvcms/src/routes/api/_config.js,在SSH客户端使用命令:

vi /home/efvcms/src/routes/api/_config.js

首先按一下键盘的i键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下:

import redis from 'redis';
const client = redis.createClient();
const config = {
    apis: [{
        host: 'http://127.0.0.1:4000',  //EFV绑定域名,注意带上http://或https://,后面不带/
        apiKey: '3f29g2C8BEdGF1gDA08b',  //EFV的apikey,自行在转码设置处设置和查看,且需要打开api开关
        tokenkey: 'a1b2c3d4qeeqrqrqrszq'  //EFV时间戳防盗链key,自行在转码设置处设置和查看,且时间戳开关打开才会生效
    }],
    redisClient: client,
    imageHost: 'http://127.0.0.1:4000',  //为封面图、封面预览视频 引用域名来源,默认填EFV绑定域名,注意带上http://或https://,后面不带/
    host: 'http://127.0.0.1:3000'  //支付专用,EFV分离CMS所绑定的域名,注意带上http://或https://,后面不带/
};

全部编辑好了后,按一下键盘的esc键退出编辑模式,接下来输入英文:wqenter保存退出。

最后如果你不是很会命令行,依然不会修改,可以使用FTP软件或宝塔文件管理,找到该文件后手动修改即可。

再编辑图片配置文件

配置文件路径/home/efvcms/src/routes/_config.js,在SSH客户端使用命令:

vi /home/efvcms/src/routes/_config.js

首先按一下键盘的i键,进入编辑模式,这时候可以使用键盘进行编辑,编辑代码详解如下:

const config = {
  imgHost: 'http://127.0.0.1:4000',  //为视频内页截图,漫画图片 引用域名来源,默认填EFV绑定域名,注意带上http://或https://,后面不带/
};

export default config;

全部编辑好了后,按一下键盘的esc键退出编辑模式,接下来输入英文:wqenter保存退出。

最后如果你不是很会命令行,依然不会修改,可以使用FTP软件或宝塔文件管理,找到该文件后手动修改即可。

打包并启动

使用SSH客户端,继续使用命令:

#环境生效
source /etc/profile
npm i -g yarn
#进入源码目录
cd /home/efvcms
#打包
yarn build
#设置运行端口
export PORT=3888
#启动程序
pm2 start __sapper__/build --name cms
#设置开机自启
pm2 save
pm2 startup

这时候启动完成后,访问地址就是服务器ip:3888,接下来要正常使用需要绑定一个域名,绑定教程 ⇒ 传送门,反代地址修改为127.0.0.1:3888即可。

当然你有宝塔的话,可以直接使用宝塔添加域名,并设置反向代理,URL填入https://127.0.0.1:3888

2 - 模板相关修改教程

网站标题描述、LOGO图片、页脚版权、首页板块数量显示、相关提示修改等修改。

网站标题描述

即浏览器网站标签显示,如下:

修改文件src/routes/index.svelte,大概23行左右,自行修改显示文字描述。

首页左上角网站名称显示

大致显示效果如下:

修改文件src/routes/_layout.svelte,大概95行左右,自行修改显示文字描述。

页脚版权显示

大致显示效果如下:

修改文件src/routes/_layout.svelte,大概284行左右,自行修改显示文字描述。

网站快捷应用名称修改

即支持安装网站快捷应用的浏览器显示如下:

修改文件static/manifest.json,大概4行左右,自行修改显示文字描述。

首页板块名称修改

即首页显示的3大板块名称,正在热播、限时免费、每日更新;你可以修改为 站长推荐、限时免费、最近更新。

修改文件src/routes/index.svelte,然后自己搜索关键词,自行修改显示文字描述。

首页板块数量显示修改

这里只说 限时免费 和 每日更新板块的数量修改。

修改文件src/routes/index.svelte,修改代码如下:

#限时免费板块,后面8为显示数量,自行修改,建议为4的倍数
/api/getfree?page=1&size=8

#每日更新板块,后面16为显示数量,自行修改,建议为4的倍数
/api/getindex?page=1&size=16
let per_page=16;

相关提示修改

提示:由于提示强制显示,不管你是否免费,所以如果你是全部免费提供观看,则可以自行修改描述,或者直接删掉提示代码。

这里只说 试看提示 和 限时免费提示的修改。

修改文件src/routes/movie/[id].svelte,修改代码如下:

#限时免费提示,后面为限时时间变量
toast.push('本视频限时免费至:'+ dayjs(movie.freeTime).format('YYYY-MM-DD'));

#试看提示,即没有升级VIP用户组
  if (user["vipgroup"] != null) {
    if (dayjs(now).isAfter(user.vipgroup.duedate)) {
      toast.push("您的VIP用户组已到期,请及时续费观看完整影片!");
    }
  } else {
    toast.push("您仅能试看本片,如需观看完整影片,请购买VIP用户组!");
  }
} else {
  toast.push("您仅能试看本视频,如需观看完整影片,请购买VIP用户组!");
}

网站SEO描述和关键词修改

修改文件src/routes/index.svelte,修改代码如下:

<svelte:head>
  	<title>蜂窝影视,超清影视社区,最好用的影视网站</title>
    <meta name="description" content="一个由EFV API2驱动的开源CMS,采用svelte开发,领先的自适应设计。"/>
    <meta name="keywords" content="EFV转码、影视、美剧、免费"/>
</svelte:head>

title为网站标题,description为网站描述,keywords为网站标签。

特别提示

修改前记得提前备份好要修改的文件,方便修改错误后及时还原,修改后,需要重新打包,即使用命令:

#进入源码目录
cd /home/efvcms
yarn build
#设置开机自启
pm2 reload all

更深层次的修改,就自行琢磨了,别乱改就行。

3 - 相关说明及使用问题

网站标题描述、LOGO图片、页脚版权、首页板块数量显示、相关提示修改等修改。

相关说明

该分离的CMS没有后台,即纯展示CMS,后台依然为EFV的后台,也就是设置,发布影片,剧集,编辑信息,均在后台完成,你就把它当成一个内置CMS使用,只是可以安装在其它服务器上。

如果只用分离的CMS,不用EFV内置CMS,则可以点击EFV后台左侧 ⇒ CMS相关 ⇒ CMS设置 ⇒ 关闭是否开启CMS,关掉后,EFV前台会显示CMS未开启。

关于数据对接

分离的CMS为纯API对接,只需要EFV绑定的域名地址和APIKEY即可;如果你后期想更换绑定的域名,则重新编辑分离的CMS配置文件,重新构建,然后重启即可,所有数据不会变。

关于数据显示问题

分离CMS只会显示已发布的电影、剧集和图集,如果你视频未转码或者已转码但未发布,均不会显示。

关于分离的CMS数据刷新

目前分离的CMS10分钟才会从EFV请求一次api,并缓存到服务器,所以一般EFV的数据需要10分钟左右,才会更新到分离的CMS中;同样分离的CMS收到的评论,求片留言等,也需要10分钟左右才显示到EFV

快速刷新缓存,可直接在SSH客户端使用命令:

redis-cli
flushall

关于播放用户组权限

分离的CMS默认需要结合试看、VIP付费一起使用;如果你想全部免费提供观看,则只需要修改提示部分就行,这个是强行存在,修改方案 ⇒ 传送门

关于视频封面逻辑

视频封面由海报即封面1和预览视频一起组成,也就是你默认看到的是封面1,然后当鼠标移动上去的时候,会自动播放预览视频你看。

建议使用的时候开启预览视频功能,可点击EFV后台左侧 ⇒ 转码设置 ⇒ 开启是否生成预览视频,设置好对应预览时长即可;且封面1和预览视频长宽均在转码设置处调整,不会调整的默认就行。

关于时间戳防盗链

分离的CMS对接了EFV的时间戳防盗链系统,如果想正常使用,则需要前往EFV后台 ⇒ 转码设置 ⇒ 开启时间戳+播放次数,并设置时间戳KEY值,且该KEY值要和分离的CMS配置文件KEY值一致,不然开启后会导致播放不了;当然如果你关闭了时间戳+播放次数防盗链,则防盗链失效,此时KEY值不对应也可以播放。

关于支付类型

目前分离的CMS暂时支持码支付和PayPal付款,所以在EFV后台设置的时候,请设置这2个付款接口即可。

首页板块说明

目前首页分为3大板块,正在热播、限时免费、每日更新。

正在热播

提示:该板块只显示最近的8个推荐视频,也就是在8个推荐满了下,新的推荐会覆盖掉老的推荐。

也就是展示推荐的电影,可前往EFV后台 ⇒ 视频管理 ⇒ 找到要推荐的视频,点击右侧操作选择推荐即可,如下:

限时免费

提示:该板块只显示限时最长的8个免费视频,也就是会在你所有限时免费里,只显示限时最长的8个视频。

分离的CMS默认需要结合试看、VIP付费一起使用,所以游客和没升级VIP用户组的一般都只能看部分时长视频,这时候就可以看限时免费的完整版视频。

可前往EFV后台 ⇒ 视频管理 ⇒ 找到要限时免费的视频,批量设置免费,操作步骤 ⇒ 传送门

每日更新

提示:该板块只随机显示最近的16个视频。

也就是显示最近更新的视频,且顺序会根据相关逻辑会打乱。

评论和留言敏感词库

求片留言和评论的敏感词库在EFV源码目录的helper/keywords文件,自行修改和增加,然后使用命令pm2 reload all重启生效。

统计代码添加

编辑src/template.html,添加如下:

</head>
<body>
    <!-- The application will be rendered inside this element,
         because `src/client.js` references it -->
    <div id="sapper">%sapper.html%</div>
统计代码
</body>
</html>

编辑后,重新打包,重启即可;添加后,每个页面都可以统计到访问数据。