Серверные требования
Минимальные требования к серверу
- PHP 5.2 или выше
- Mysql 5.0 или выше
- 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 magic_quotes_gpc off
- PHP safe_mode off
- PHP file_uploads on
- PHP allow_url_fopen on
Рекомендуемые опции (крайне желательные)
- Memcache и поддержка его в PHP
- Nginx + Apache (через reverse proxy) + NginxHttpUploadProgressModule
Использование Nginx для статики
Мы рекомендуем использовать Nginx в качестве прокси над Apache. Во-первых, Nginx имеет более высокую производительность при отдачи статики (включая видео). Во-вторых, для псевдо-стриминга видео необходим Nginx. В-третьих, KVS позволяет защитить видео от хотлинка через интеграцию со встроенными средствами защиты Nginx.
Обратите внимание на демонстрационную конфигурацию Nginx!
Для загрузки файлов с локального диска вам потребуется установить модуль NginxHttpUploadProgressModule и настроить его в конфигурации Nginx. Должны быть указаны следующие директивы по аналогии с демонстрационным файлом конфигурации:
- upload_progress proxied 1m
- track_uploads proxied 30s
- report_uploads proxied (под таким же location как и в примере)
Для защиты видео от хотлинка в конфигурации Nginx папка хранения видео должна быть прописана как internal зона (см. location ^~ /contents/videos/ в примере).
Также для защиты исходников видео и фотоальбомов от несанкционированного доступа в конфигурации Nginx папки хранения исходников видео и фотоальбомов должны быть прописаны как internal зоны (см. location ^~ /contents/videos_sources/ и location ^~ /contents/albums/sources/ в примере).
Значение параметра client_max_body_size должно быть установлено с учетом максимальных размеров видеофайлов, которые вы будете загружать с локального диска.
Если вы хотите использовать embed код на свои видео, то в целях защиты вам необходимо убедиться, что Nginx не перехватывает swf файлы (должен работать апачевский .htaccess).
Стриминг MP4 файлов
По умолчанию Nginx не поддерживает стриминг (возможность перемотки) MP4 файлов. Для работы MP4 стриминга необходимо собрать nginx_mod_h264_streaming-2.3.2. После этого в конфигурации Nginx следует использовать директиву mp4 для папки хранения видео (см. location ^~ /contents/videos/ в примере, в дополнение к директиве flv нужно добавить директиву mp4).
Рекомендуемые опции PHP
PHP upload_max_filesize 1024M (максимальный размер загружаемых видео файлов)
PHP post_max_size 1024M (максимальный размер загружаемых видео файлов)
PHP memory_limit 512M
PHP session.gc_maxlifetime 21600
Требования при мультисерверности
Требования выше описаны для проектов, которые используют только 1 физический сервер. KVS позволяет подключать отдельные физические сервера для хранения контента либо для ресурсоемых операций конвертации. В этом случае разные сервера будут иметь разные требования:
| Требование | Главный сервер | Сервер хранения | Сервер конвертации |
|---|---|---|---|
| PHP | Обязательно | Обязательно | Обязательно |
| MySQL | Обязательно | Нет | Нет |
| Apache | Обязательно | Обязательно | Нет |
| FFmpeg | Обязательно | Нет | Обязательно |
| ImageMagick | Обязательно | Нет | Рекомендуется |
| Memcache | Рекомендуется | Нет | Нет |
| Nginx | Рекомендуется | Обязательно | Нет |
| Yamdi | Нет | Нет | Обязательно |
| Qt-faststart | Нет | Нет | Рекомендуется (для MP4 файлов) |