1 - 准备工作

使用前先了解下影响转码核心因素、配置选择及转码和秒切之间的区别。

转码的大致原理

众所周知,基本上所有转码系统都是使用的ffmpeg进行转码,也就是用程序加载ffmpeg进程来进行转码操作,那么我们讨论影响转码的因素其实跟程序关系很小,只跟ffmpeg的运行效率有关系,并且和影响ffmpeg运行效率的变量有关系。

影响转码的因素

源视频的时长,音视频编码格式,源视频大小,CPU单核频率,CPU核数,转码的音视频编码格式,转码的码率。基本上,所有主要影响ffmpeg转码效率的因素就在以上所述中。

在源视频和转码参数相同下影响因素:CPU单核码率 > CPU核数。也就是说转码单个视频的情况下,单核码率越高越好,核数也有部分影响。转码多个视频的情况下,核数越多越好,单核频率越高越好,两个因素共同影响。

秒切和转码有什么区别?

转码系统的最终目的都是将视频处理成M3U8切片文件,提供给播放器进行播放;这里又细分到秒切和转码的区别,如下:

#转码,也就是先将视频进行相关处理,比如烧录水印、字幕、去除水印,分辨率转换,最后切成M3U8切片文件;转码过程可能会比较长,具体由CPU或GPU决定。

#秒切,无需对视频进行烧录水印等相关处理,直接切成M3U8切片文件,即保留原视频的任何参数,仅仅只是变成切片;秒切过程极快,通常几秒或者十几秒完成。

由于秒切不会对视频进行转码处理,所以对CPU性能要求可以不用那么高;但不是所有视频都可以秒切,仅符合libx264aac编码的视频文件才支持秒切,也就是在开启秒切后,EFV转码系统检测到视频符合秒切才给你直接切片,不符合秒切的视频,会先给你转码成符合秒切的视频,再给你切片。

如何选择服务器?

CPU/GPU选择:如果你短时间急需转码大量的视频,还不在乎成本,则推荐GPU,否则优先建议使用纯CPU服务器,再根据秒切或转码,选择合适的CPU;适合转码的GPU点击查看CPU性能排行榜 ⇒ 点击查看

内存不太要求;硬盘根据你的片源多少选择合适的容量,且IO尽量高点,如果你的并发比较高,优先推荐SSD;带宽建议1G起步,网络质量稍微好点就行。

如果你准备使用云存储或者CDN,那么对硬盘、带宽的要求可以稍微低点。

通过带宽计算同时在线人数参考,如果你转码到720P,码率1000,那么推荐按照码率x1.5来计算每人需要的带宽,也就是150kb/s;如果服务器是100m带宽,再除以8,实际上就是12.5mb/s左右,然后除以每人需要的带宽150kb/s,即0.15mb/s,结果就是能同时支持83个人,由于这些人并不是同时请求,会有错开请求的情况,所以实际上是高于83人的,最终以测试为准,当然计算的时候,还得考虑带宽是独享还是共享,如果是共享1G,那么实际上就没1G,具体可咨询服务商。

服务器商家推荐

这里列举一些服务器商家,对于有些不好选择服务器的人可以参考下,也可以自行找其它服务商。

hetzner服务商:这家带宽为1G不限流量,硬盘也大,算是性价比极高的服务商;唯一的不方便就是新用户需要验证账户,可以试试,不通过就跳过;高性能配置入口:点击查看,有些带安装费,首次收取,续费不收;常规配置入口 ⇒ 点击查看,常规配置无安装费,相对便宜点。

hostkey服务商:这家CPUGPU都有,也有大硬盘服务器,比如几十T,支持支付宝付款,没PayPal的可以考虑,服务器地址 ⇒ 点击查看

nocix服务商:这家带宽为1G不限流量,硬盘大多4T上下,且这家服务器只推荐AMD 3/5系列或低于$40E3系列,其它好像没啥性价比了,服务器地址 ⇒ 点击查看

ceranetworks服务商:这家网络很好,但性能一般,算是主打网络,价格有点贵,不缺钱的可以看看,服务器地址 ⇒ 点击查看

oneprovider服务商:这家是个比较有名的二道贩子,啥配置的都卖,但网络晚上可能一般,白天还可以,支持微信付款,有些独立服务器价格很低,10美元左右起步,服务器地址 ⇒ 点击查看,目前有一款CPU E3-1230 v21T硬盘的服务器性价很高,月付$17.99,有兴趣可以看看 ⇒ 传送门

2 - 程序安装步骤

安装之前确保服务器没有安装ffmpeg、redis、nodejs、mongodb这些环境。

安装说明

目前只提供一键脚本安装,安装期间会自动将所需环境和源码下载并安装到服务器,无需担心不会安装的问题。

当前脚本会默认安装ffmpegRedis v7MongoDB v6NodeJS v20运行环境,且后续会微调版本,具体以实际为准。

GPU服务器,系统要求:CentOS 8+Debian 10+Ubuntu 20.04+AlmaLinux 8+Rocky Linux 8+

GPU服务器,显卡要求 ⇒ 点击查看;系统要求:Ubuntu 20.0422.0424.04

建议使用Ubuntu 20.0422.04系统,且CentOS官方已停止维护,所以不推荐,习惯CentOS系统的,可使用AlmaLinuxRocky Linux系统,用法和CentOS系统差不多。

友情提示

如果你的服务器在中国大陆以外,包括中国香港,中国台湾,建议先安装BBR,可优化TCP连接,尽可能让用户流畅的观看视频。

使用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,如果第一行命令出现wget: unable to resolve host address报错,则解决方法 ⇒ 点击查看

开始安装

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

#下载脚本,下载前请将后面的yourcode改成你的授权码;如出现404 Not Found,则可能是ip未绑定,或者授权码有误
wget --no-check-certificate -O '/opt/efv.sh' 'https://file.efvcms.com/download/express-ffmpeg-vip.sh?code=yourcode'

#运行脚本,运行前请将后面2个参数修改成自己的,即授权码yourcode,和源码安装路径/home,路径自定义,为绝对路径写法,不存在会自动创建
bash /opt/efv.sh yourcode /home

Enter运行,直到脚本运行结束,期间会给你安装,并启动所有环境、程序,可直接上手使用。

安装完成后,访问地址就是服务器ip:3000,接下来要正常使用需要绑定一个域名,继续看左侧文档绑定域名。

最后注意,由于后台功能有点多,很多都用不到,有些强迫症的很想关闭这些,可直接在后台左下角的侧栏开关,自行关闭不需要的功能导航。

3 - 绑定域名步骤

程序安装默认使用端口访问,如果在正式环境中使用,还需要绑定一个域名。

相关说明

这里提供2种绑定方法,如下:

#第1种,使用EFV自带的网站管理绑定域名;自带的可以自动申请SSL证书,且和Nginx等Web服务不能共存,适用于服务器只运行EFV站点使用。
#第2种,使用宝塔面板安装Nginx后绑定域名;如果你要在切片服务器搭建多个网站,或者习惯使用宝塔面板,那就推荐使用。

我们可以根据自身需求选择其中一种方案,如果你熟练Linux,也可以使用其它方法绑定域名,也就是配置一下反向代理即可。

特别提示

注意我们绑定域名后,建议换成域名访问前后台,访问信息为:

#脚本安装会提供下面的ip访问信息,以下只是举例,具体登录路径和管理员用户名密码以实际为主
http://127.0.0.1:3000/mklds
adminw
adminq

#绑定xx.com域名后,访问信息就变成下面这些
http://xx.com/mklds
adminw
adminq

也就是ip:3000xx.com域名是等价的,将ip:3000的任何链接地址的ip:3000换成xx.com域名,路径不变,内容都是一样的;所以不管你绑定多少个域名,原有链接地址只需要替换下域名,路径不变,都可以正常使用。

但是你访问后台的话,你用什么地址访问后台,m3u8、截图地址就会显示什么地址,用ip:3000访问后台,就显示ip:3000,用域名访问后台,就显示域名。

为了正常使用,建议只用域名访问前后台,这样m3u8、截图地址都会显示域名;且用ip:3000m3u8在其它地方会播放不了。

使用EFV的网站管理绑定

先将需要绑定的域名解析到EFV程序所在的服务器ip,然后等解析生效,验证解析是否生效,可使用SSH客户端,使用命令:

#域名自行修改,如果有返回ip,且和服务器ip一样,则解析生效
ping m3u8.efvcms.com

然后点击左侧转码相关 ⇒ 网站管理,点击添加域名,输入相关信息,如图:

基本上只需要填入域名,选择端口,且443端口会自动申请SSL证书,再将反向代理打勾,其他默认即可。

相关问题

如果需要更换域名,则可以在网站管理点删除,或者重新编辑修改其它域名。

如果要绑定多个域名,可以添加的时候,将多个域名写到一起,中间使用英文竖线|分开,或者一个一个多次添加域名。

最后,如果在域名无误、且解析生效的情况下,添加域名后打不开,则可能是服务器端口没打开,可运行以下命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

##Debian、Ubuntu系统
ufw allow 443
ufw allow 80

然后删除添加的域名配置后,重新添加即可。

使用宝塔面板绑定

安装宝塔

这里分别提供宝塔国内和国际2个版本安装,区别是宝塔国内版需要强制登录宝塔账号,而国际版不需要,可自行选择安装

使用SSH客户端登录服务器,使用命令:

#CentOS系统,国内版本
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
#CentOS系统,国际版本
yum install -y wget && wget -O install.sh http://www.aapanel.com/script/install_6.0_en.sh && bash install.sh aapanel

#Debian系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && bash install.sh ed8484bec
#Debian系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && bash install.sh aapanel

#Ubuntu系统,国内版本
wget -O install.sh https://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
#Ubuntu系统,国际版本
wget -O install.sh http://www.aapanel.com/script/install-ubuntu_6.0_en.sh && sudo bash install.sh aapanel

安装完成后,会给你宝塔登录信息,保存好就行。

安装Nginx

点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx安装即可。

绑定域名

先准备一个域名作为EFV域名,可以是2级域名,然后解析域名的A记录到服务器ip,然后点击宝塔面板左侧 ⇒ 网站 ⇒ 添加站点,只需要填写域名,其它默认就行,如图:如图:

再点击域名右侧设置按钮,找到SSL ⇒ 选择Let's Encrypt,勾选域名点击申请,申请成功后,将右上角强制HTTPS打开即可。

提示:此处为申请SSL证书步骤,如不需要可跳过该步骤,该证书为免费3个月证书,到期会自动给你续期。

接下来继续进入域名设置,找到反向代理 ⇒ 添加反向代理,目标URL填转码的内网地址127.0.0.1:3000,如图:

接下来点击配置文件。

添加四行代码:

#该代码为断点续传关键设置,必须加进去。
proxy_cache_convert_head off;
proxy_request_buffering off;

#该代码为程序转码进度条监控必须
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;

即全部代码为:

#可以直接复制下面代码进行替换
location /
{
    proxy_pass http://127.0.0.1:3000;
    proxy_cache off;
    proxy_cache_convert_head off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header Referer $http_referer;
    proxy_request_buffering off;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_http_version 1.1;
}

点击保存即可,如下图:

最后记得在转码后台,在转码设置和CMS管理处均设置好域名。

最后点击宝塔面板左侧 ⇒ 软件商店 ⇒ 找到Nginx,点击右侧设置按钮,找到性能调整,修改client_max_body_size参数值,如图:

该值也就是最大上传值,可设置为4000M以上。

当然宝塔有些域名配置文件会自动加上以下代码,可以自己去掉,不然使用可能会有问题,代码如下:

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log /dev/null;
    access_log off;
}
location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log /dev/null;
    access_log off;
}

操作完成后,可以直接通过域名访问EFV程序了。

4 - 程序更新步骤

更新会覆盖源码文件和端口配置文件,请修改过相关文件的,及时做好备份。

更新说明

更新和安装一样,同样提供一键更新脚本,且目前最新版本查看:更新日志,根据时间命名,自行判断是否为最新版本。

开始更新

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

#下载脚本,下载前请将后面的yourcode改成你的授权码;如出现404 Not Found,则可能是ip未绑定,或者授权码有误
wget --no-check-certificate -O '/tmp/efv-update.sh' 'https://file.efvcms.com/download/express-ffmpeg-vip-update.sh?code=yourcode'

#运行脚本,运行前请将后面2个参数修改成自己的,即授权码yourcode,和源码所在路径/home/express-ffmpeg,路径根据实际情况修改
bash /tmp/efv-update.sh yourcode /home/express-ffmpeg

Enter运行,直到更新完成即可;且更新后运行端口会自动覆盖,如有修改过端口,请重新修改一下。

5 - 程序重启等相关命令

该处讲解EFV程序,BT管理中心,网站管理等功能进程的启动、重启及关闭。

使用脚本安装后,程序已经启动,并配置好了开机自启,无需再次启动。

启动和重启的区别

启动的前提是需要程序的pm2进程不存在,可以使用pm2 list命令查看相关进程,如果有看到nameefvcms的,则为进程存在。

如果进程存在则不能使用启动命令,需要使用pm2 reload efvcms重启命令;或者使用pm2 kill命令杀掉进程,再使用启动命令运行程序。

启动命令

比如我的程序安装的路径为/home/express-ffmpeg,相关命令为:

#先进入程序目录,请根据你的安装情况修改目录路径
cd /home/express-ffmpeg

#启动命令,这里会启动EFV相关的所有进程
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production

重启命令

#重启全部进程,包括EFV程序,网站管理部分、BT管理部分
pm2 reload all

#只重启EFV程序
pm2 reload efvcms

关闭命令

#关闭全部进程
pm2 kill

#关闭EFV程序
pm2 del efvcms

#关闭网站管理功能,如果你不用程序自带的网站管理功能可以关闭
pm2 del caddyserver

#关闭BT下载功能,如果你不用程序自带的BT管理功能可以关闭
pm2 del aria2c
pm2 del aria2server

#关闭FTP功能,如果你不用FTP多用户上传功能可以关闭
pm2 del ftpserver

关闭后再使用pm2 save命令刷新现有进程。

注意如果关闭后,你想再次启动相关功能,可以先关闭全部进程,然后看上方的启动教程,重新启动全部进程。

查看日志

#查看EFV程序运行日志
pm2 log efvcms

#查看网站管理日志,如果网站管理绑定域名后打不开,可以查看日志报错
pm2 log caddyserver

#查看BT下载日志,如果你想查看BT管理的下载等进程,可以查看
pm2 log aria2c
pm2 log aria2server

#查看FTP功能日志,如果你想查看FTP运行进程,可以查看
pm2 log ftpserver

最后如果上述命令提示-bash: pm2: command not found,则需要先运行一下source /etc/profile,然重新运行即可。

6 - 修改管理员用户名和密码

程序安装后会给你随机的后台路径,管理员用户名和密码,可以自行修改。

修改步骤

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的config/auth.js文件,修改如下:

#user和passwd分别为管理员用户名和密码,login为后台登录路径,且不能设置为admin
user: "admin",
password: "admin",
login: "/adminurl",

根据自己的需求进行编辑修改,最后使用命令重启:

pm2 reload efvcms

特别提示

当我们成功登录后台后,会产生一段时间缓存,这时候后台路径会变成/admin;当缓存失效后,/admin路径也会失效,此时需要重新使用正确的后台路径登录进后台。

如果你之前将后台账号密码告诉过别人,修改完密码后,还需要清除一下登录缓存,不然之前已经登录过后台的人,还会因为一段时间缓存会正常进入后台。

使用SSH客户端登录服务器,使用命令:

mongo ffmpeg --eval "db.sessions.drop()"

运行完后,会强制擦除所有已经登录过后台的缓存,这时候需要重新通过正确的后台地址、账户密码才能进入后台了。

7 - 修改程序的运行端口和目录

程序运行的默认端口为3000,有需求的可以自行修改其它端口和运行目录。

修改运行端口

比如我EFV程序路径为/home/express-ffmpeg,然后进入该文件夹,编辑根目录下的ecosystem.config.js文件,修改如下:

#将3000修改为你需要的端口
  env_production: {
    PORT: 3000,
    NODE_ENV: "production"
  }

然后修改转码进度监控端口,编辑config/auth.js文件`,修改如下:

#将3000修改为你需要的端口
host: 'http://127.0.0.1:3000',

最后使用命令重启:

#停止程序
pm2 kill
#进入程序目录,请根据你的安装情况修改目录路径
cd /home/express-ffmpeg
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production

修改端口后,如果你绑定过域名,请同步修改域名的反代配置端口。

修改运行目录

比如我EFV程序路径为/home/express-ffmpeg,我想将程序从/home转移到/opt目录运行。

使用命令:

#停止程序
pm2 kill
#移动程序目录,/home为当前运行目录,/opt为要转移的目录
mv /home/express-ffmpeg /opt
#进入到程序新路径
cd /opt/express-ffmpeg
#启动程序
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production
#保存
pm2 save

最后如果能正常访问程序后台,则转移成功。

8 - 连接远程Redis和MongoDB数据库

程序默认使用本地的Redis环境和MongoDB数据库,需要使用远程环境的可自行配置。

连接远程Redis

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的config/auth.js文件,修改如下:

#以下信息分别为远程redis地址,端口及密码
const redisClient = redis.createClient({
    host: '127.0.0.1',
    port: 6379,
    password: 'efvcms'
});

根据自己的需求进行编辑修改,最后使用命令重启:

pm2 reload efvcms

连接远程MongoDB数据库

先再将切片服务器的数据库转移到远程MongoDB数据库,数据库迁移教程 ⇒ 点击查看

接下来比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的config/auth.js文件,修改如下:

#以下信息分别为远程MongoDB地址,数据库名、用户名和密码,且端口默认27017
dburl: "127.0.0.1",
db: "ffmpeg",
dbuser: "ffmpeg",
dbpassword: "ffmpeg",

根据自己的需求进行编辑修改,最后使用命令重启:

pm2 reload efvcms

9 - 迁移程序到新服务器运行

使用中如果需要将程序转移到新服务器的,可按步骤进行相关操作。

一定要根据下面步骤一步一步来,不要漏掉任何一个地方,不然会出问题。

且如果是GPU服务器,可在迁移之前联系我们协助安装相关显卡驱动。

迁移原服务器数据文件

首先迁移前,先使用SSH客户端登录到新服务器,安装一下rsync

#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install rsync -y

#Debian、Ubuntu系统
apt install rsync -y

迁移程序源码文件夹

先使用SSH客户端登录到新服务器,按要求使用命令:

#迁移命令,且9999为旧服务器端口,自行修改
rsync -avu -e 'ssh -p 9999' root@192.168.0.1:/home/express-ffmpeg /home

参数说明:

192.168.0.1为旧服务器ip地址。
/home/express-ffmpeg为旧服务器程序源码绝对路径,该处根据实际情况自行修改。
/home为你要将源码迁移到新服务器的文件夹路径,该处根据实际情况自行修改,也可以默认。

期间会要求你输入旧服务器密码,如果遇到提示yes/no,输入yes即可,由于切片大小、2台服务器之间连接情况等影响,迁移时间可能会很长,挂机即可,直到结束。

迁移ffmpeg文件夹

先使用SSH客户端登录到新服务器,按要求使用命令:

#迁移命令,且9999为旧服务器SSH端口,后面192.168.0.1为旧服务器ip地址,自行修改;其它可以默认。
rsync -avu -e 'ssh -p 9999' root@192.168.0.1:/usr/local/ffmpeg /usr/local

期间会要求你输入旧服务器密码,如果遇到提示yes/no,输入yes即可。

迁移mongodb文件夹

先使用SSH客户端登录到新服务器,按要求使用命令:

#迁移命令,且9999为旧服务器SSH端口,后面192.168.0.1为旧服务器ip地址,自行修改;其它可以默认
rsync -avu -e 'ssh -p 9999' root@192.168.0.1:/usr/local/mongodb /usr/local

期间会要求你输入旧服务器密码,如果遇到提示yes/no,输入yes即可。

迁移nodejs文件夹

先使用SSH客户端登录到新服务器,按要求使用命令:

#迁移命令,且9999为旧服务器SSH端口,后面192.168.0.1为旧服务器ip地址,自行修改;其它可以默认
rsync -avu -e 'ssh -p 9999' root@192.168.0.1:/usr/local/nodejs /usr/local

期间会要求你输入旧服务器密码,如果遇到提示yes/no,输入yes即可。

迁移redis文件夹

先使用SSH客户端登录到新服务器,按要求使用命令:

#迁移命令,且9999为旧服务器SSH端口,后面192.168.0.1为旧服务器ip地址,自行修改;其它可以默认
rsync -avu -e 'ssh -p 9999' root@192.168.0.1:/usr/local/redis /usr/local

期间会要求你输入旧服务器密码,如果遇到提示yes/no,输入yes即可。

在新服务器上还原数据

安装依赖

先使用SSH客户端登录到新服务器,根据指定系统依次使用命令:

#CentOS 7系统
yum install epel-release -y
yum -y groupinstall "Development Tools"
yum -y install cairo cairo-devel kernel-headers

#Debian/Ubuntu系统
apt update
apt install -y build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

还原mongodb

先使用SSH客户端登录到新服务器,依次使用命令:

useradd -M mongodb
chown -R mongodb:mongodb /usr/local/mongodb
wget --no-check-certificate https://file.efvcms.com/moeapp/migrate/mongod.service -P /etc/systemd/system
systemctl start mongod
systemctl enable mongod

还原redis

先使用SSH客户端登录到新服务器,依次使用命令:

useradd -M redis
chown redis:redis -R /usr/local/redis
wget --no-check-certificate https://file.efvcms.com/moeapp/migrate/redis.service -P /etc/systemd/system
systemctl start redis
systemctl enable redis

设置变量

先使用SSH客户端登录到新服务器,依次使用命令:

echo "export PATH=/usr/local/redis/bin:/usr/local/mongodb/bin:/usr/local/nodejs/bin:/usr/local/ffmpeg/bin:$PATH">>/etc/profile
source /etc/profile

关闭旧服务器的程序

我们搬完家后,如果你旧服务器的程序还没停止,则登录到旧服务器,使用命令:

pm2 kill
pm2 unstartup

停止后,再前往授权操作台efvcms.com登录账号,绑定新服务器ip

启动新转移的程序

先使用SSH客户端登录到新服务器,按要求使用命令:

#进入到源码目录,本文默认/home/express-ffmpeg,自行根据实际情况修改
cd /home/express-ffmpeg
#启动
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production
#开机自启
pm2 save
pm2 startup

最后可以检查下程序是否可以打开,如果还不能,可能是数据库损坏没启动成功,接下来运行命令:

mongod --dbpath=/usr/local/mongodb/data --repair
chown -R mongodb:mongodb /usr/local/mongodb
rm -rf /usr/local/mongodb/data/mongod.lock
systemctl restart mongod
pm2 reload all

该命令可以修复数据库,如果还没好,可直接联系我们解决该问题。

10 - 修改程序运行的线程数

程序默认为2线程运行,如果你并发比较高,可以自行提高运行线程。

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的ecosystem.config.js文件,修改如下:

#将instances: 2的数字修改为你需要启用的线程数,且0为最大线程数;此处建议设置为系统线程数的一半即可
name: "efvcms",
script: "./bin/www",
instances: 2,
exec_mode : "cluster",

最后使用命令重新启动:

#停止程序
pm2 kill
#进入程序目录,请根据你的安装情况修改目录路径
cd /home/express-ffmpeg
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production
#保存进程
pm2 save

11 - 自动转码说明及间隔调整

转码使用全自动模式,每30秒检测一次并自动处理未转码视频,间隔可自行调整。

自动转码说明

程序每次启动,会自动开启转码队列,可以通过视频管理中的停止/开启自动转码按钮,进行关闭和开启。

全自动转码模式下,每30秒检测一次,每次只会将1个未转码视频加入到转码进程,最多只会加入你设置的同时转码数。

什么情况下需要调整时间

如果你的机器性能足够好,并且是秒切,或者是短视频,不到30秒就转完了;可以通过调低检测间隔时间来加快转码进度。

修改自动检测间隔时间

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的helper/agenda.js文件,需要修改代码await agenda.every("30 seconds", "auto queue"),有2个地方都要改,修改如下:

#分钟单位,比如1分钟;大于1分钟用minutes
1 minute
2 minutes
3 minutes

#秒钟单位,比如20秒
20 seconds

#如果我要修改为20秒,则具体代码
await agenda.every("20 seconds", "auto queue");

尽量不要低于10s,不然监控可能会抽风,修改后使用pm2 reload efvcms重启生效。

12 - 关闭后台不需要的功能导航显示

由于后台功能有的很多都用不到,可自行通过侧栏开关,关闭不需要的功能导航。

先前往后台左下角,找到侧栏开关(该功能于2024-02-18新增),选择你不需要的功能导航,直接关闭提交即可。

最后由于功能之间关联性太大,为了避免出现较大BUG,暂时只隐藏了导航,并不影响其已经设置好的功能。

13 - 程序链接打不开的解决方法

有时候程序会因为根目录爆满等原因,导致自动关闭,可按步骤检查恢复启动。

查看redis和mongodb数据库运行状态

使用SSH客户端登录服务器,使用命令:

systemctl status mongod redis

该命令分别会输出redismongodb运行状态,如果有输出信息不是Active: active (running),就是自动停止了。

解决方法

查看根目录是否满了

如果你没有乱安装,或者操作一些东西,则大概率就是系统根目录满了,造成运行环境自动关闭,先使用ssh客户端,运行命令df -h查看根目录占用情况。

#只需要看Mounted on为/的信息即可,且Use%为使用率,100%则为占满
Size  Used Avail  Mounted on
912G  248G  619G  29% /

如果确定根目录沾满了,则自行清理一些文件,然后开始下面操作。

当然,如果根目录没有满,也可以通过以下命令恢复。

恢复程序运行

使用ssh客户端,运行命令:

#启动mongodb数据库
systemctl restart mongod

#启动redis
systemctl restart redis

#重启程序
pm2 reload efvcms

如果重启的时候提示[PM2][ERROR] Process or Namespace efvcms not found,则使用命令:

#先进入程序目录,请根据你的安装情况修改目录路径
cd /home/express-ffmpeg

#启动命令
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production

最后可以检查下程序是否可以打开,如果还不能,可能是数据库损坏没启动成功,接下来运行命令:

mongod --dbpath=/usr/local/mongodb/data --repair
chown -R mongodb:mongodb /usr/local/mongodb
rm -rf /usr/local/mongodb/data/mongod.lock
systemctl restart mongod
pm2 reload efvcms

该命令可以修复数据库,如果还没好,可直接联系我们解决该问题。

14 - 文件夹管理权限修改

文件夹管理可将BT下载的压缩包解压,并将解压的视频和图集入库,不用的文件也可删除。
提示:最新版已移除该设置项,且做了很多细节优化,推荐更新最新版使用。

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的config/auth.js文件,修改如下:

#该参数为删除权限,false为禁止删除,将false改成true则为开放删除权限,也就是后台文件管理可以对文件进行删除操作
allowDelete: false,

#该参数为文件管理默认的根目录,修改后,只能访问该目录下的文件和子目录
limitPath: '/home/express-ffmpeg/bt/download',

根据自己的需求进行编辑修改,最后使用命令重启:

pm2 reload efvcms