用的是 NFP的 vps 安装的是Ubuntu16.04版

vps的购买地址: https://portal.nfphosting.com/aff.php?aff=682

首先 把 apache卸载了。
sudo apt-get remove apache* 输入Y回车。卸载干净。。

更新内核版本v4.11.8
cd ~
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.8/linux-headers-4.11.8-041108_4.11.8-041108.201706290836_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.8/linux-headers-4.11.8-041108-generic_4.11.8-041108.201706290836_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.8/linux-image-4.11.8-041108-generic_4.11.8-041108.201706290836_amd64.deb
sudo dpkg -i *.deb
reboot

重启之后,uname -sr查看最新内核,看看是否安装成功。

安装bbr和魔改bbr
wget –no-check-certificate -qO ‘BBR.sh’ ‘https://moeclub.org/attachment/LinuxShell/BBR.sh’ && chmod a+x BBR.sh && bash BBR.sh -f
wget –no-check-certificate -qO ‘BBR_POWERED.sh’ ‘https://moeclub.org/attachment/LinuxShell/BBR_POWERED.sh’ && chmod a+x BBR_POWERED.sh && bash BBR_POWERED.sh

设置时区
timedatectl set-timezone ‘Asia/Shanghai’

安装下 工具 sudo apt-get install software-properties-common python-software-properties

安装ffmpeg

这样 接下来的 sudo add-apt-repository ppa:djcj/hybrid 就不会出错了。

sudo apt-get update 再来更新下系统。。

sudo apt-get install ffmpeg 开始安装 ffmpeg 了。

安装nvm及nodejs

cd ~ && mkdir git && cd git
这需要安装下git
sudo apt-get install git
git clone https://github.com/cnpm/nvm.git
source /root/git/nvm/nvm.sh

配置终端启动时自动执行source /root/git/nvm/nvm.sh,在 ~/.bashrc、 ~/.bash_profile、~/.profile 或者 ~/.zshrc 文件添加以下命令:
source /root/git/nvm/nvm.sh
然后重新打开终端,输入nvm。验证下是不是正常。如若显示类似内容,则nvm安装成功。

$ nvm
 
Node Version Manager
 
Usage:
    nvm help                    Show this message
    nvm --version               Print out the latest released version of nvm
    nvm install [-s]   Download and install a , [-s] from source
    nvm uninstall      Uninstall a version
    nvm use            Modify PATH to use 
    nvm run  []  Run  with  as arguments
    nvm current                 Display currently activated version
    nvm ls                      List installed versions
    nvm ls             List versions matching a given description
    nvm ls-remote               List remote versions available for install
    nvm deactivate              Undo effects of NVM on current shell
    nvm alias []       Show all aliases beginning with 
    nvm alias    Set an alias named  pointing to 
    nvm unalias           Deletes the alias named 
    nvm copy-packages  Install global NPM packages contained in  to current version
 
Example:
    nvm install v0.10.24        Install a specific version number
    nvm use 0.10                Use the latest available 0.10.x release
    nvm run 0.10.24 myApp.js    Run myApp.js using node v0.10.24
    nvm alias default 0.10.24   Set default node version on a shell
 
Note:
    to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders

查看最近nodejs稳定版本号,前往nodejs官网,查看稳定版本号。截止此教程发布,最新的稳定版本为8.11.3,于是我们安装这个版本:

nvm install 8.11.3

最后设置默认版本

nvm alias default v8.11.3

这样每次重启,都会自动切换到nodejs v8.11.3版本。

安装expressjs

express-ffmpeg云转码是利用expressjs进行开发,我们进行全局安装即可。

npm install express -gd

安装mongodb

官方指导https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/

导入pulickey

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

创建列表文件

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

更新apt包数据库

sudo apt-get update

apt安装mongodb包
sudo apt-get install -y mongodb-org
mongodb数据库配置

进入根目录创建data文件夹,在data中再创建db文件夹和log文件夹。

cd / && mkdir data && cd data && mkdir db && mkdir log

然后利用命令行运行mongodb

mongod --dbpath /data/db --fork --logpath /data/log/mongodb.log

进入mongo命令行工具增加用户

mongo
use admin
use ffmpeg
db.createUser({user:"ffmpeg",pwd:"ffmpeg",roles:[{role:"readWrite",db:"ffmpeg"}]})
db.auth("ffmpeg","ffmpeg")

如果显示1则增加用户正确。

关闭mongodb服务

$ sudo service mongod stop
$ ps -ef | grep mongo
root     17573 14213  0 05:10 pts/1    00:00:00 su - mongo
mongo    17574 17573  0 05:10 pts/1    00:00:00 -bash
mongo    18288     1  0 06:12 ?        00:00:00 mongod -f /database/mongodb/data/mongodb_27017.conf
mongo    18300 17574  6 06:13 pts/1    00:00:00 ps -ef
mongo    18301 17574  0 06:13 pts/1    00:00:00 grep mongo

$ kill 18288

最后用命令行重启mongodb服务

mongod -auth --bind_ip 127.0.0.1 --port 27017 --dbpath /data/db --fork --logpath /data/log/mongodb.log

当然你也可以把这个写进mongodb的配置文件,然后利用配置文件启动mongodb。

 

 

安装 nginx 及反向代理配置

 

sudo -s
nginx=stable # use nginx=development for latest development version
add-apt-repository ppa:nginx/$nginx
apt-get update
apt-get install nginx

安装之后,我们需要配置nginx,进入/etc/nginx,我们需要关注的主要是两个文件夹,sites-available和sites-enabled,这两个文件夹里边的文件内容完全相同,这是因为site-available中的文件建立了符号链接到sites-enabled中文件,相当于快捷方式。我们开始设置我们自己的站点。

WARNING

符号链接(symbolic links): 克服硬链接的局限性, 类似于快捷方式, 使用与硬链接相同. 如果先删除文件, 则会成为坏链接(broken), ls会以不同颜色(Ubuntu, 红色)显示 操作: ln -s item link, 可以link文件和目录

cd /etc/nginx/sites-available
cp default yourdomain.com
ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/yourdomain.com

开始配置yourdomain.com设置反向代理

server {  
  server_name yourdomain.com;
  listen 80;
 
  location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-NginX-Proxy true;
    proxy_pass http://127.0.0.1:3000;
    proxy_redirect off;
  }
}

最后重启nginx服务

/etc/init.d/nginx restart

克隆云转码源码并配置

环境装完了,现在开始安装云转码应用。 假设将云转码安装在根目录/www中,如若没有此文件夹,请先创建。

cd /www
git clone https://gitee.com/quazero/express-ffmpeg
cd express-ffmpeg

创建config文件夹,创建auth.js配置文件

mkdir config
cd config
touch auth.js

进行auth.js的配置

module.exports = {
    user: "admin",
    password: "admin",
    db: "ffmpeg",
    dbuser: "ffmpeg",
    dbpassword: "ffmpeg"
};

从上往下依次是登陆云转码平台的账号,密码,数据库,数据库用户名,数据库密码。本教程安装的mongodb数据库为ffmpeg,用户名和密码都是ffmpeg,可以自行进行修改。

安装pm2并运行源码

cd /www/express-ffmpeg
npm install
npm install -g pm2
pm2 start bin/www -i 0

pm2是极其推崇的运行nodejs应用的工具,-i 0的意思是以集群方式按照cpu线程数自动开启多线程运行,大幅提高运行效率。

设置环境为发行环境

设置node运行环境为发行环境,并且重启服务,设置成发行环境会让应用速度更上一个台阶,并且不再显示错误信息。

export NODE_ENV=production
pm2 reload all --update-env

进入后台进行配置
最后打开yourdomain.com/admin,输入设定的账号密码,本教程设置的是admin,admin,进入之后点击设置,在其中绑定yourdomain,设置token的key,上传水印图片(推荐120*35),域名分发设置是否开启,最后点击保存,大功告成。

 


解决办法 :
~$ rm -rf ~/.node-gyp/

~$ npm i -g node-gyp

~$ rm -rf 项目/node_modules

~$ npm i -d

云转码可以很方便的将各种视频进行转码并且切片,但是分享链接只有分享给其他人才会有价值,所以将云转码接入各种视频网站CMS是很重要的,我今天教给大家一个非常简单的接入方案,基本上所有的CMS都可以这样接入,我今天以discuz为例。

discuz后台设置

discuz后台设置,进入discuz管理中心-界面-编辑器设置-discuz代码,然后进行设置。

新增两个标签iframe和iframelist,一个是针对单一视频,一个是针对一组视频。

设置iframe标签

编辑标签iframe,在替换内容输入以下内容:

<iframe height=428 width=100% frameborder=0 scrolling="no" src="{1}" allowfullscreen></iframe>

这句代码意思是,当在discuz论坛编辑中点此标签,输入云转码分享链接,类似

[iframe]http://yourdomain.com/share/4jkkj5k45j6j645k[/iframe]

这样就可以在discuz前台播放出云转码转码切片出来的视频,并且配合discuz的会员系统,可以设置回复可见或者指定会员组才能观看。

设置iframelist标签

编辑标签iframelist标签,在替换内容输入以下内容:

 
#listNum{list-style-type:none;padding:0;margin:0;margin-top:20px}#listNum li{list-style-type:none;float:left;margin-left:5px;margin-bottom:5px}#listNum li a{border:1px solid #f0f0f0;padding:3px 15px;color:#333;text-decoration:none}#listNum li a:hover,#listNum li a.active{background-color:#6f5d6b;color:white}var playarr = "{1}";var playlists = playarr.split("|");var playlength = playlists.length;var index = 0;function init(){var html = "";document.getElementById("bdyyunbo").src= playlists[0];for(var i = 0;i < playlength;i++){html+= '';if(i == index){html+= ''+(i+1)+''}else{html+= ''+(i+1)+''}html+= ''}document.getElementById("listNum").innerHTML = html}init();function changeStream(num){document.getElementById("bdyyunbo").src = playlists[num];var lists = document.querySelectorAll("#listNum li a");for(var i = 0;i<lists.length;i++){if(lists[i].className == "active"){lists[i].className = ""}}lists[num].className = "active"}

这个标签比较复杂,因为需要在前台设置标签按钮切换视频,在discuz编辑中输入以下标签:

[iframelist]1|2|3[/iframelist]

1、2、3替换成云转码的分享链接,并且以|隔开,这样编辑完成之后,在discuz前台就会默认播放第一个视频,并且在视频下面会出现1、2、3的标签按钮,可以点击进行切换。

案例图片:

视频下面有标签按钮可以切换视频。

总结

以上就是云转码express-ffmpeg接入discuz的方案,非常的简单,不需要任何插件就可以完成,其他cms其实也是类似,无非是替换iframe中的参数。

希望大家喜欢这次的教程。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。