Вступление:
Попробую поделиться установкой 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.
