安装教程

express-ffmpeg 云转码依赖于服务器环境,需要安装 nodejs、mongodb、ffmpeg 及 nginx 等,所以本教程力图尽量详尽的列出安装步骤。 如果觉得麻烦,可以使用爱好者和我合作开发的一键傻瓜安装包: windows 程序

WARNING

注意:下面的教程以 Ubuntu16.04 系统为例,其他系统步骤相同,windows 系统依旧完美运行,安装方法不同而已。

安装 ffmpeg

Ubuntu16.04 安装 ffmpeg 十分方便

sudo add-apt-repository ppa:djcj/hybrid
sudo apt-get update
sudo apt-get install ffmpeg

安装之后,命令行运行 ffmpeg 即可查看效果。

安装 nvm 及 nodejs

假如是 root 账号登陆,系统为 ubuntu16.04。

cd ~
mkdir git
cd 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

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

如若显示类似内容,则 nvm 安装成功。

查看最近 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

我们以最新的 4.0 版本为例。

导入 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 服务

ps -ef | grep mongo
mongo    18288     1  0 06:12 ?        00:00:00 mongod -f /database/mongodb/data/mongodb_27017.conf
kill 18288

最后用命令行重启 mongodb 服务

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

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

安装 redis

wget http://download.redis.io/redis-stable.tar.gz
​tar xvzf redis-stable.tar.gz
​​cd redis-stable
make
sudo cp src/redis-server /usr/local/bin/
​sudo cp src/redis-cli /usr/local/bin/
​redis-server &

安装 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",
    secret: "yoursecret",
    login: "/adminloginurl",
    loginmsg: "404 Not Found"
};

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

安装 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/adminloginurl,输入设定的账号密码,本教程设置的是 admin,admin,进入之后点击设置,在其中绑定 yourdomain,设置 token 的 key,上传水印图片(推荐 120*35),域名分发设置是否开启,最后点击保存,大功告成。