Установка Kernel Tube Video Sharing 2.4.3 на Ubuntu 12.04

в 13:38, , рубрики: video streaming, Работа с видео, системное администрирование, метки:

Вступление:

Попробую поделиться установкой tube скрипта для отдачи видео.

Решили не идти путём написания своего скрипта, а использовать сторонние решения.

Дело началось ещё в 2010 году. Тогда мы рассматривали существующие решения, платные и бесплатные.
Вот такой списочек я рассмотрел вроде на тот момент. Предпологаю, что мог не всё тогда запостить.
В итоге мы остановились на Kernel Tube Video Sharing. Продукт платный. Если вы его ещё не рассматривали, то думаю стоит хотя бы глянуть на него и его возможности(изначально он судя по всему ориентирован на контент для взрослых).
Ни в коем случае не сочтите за рекламу. Установка стоит 40$, может мой пост поможет вам их сэкономить и немного сократить время нужное на установку :)
Сейчас как раз занимаюсь установкой KVS на сервер и решил поделиться своей инструкцией. На просторах Internet такого не встречал.

Страница проекта — www.kernel-video-sharing.com/ru/
Демо сайт — kvs-demo.com/
Демо админка — kvs-demo.com/admin/

Установка Kernel Tube Video Sharing 2.4.3 на Ubuntu 12.04

Серверные требования

Минимальные требования к серверу

  • PHP 5.2 или выше
  • Mysql 5.0 или выше и поддержка его в PHP
  • FFmpeg 0.8 или выше с поддержкой libfaac, libx264, libavfilter
  • Yamdi
  • Qt-faststart
  • ImageMagick
  • Curl и поддержка его в PHP
  • Apache + mod_rewrite + (выключенная опция MultiViews)
  • ionCube loader
  • Perl & CGI 3.15 или выше (не требуется при использовании Nginx)
  • Не кириллическое доменное имя
Обязательные требования к PHP

  • библиотека Zlib
  • XML extension
  • GD2 с поддержкой true type font (обязательно!)
  • Возможность запуска PHP из CLI, используя exec()
  • PHP register_globals off
  • PHP magic_quotes_gpc off
  • PHP safe_mode off
  • PHP file_uploads on
  • PHP allow_url_fopen on
Рекомендуемые опции (крайне желательные)

  • Memcache и поддержка его в PHP
  • Nginx + Apache (через reverse proxy) + NginxHttpUploadProgressModule

Установка необходимых компонентов

Yamdi, Imagemagick

sudo apt-get install yamdi imagemagick

Memcache, MySQL, Apache, Php

sudo apt-get install memcached mysql-server-5.5 apache2 libapache2-mod-rpaf php5 php5-mysql php5-curl php5-cli php5-memcache php5-gd

Build tools

sudo apt-get install build-essential checkinstall subversion git unzip
Установка Nginx

Устанавливаем зависимости

sudo apt-get install libssl-dev zlib1g-dev

Скачиваем исходники Nginx

cd /usr/local/src/
wget http://nginx.org/download/nginx-1.2.4.tar.gz
tar -zxvf nginx-1.2.4.tar.gz
cd nginx-1.2.4
Скачиваем дополнительные модули

mkdir modules
# nginx-upload-progress-module
git clone https://github.com/masterzen/nginx-upload-progress-module.git modules/nginx-upload-progress-module
# nginx_mod_h264_streaming
wget http://www.kernel-video-sharing.com/files/nginx_mod_h264_streaming-2.3.2.zip
unzip nginx_mod_h264_streaming-2.3.2.zip -d modules/
rm -f nginx_mod_h264_streaming-2.3.2.zip
Запускаем скрипт конфигурации сборки

./configure 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--pid-path=/var/run/nginx.pid 
--lock-path=/var/lock/nginx.lock 
--http-log-path=/var/log/nginx/access.log 
--http-client-body-temp-path=/var/lib/nginx/body 
--http-proxy-temp-path=/var/lib/nginx/proxy 
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi 
--with-debug 
--with-http_stub_status_module 
--with-http_secure_link_module 
--with-http_gzip_static_module 
--with-http_realip_module 
--with-http_mp4_module 
--with-http_flv_module 
--with-http_ssl_module 
--with-http_dav_module 
--with-md5=/usr/lib 
--add-module=modules/nginx-upload-progress-module 
--add-module=modules/nginx_mod_h264_streaming-2.3.2
Решение для сборки h264 в GCC-4.6

Re: NGINX1.0.2+H264 streaming-2.2.7+Fedora 15

vi auto/cc/gcc

# коментируем следующую строчку
CFLAGS="$CFLAGS -Werror"
Запускаем сборку Nginx

make
Запускаем сборку и установку deb пакета

checkinstall --pkgname=nginx --pkgversion "1.2.4-1.relase.`date +%Y%m%d`" --backup=no --install=yes --default
Создаём пользователя для Nginx

sudo useradd --shell /bin/false --no-create-home nginx
Создаём необходимые симлинки и папки

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx
mkdir -p /var/lib/nginx/body
mkdir /var/lib/nginx/proxy
mkdir /var/lib/nginx/fastcgi
chown -R  nginx:root /var/lib/nginx/
Устанавливаем скрипт инициализации

# http://wiki.nginx.org/Nginx-init-ubuntu
wget http://nginx-init-ubuntu.googlecode.com/files/nginx-init-ubuntu_v2.0.0-RC2.tar.bz2
tar -jxvf nginx-init-ubuntu_v2.0.0-RC2.tar.bz2 -C /etc/init.d/
chmod 715 /etc/init.d/nginx
/usr/sbin/update-rc.d -f nginx defaults
rm -f nginx-init-ubuntu_v2.0.0-RC2.tar.bz2

vi /etc/init.d/nginx

DAEMON=/usr/local/nginx/sbin/nginx
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
Устанавливаем видео компоненты
Устанавливаем зависимости


# sudo apt-get -y install build-essential checkinstall git
#
sudo apt-get -y install libfaac-dev libjack-jackd2-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev texi2html yasm zlib1g-dev libgsm1 libgsm1-dev libxvidcore4 libxvidcore-dev libdc1394-22 libdc1394-22-dev

Устанавливаем x264
Удаляем существующий x264

sudo apt-get remove x264 libx264-dev

Скачиваем исходники x264

cd /usr/local/src
git clone git://git.videolan.org/x264.git x264_`date +"%Y%m%d"`
cd x264_`date +"%Y%m%d"`

Запускаем скрипт конфигурации сборки x264

./configure --enable-static

Запускаем сборку x264

make

Запускаем сборку и установку deb пакета x264

sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes --fstrans=no --install=yes --default

Устанавливаем libvpx
Удаляем существующий libvpx

sudo apt-get remove libvpx-dev

Скачиваем исходники libvpx

cd /usr/local/src
git clone http://git.chromium.org/webm/libvpx.git libvpx_`date +"%Y%m%d"`
cd libvpx_`date +"%Y%m%d"`

Запускаем скрипт конфигурации сборки libvpx

./configure

Запускаем сборку libvpx

make

Запускаем сборку и установку deb пакета libvpx

sudo checkinstall --pkgname=libvpx --pkgversion="1:$(date +%Y%m%d%H%M)-git" --backup=no --install=yes --deldoc=yes --fstrans=no --default

Устанавливаем ffmpeg
Я устанавливал ffmpeg 0.8.x потому как версии выше не поддерживают прсесеты и были проблемы при наложении ватермарков на видео(синтаксис параметров у ffmpeg часто меняется). В версии 0.8.12 всё прекрасно работает.
Удаляем существующий ffmpeg

sudo apt-get remove ffmpeg

Скачиваем исходники ffmpeg

cd /usr/local/src
wget https://ffmpeg.org/releases/ffmpeg-0.8.12.tar.gz
tar -zxvf ffmpeg-0.8.12.tar.gz
cd ffmpeg-0.8.12

Запускаем скрипт конфигурации сборки ffmpeg

./configure 
--enable-gpl 
--enable-postproc 
--enable-pthreads 
--enable-swscale 
--disable-debug 
--enable-nonfree 
--enable-libopencore-amrnb 
--enable-libopencore-amrwb 
--enable-version3 
--enable-libdc1394 
--enable-libfaac 
--enable-libgsm 
--enable-libmp3lame 
--enable-libtheora 
--enable-libvorbis 
--enable-libx264 
--enable-libxvid 
--enable-libvpx

Запускаем сборку ffmpeg

make

Запускаем сборку и установку deb пакета ffmpeg

sudo checkinstall --pkgname=ffmpeg --pkgversion="0.11.1-release-`date +%Y%m%d%H%M`" --backup=no --deldoc=yes --fstrans=no --install=yes --default

Устанавливаем qt-faststart
Переходим в папку с исходниками ffmpeg

cd /usr/local/src
cd ffmpeg-0.8.12

Запускаем сборку qt-faststart

make tools/qt-faststart

Запускаем сборку и установку deb пакета qt-faststart

sudo checkinstall --pkgname=qt-faststart --pkgversion="$(date +%Y%m%d%H%M)-git" --backup=no --deldoc=yes --fstrans=no --default install -Dm755 tools/qt-faststart /usr/local/bin/qt-faststart

Проверяем установленные видео компоненты

x264
ffmpeg
ffplay
ffprobe
qt-faststart
Настройка Web серверов

Создаём пользователя для работы сайта KVS

useradd --shell /bin/false --no-create-home www-kvs

Создаём рабочий каталог для сайта KVS

mkdir /home/kvs/

Настройка Apache
Настриаваем порты прослушивания Apache

vi /etc/apache2/ports.conf

NameVirtualHost *:8080
Listen 8080

Устанвливаем Apache модули

# mod_ruid2
cd /usr/local/src
#
wget http://mirror.pnl.gov/ubuntu/pool/universe/liba/libapache2-mod-ruid2/libapache2-mod-ruid2_0.9.7-1_amd64.deb
#
dpkg -i libapache2-mod-ruid2_0.9.7-1_amd64.deb

Настраиваем Apache модули

# mod_rpaf
vi /etc/apache2/mods-available/rpaf.conf

<IfModule rpaf_module>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 192.168.1.2 127.0.0.1
RPAFheader X-Real-IP
</IfModule>

# mod_ruid2
vi /etc/apache2/mods-available/ruid2.conf

<IfModule mod_ruid2.c>
    RMode config
    RDefaultUidGid www-data www-data
    RUidGid www-data www-data
    RGroups www-data
</IfModule>

Включаем необходимые Apache модули

a2enmod rpaf
a2enmod ruid2
a2enmod rewrite

Создаём папку для логов KVS

mkdir -p /var/log/www/kvs

Создаём сайт для KVS в Apache

vi /etc/apache2/sites-available/kvs.conf

<VirtualHost 127.0.0.1:8080>
        ServerAdmin admin@domain.com
        Servername video.domain.com
        ServerAlias  tube.domain.com

        RMode config
        RUidGid www-kvs www-kvs
        RGroups www-kvs

        RewriteEngine on
        RewriteCond %{HTTP_HOST} ^tube.domain.com$
        RewriteRule (.*) http://video.domain.com$1 [R=301,L]

        DocumentRoot /home/kvs/

#       AddType text/css css

        php_admin_value open_basedir /home/kvs
        php_admin_value upload_tmp_dir /home/kvs/tmp
        php_admin_value session.save_path /home/kvs/tmp

        <Directory /home/kvs>
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /var/log/www/kvs/kvs-apache-error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel debug

        CustomLog /var/log/www/kvs/kvs-apache-access.log combined

</VirtualHost>

Активируем созданный сайт

a2ensite kvs.conf
a2dissite default

Перезапускаем Apache

service apache2 restart

Настройка Php
Редактируем конфиг Php для Apache

vi /etc/php5/apache2/php.ini

register_globals = Off
magic_quotes_gpc = off
safe_mode = Off
max_execution_time = 9999
allow_url_fopen = On
file_uploads = On
upload_tmp_dir = /tmp
upload_max_filesize = 1024M
post_max_size = 1024M
memory_limit = 1024M
session.gc_maxlifetime = 86400

Редактируем конфиг Php CLI

vi /etc/php5/cli/php.ini

memory_limit = 1024M
safe_mode = Off
allow_url_fopen = On

Настраиваем логирование Php

vi /etc/php5/apache2/php.ini

error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR
display_errors = Off
display_startup_errors = Off
log_errors = On
log_errors_max_len = 102400
error_log = /var/log/www/php.log

Перезапускаем Apache

service apache2 reload

Настройка Nginx

Пользователя, из под которого рабоает, nginx помещаем в группу www-kvs

usermod -a -G www-kvs nginx

Перемещаем умолчательный конфиг Nginx

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk

Создаём новый конфиг Nginx

vi /etc/nginx/nginx.conf

user nginx;
worker_processes  16;

error_log  /var/log/nginx/error.log info;
#error_log  logs/error.log  notice;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
    #multi_accept on;
}

http {
    include      /etc/nginx/mime.types;
    default_type  application/octet-stream;

    server_tokens off;
    server_names_hash_bucket_size  128;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log main;

    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_disable "MSIE [1-6].(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

   server {
        listen       192.168.1.2:80;
        server_name  default;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location = /stat {
                stub_status on;
                access_log  off;
                allow all;
                deny all;
            }

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

Создаём конфиг для KVS

mkdir /etc/nginx/sites-available/
mkdir /etc/nginx/sites-enabled/
vi /etc/nginx/sites-available/kvs.conf

        upload_progress proxied 1m;
        proxy_buffering off;

server {
        listen 192.168.1.3:80;
        server_name video.domain.com *.video.domain.com tube.domain.com ;
        access_log /var/log/www/kvs/kvs-nginx-access.log;
        error_log /var/log/www/kvs/kvs-nginx-error.log;

        location / {
                index index.php;
                if (-f /etc/nginx/maintenance.file) {
                return 503;
                }
                proxy_pass         http://127.0.0.1:8080/;
                proxy_redirect http://video.domain.com:8080/ /;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                client_max_body_size       1024m;
                client_body_buffer_size    128k;
                proxy_connect_timeout      90;
                proxy_send_timeout         900;
                proxy_read_timeout         900;
                proxy_buffer_size          4k;
                proxy_buffers              4 32k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 64k;
                charset         off;
                track_uploads proxied 30s;
            }

        location ~* ^.+.(gif|jpg|png|mpg|mp3|mpeg|avi|ico|txt|css|js|html)$ {
                #valid_referers none blocked video.edenfantasys.com;
                #if ($invalid_referer) {
                #    return   403;
                #}
                root /home/kvs/;
                expires 30d;
                gzip             on;
                gzip_min_length  100;
                gzip_comp_level  9;
                gzip_types       text/plain text/css text/javascript application/x-javascript;
                gzip_disable "MSIE [1-6].(?!.*SV1)";
        }

        location ^~ /admin/include/get_upload_status.php  {
                report_uploads proxied;
        }

        location ^~ /contents/videos/ {
                flv;
                mp4;
                root /home/kvs;
#               internal;
                expires max;
        }


        location ^~ /contents/private/ {
                flv;
                mp4;
                root /home/kvs;
#               internal;
                expires max;
        }

        location ^~ /contents/videos_sources/ {
                root /home/kvs;
                internal;
        }

        location ^~ /contents/albums/sources/ {
                root /home/kvs;
                internal;
        }

        # deny access to .htaccess files, if Apache's document root concurs with nginx's one
        #
        location ~ /.ht {
                deny  all;
        }

    }

Активируем созданный сайт

ln -s /etc/nginx/sites-available/kvs.conf /etc/nginx/sites-enabled/kvs.conf

Тестируем конфиг KVS

service nginx configtest

Запускаем Nginx

service nginx start

Настраиваем KVS

Распаковываем контент KVS

unzip KVS_2.4.3_20120426.zip -d /home/kvs
cd /home/kvs
cat /home/kvs/_INSTALL/install_EN.txt
Создаём базу для KVS

mysql -uroot -p
CREATE DATABASE kvs CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'kvs'@'localhost' IDENTIFIED BY '*******';
GRANT ALL PRIVILEGES ON kvs.* TO 'kvs'@'localhost';
FLUSH PRIVILEGES;
QUIT;
mysql -uroot -p kvs < _INSTALL/install_db.sql
Правим конфиги KVS

vi admin/include/setup_db.php
define('DB_HOST','localhost');
define('DB_LOGIN','kvs7');
define('DB_PASS','*******');
define('DB_DEVICE','kvs');
vi admin/include/setup_db.php
// a. Токен "/PATH" во всех местах заменить на полный серверный путь к папке установки проекта без слеша на конце
    (например, /usr/path/to/domain.com) 
$config['project_path']="/home/kvs";
$config['temporary_path']="/home/kvs/tmp";
$config['content_path_videos_sources']="/home/kvs/contents/videos_sources";
$config['content_path_videos_screenshots']="/home/kvs/contents/videos_screenshots";
$config['content_path_categories']="/home/kvs/contents/categories";
$config['content_path_models']="/home/kvs/contents/models";
$config['content_path_dvds']="/home/kvs/contents/dvds";
$config['content_path_avatars']="/home/kvs/contents/avatars";
$config['content_path_content_sources']="/home/kvs/contents/content_sources";
$config['content_path_advertisement']="/home/kvs/contents/advertisement";
$config['content_path_albums']="/home/kvs/contents/albums";
$config['content_path_referers']="/home/kvs/contents/referers";
$config['content_path_other']="/home/kvs/contents/other";
//
// b. В настройке $config['is_nginx'] поставить значение "false", если главный сервер работает не на nginx
$config['is_nginx']="true";
//
// c. В настройке $config['server_type'] поставить значение "apache", если главный сервер работает на apache без nginx
$config['server_type']="nginx";
//
// d. В настройке $config['is_translit_directories'] поставить значение "true", если данные на вашем сайте будут вноситься
    на русском языке
$config['is_translit_directories']="true";
//
// e. В настройке $config['php_path'] прописать путь к php (обязательно)
$config['php_path']="/usr/bin/php";
//
// f. В настройке $config['ffmpeg_path'] прописать путь к ffmpeg (обязательно)
$config['ffmpeg_path']="/usr/local/bin/ffmpeg";
//
// g. В настройке $config['image_magick_path'] прописать путь к imagemagick (обязательно)
$config['image_magick_path']="/usr/bin";
//
// h. В настройке $config['mysqldump_path'] прописать путь к утилите mysqldump (опционально)
$config['mysqldump_path']="/usr/bin/mysqldump";
//
// i. Удалить настройки $config['memcache_server'] и $config['memcache_port'], если у вас не установлен memcache

Далее смотрите по вашей конфигурации.

Устанавливаем права на файлы KVS

kvsroot=/home/kvs
kvsuser=www-kvs
kvsgroup=www-kvs
#
chmod 750 $kvsroot
chown -R $kvsuser:$kvsgroup $kvsroot
#
find $kvsroot/ -type f -exec chmod 444 {} ; 
find $kvsroot/ -type d -exec chmod 555 {} ;
#
#
# 5) Установите на следующие каталоги и подкаталоги привилегии 777, а на файлы в них привилегии 666: 
#
# a. /tmp
find $kvsroot/tmp -type d -exec chmod 777 {} ;
find $kvsroot/tmp -type f -not -name ".htaccess" -exec chmod 666 {} ;
# b. /template (а также 777 на подкаталоги и 666 на все файлы кроме .htaccess)
find $kvsroot/template -type d -exec chmod 777 {} ;
find $kvsroot/template -type f -not -name ".htaccess" -exec chmod 666 {} ;
# c. /contents (на сам каталог /contents не нужно, 777 на подкаталоги)
find $kvsroot/contents -mindepth 1 -type d -exec chmod 777 {} ;
find $kvsroot/contents -type f -not -name ".htaccess" -exec chmod 666 {} ;
# d. /admin/smarty/cache
find $kvsroot/admin/smarty/cache -type d -exec chmod 777 {} ;
find $kvsroot/admin/smarty/cache -type f -not -name ".htaccess" -exec chmod 666 {} ;
# e. /admin/smarty/template-c
find $kvsroot/admin/smarty/template-c -type d -exec chmod 777 {} ;
find $kvsroot/admin/smarty/template-c -type f -not -name ".htaccess" -exec chmod 666 {} ;
# f. /admin/smarty/template-c-site
find $kvsroot/admin/smarty/template-c-site -type d -exec chmod 777 {} ;
find $kvsroot/admin/smarty/template-c-site -type f -not -name ".htaccess" -exec chmod 666 {} ;
# g. /admin/logs (а также 777 на подкаталоги)
find $kvsroot/admin/logs -type d -exec chmod 777 {} ;
find $kvsroot/admin/logs -type f -not -name ".htaccess" -exec chmod 666 {} ;
# h. /admin/data (на сам каталог /admin/data не нужно, 777 на подкаталоги и 666 на все файлы кроме .htaccess и /admin/data/conversion/remote_cron.php)
find $kvsroot/admin/data -mindepth 1 -type d -exec chmod 777 {} ;
find $kvsroot/admin/data -type f -not -name ".htaccess" -not -name "remote_cron.php" -exec chmod 666 {} ;

Пост-установочные настройки

Добавляем задачу в cron

# 6) Поставьте скрипт /admin/include/cron.php на выполнение по крону раз в минуту. Скрипт должен выполняться из той папки, в которой он находится. Команда должна быть задана в таком виде:
#
# cd /PATH/admin/include/ && /usr/local/bin/php cron.php > /dev/null 2>&1
crontab -e -u www-kvs

*/1 * * * * cd /home/kvs/admin/include/ && /usr/bin/php cron.php > /dev/null 2>&1
Проверяем пути в файле admin/data/conversion/remote_cron.php

# 8) В файле /admin/data/conversion/remote_cron.php проверьте корректность путей к ffmpeg, yamdi и qt-faststart. При необходимости установите корректные пути.

vi admin/data/conversion/remote_cron.php

$ffmpeg_path="/usr/local/bin/ffmpeg";
$yamdi_path="/usr/bin/yamdi";
$qtf_path="/usr/local/bin/qt-faststart";
$imagemagick_path="/usr/bin/convert";
Меняем умолчательный пароль администратора

7) Попробуйте зайти в зону администрирования (http://testvideo.edenfantasys.com/admin).
Для доступа используйте данные: admin / 123. Если вы видите белый экран или какую-либо ошибку, то скорее всего у вас
одна из следующих проблем:

- Не установлены 777 привилегии на нужные папки в /admin/smarty/ (см. шаги 5d, 5e, 5f)
- У вас нет поддержки memcache, но вы не удалили настройки memcache из /admin/include/setup.php (см. шаг 4i)
- У вас некорректно указан полный серверный путь к проекту в /admin/include/setup.php (см. шаг 4a)

Заходим в административную часть сайта:
video.domain.com/admin/
admin:123

Настройки --> Персональные настройки --> Настройки пользователя --> Пароль: **********
--> Сохранить настройки
Добавляем сервер конвертации

# 9) В разделе Настройки панели администрирования задайте сервер конвертации. Укажите для него следующие данные:
#
# Название:        Любое, например Local
# Статус:          Активный
# Тип подключения: Локально (это поле может отсутствовать)
# Путь:            Полный серверный путь к папке /admin/data/conversion
# 
# При сохранении сервера конвертации вы можете получить ошибку, если вы некорректно выполнили шаги 6 или 8, либо
# некорректно указали путь.

Настройки --> Сервера конвертации --> Добавить сервер
Название (*): Локальный сервер конвертации
Статус: Активный
Макс. задач (*): 5
Приоритет ресурсоемких операций: Средний
Тип подключения: Локальный
Путь (*): /home/kvs/admin/data/conversion

--> Сохранить сервер
Добавляем сервер хранения

# 10) Для хранения видео контента на своих серверах необходимо добавить сервера хранения. Этого не требуется, если вы
# планируете использовать сторонние embed коды или хотлинковать видео с других серверов. Для добавления сервера хранения вам сначала необходимо добавить группу серверов хранения. Это можно сделать в разделе Настройки панели администрирования. Затем в этом же разделе вам необходимо открыть страницу добавления сервера хранения и в зависимости от того, где находится данный сервер использовать следующие значения:

#  a. Локальный сервер хранения (т.е. видео будет храниться на том же сервере, где работает KVS):
#    - Название:        Любое, например Local
#    - Группа серверов: Выберите группу, которую вы только что создали
#    - URL:             http://video.domain.com/contents/videos
#    - Тип стриминга:   Выберите тип стриминга, который доступен у вас на сервере хранения (nginx или apache)
#    - Тип подключения: Локально
#    - Путь:            Полный серверный путь к папке /contents/videos

#  b. Удаленный сервер хранения (т.е. видео будет храниться на стороннем сервере):

#    Для хранения видео на удаленном сервере необходимо установить на нем nginx. Обычно к удаленному серверу привязывают субдомен, например: video.domain.com. Под ним необходимо создать любую папку, например: storage.  Для этой папки должен быть настроен стриминг, а сама папка должна быть объявлена internal зоной nginx:

#    location ^~ /storage/ {
#        flv;
#        root /usr/path/to/video.domain.com/html;
#        internal;
#    }
#
#    В корень субдомена необходимо скопировать скрипт /admin/tools/remote_control.php и убедиться, что он доступен по прямому адресу и выдает слово "connected":

#    http://video.domain.com/remote_control.php

#    В настройках сервера хранения необходимо задать следующие значения:

#    - Название:        Любое, например Remote
#    - Группа серверов: Выберите группу, которую вы только что создали
#    - URL:             http://video.domain.com/storage
#    - Тип стриминга:   nginx
#    - Тип подключения: Папка через mount или FTP
#    - Путь:            Если соединение с сервером работает через NFS, то укажите путь к NFS mount
#    - FTP xxx:         Несколько полей для указания данных подключения к папке хранения через FTP

#  c. Reflected Networks CDN:

#    - Название:        Любое, например CDN
#    - Группа серверов: Выберите группу, которую вы только что создали
#    - URL:             CDN урл, который вы получите от Reflected Networks
#    - Тип стриминга:   Reflected Networks CDN
#    - Ключ стриминга:  Ключ защиты, который вы получите от Reflected Networks
#    - Тип подключения: Папка через mount или FTP
#    - Путь:            Если соединение с сервером работает через NFS, то укажите путь к NFS mount
#    - FTP xxx:         Несколько полей для указания данных подключения к папке хранения через FTP

# При сохранении сервера хранения вы можете получить ошибку, если вы некорректно указали пути, либо данные для подключения, либо некорректно выполнили шаги по настройке удаленного сервера.
Сервера хранения --> Добавить группу серверов -->

Название (*): Локальная группа серверов

--> Cохранить группу серверов
Сервера хранения --> Добавить сервер -->

Название (*): Локальный сервер хранения
Группа серверов (*): 	Локальная группа серверов
URL (*): http://video.domain.com/contents/videos
Тип стриминга: Nginx (x-accel-redirect)
Тип подключения: Локально
Путь (*): /home/kvs/contents/videos

--> Сохранить сервер
Проверяем всё ли верно установленно и сконфигурированно в KVS

# 11) Откройте раздел Плагинов панели администрирования и запустите плагин Аудита со всеми опциями. Плагин не должен выдать ни одной ошибки. В большинстве случаев потенциальные ошибки будут ссылаться на какой-то нерабочий элемент конфигурации.
Плагины --> Аудит системы --> 
* Проверить инсталляцию (может занять много времени)
* Проверить целостность БД
* Проверить сервера
* Проверить блоки и шаблоны сайта
* Проверить видео контент (может занять много времени)
# * Проверить защиту контента (требуется наличие контента)
* Проверить критерии безопасности проекта

--> Начать проверку
Загружаем видео и убеждаемся, что оно успешно сконвертировалось и его можно просмотреть на сайте

# 12) Загрузите видео и убедитесь, что оно сконвертировалось и может быть просмотрено.

Видео --> Добавить видео -->
Удаляем папку _INISTALL

rm -rf _INSTALL
Далее ваши личные настройки

Форматы видео, их размеры, наложение ватермарков, показ тайм-лайнов. Всё это можно при желании настраивать.
Читайте доку и настраивайте под себя.

Что не понравилось

1. Нет поддержки html5 — щас сидим вот ридумываем как показывать видео для яблочников.
2. Буду пополнять по мере воспоминаний…

Заключение

Инструкция получилась большой и немного утомительной.
Надеюсь этот пост будет кому-либо полезным при создании сервиса стриминга видео если выбор падёт на Kernel Video Sharing.

Автор: slech

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js