Вступление:
Попробую поделиться установкой tube скрипта для отдачи видео.
Решили не идти путём написания своего скрипта, а использовать сторонние решения.
Дело началось ещё в 2010 году. Тогда мы рассматривали существующие решения, платные и бесплатные.
Вот такой списочек я рассмотрел вроде на тот момент. Предпологаю, что мог не всё тогда запостить.
В итоге мы остановились на Kernel Tube Video Sharing. Продукт платный. Если вы его ещё не рассматривали, то думаю стоит хотя бы глянуть на него и его возможности(изначально он судя по всему ориентирован на контент для взрослых).
Ни в коем случае не сочтите за рекламу. Установка стоит 40$, может мой пост поможет вам их сэкономить и немного сократить время нужное на установку :)
Сейчас как раз занимаюсь установкой KVS на сервер и решил поделиться своей инструкцией. На просторах Internet такого не встречал.
Страница проекта — www.kernel-video-sharing.com/ru
Демо сайт — kvs-demo.com
Демо админка — kvs-demo.com/admin
Особенности нашей инсталяции
1. Используется suexec модуль mod_ruid2 — для пущей безопасности. Ранее я настраивал всё без него.
2. У нас пакет с исходниками KVS(ещё с версии 1.5) — посему мы не используем ionCube loader. Уточните этот момент у разработчиков.
Установка 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
Установка Exim
sudo apt-get install exim
Настройка Exim
sudo dpkg-reconfigure exim4-config
Установка 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
sendmail_path = "/usr/sbin/sendmail -t -i"
Редактируем конфиг Php CLI
vi /etc/php5/cli/php.ini
memory_limit = 1024M
safe_mode = Off
allow_url_fopen = On
sendmail_path = "/usr/sbin/sendmail -t -i"
Настраиваем логирование 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.domain.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','kvs');
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://video.domain.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.