KVS Documentation

Проверка системы

Содержание

Основные типы проверок

Полная проверка системы осуществляется плагином аудита. Этот плагин позволяет диагностировать практически все проблемы, с которыми мы сталкивались ранее у наших клиентов. Большинство проверок являются относительно быстрыми, исключение составляют лишь проверки контента (видео и фото), которые могут занимать длительное время при большом массиве данных.

Всего плагин аудита выполняет более 50 различных проверок. Отсутствия ошибок и предупреждений не гарантирует отсутствие проблем на 100%, однако это показывает достаточно высокий уровень работоспособности вашего проекта в целом.

Рассмотрим основные типы проверок:

  • Проверка инсталляции (Check installation) - выполняет проверку системных аспектов работы KVS, таких как наличие нужных прав на системных директориях, cURL, FFmpeg, корректность опций всех форматов видео, скриншотов и фотоальбомов, наличие кастомных поправок в файлах KVS и некоторые другие.
  • Проверка целостности БД (Check database integrity) - проверяет целостность всех таблиц базы данных KVS, а также совпадение времени в PHP и базе данных.
  • Проверка серверов (Check servers) - проверяет корректность настройки и работоспособность всех серверов хранения и конвертации, тестирует отдачу контента.
  • Проверка блоков и шаблонов сайта (Check website blocks and templates) - проверяет работоспособность всех блоков сайта, а также проверяет все шаблоны на наличие известных потенциальных проблем.
  • Проверка видео контента (Check video content) - досконально проверяет наличие и корректность всех файлов по каждому видео на всех серверах хранения и на главном сервере. Эта проверка может занимать длительное время в зависимости от наполненности базы и производительности сервера.
  • Проверка контента альбомов (Check album content) - досконально проверяет наличие и корректность всех файлов по каждому альбому на главном сервере. Эта проверка может занимать длительное время в зависимости от наполненности базы и производительности сервера.
  • Проверка защиты контента (Check content protection) - проверяет возможность получить несанкционированный доступ к защищенному видео и фото контенту, а также возможность хотлинка.
  • Проверка критериев безопасности проекта (Check project security criteria) - проверяет невозможность изменения различных файлов и директорий KVS, ищет PHP файлы, которые не принадлежат KVS, также проверяет некоторые директории на возможность запуска PHP из них.

Сообщения

Описание ошибок

Ошибки означают неработоспособность какого-то компонента системы, либо системы в целом. Любая ошибка должна быть устранена, в противном случае "что-то где-то" не будет работать.

  • Версия базы данных не корректна (Database version mismatch detected) - эта ошибка может возникнуть после некорректного (неполного) обновления. Она означает, что версия файлов KVS расходится с версией базы данных. Чтобы решить ее, вам необходимо полностью повторить выполнение обновления, либо заказать установку обновления у службы поддержки.
  • Системный файл отсутствует (The system file is missing) - ошибка указывает на системный файл KVS, который вероятно был случайно удален. Необходимо восстановить файл по указанному пути.
  • Cron запускается из некорректной директории (Cron executed from invalid directory) - ошибка сигнализирует о том, что файл cron.php не содержит корректных данных о своей директории выполнения и вероятно запускается некорректной командой. Проверьте команду запуска задачи, она должна иметь похожий вид:
    cd /path/to/admin/include && /usr/local/bin/php cron.php
  • Последний запуск Cron-а был более 15 минут назад (Cron executed more than 15 minutes ago) - ошибка говорит о том, что скрипт cron.php не запускался в течение 15 минут. Проверьте наличие команды Cron, она должна иметь похожий вид:
    cd /path/to/admin/include && /usr/local/bin/php cron.php
  • IP клиентов определяется некорректно (The client IP is not being correctly detected) - ошибка с большой долей вероятности говорит о том, что Nginx не передает данные о IP адресе клиента на уровень Apache, в результате чего у всех посетителей определяется один и тот же IP адрес - внутренний. Сначала вам нужно проверить, так ли это. Для этого просто посмотрите логи Apache и если вы там увидите один и тот же IP адрес для всех запросов - проблема есть. Проблема является общей, ее решение можно найти в интернете.
  • Требуются привилегии на запись (Write permissions required) - при установке KVS не были установлены требуемые привилегии на файл (666) или директорию (777). Установите нужные привилегии.
  • Библиотека не работает корректно (Library is not working properly) - указанная в деталях ошибки библиотека не работает корректно. Это относится либо к библиотеке cURL, либо к библиотеке FFmpeg. Для решения проблемы необходимо проверить работоспособность указанной библиотеки вручную.
  • Не получилось создать файл формата видео (Video format failed to be converted) - возникла ошибка FFmpeg при попытке создания формата видео. В деталях ошибки вы сможете увидеть запускаемую команду и ответ FFmpeg на нее, который будет содержать информацию об ошибке. Как правило, проблема возникает из-за некорректной сборки FFmpeg или из-за ошибки в опциях FFmpeg указанного формата видео.
  • Не получилось создать файл формата скриншотов (Screenshot format failed to be created) - возникла ошибка ImageMagick при попытке создания формата скриншотов. В деталях ошибки вы сможете увидеть запускаемую команду и ответ ImageMagick на нее, который будет содержать информацию об ошибке. Как правило, проблема возникает из-за некорректной сборки ImageMagick или из-за ошибки в опциях ImageMagick указанного формата скриншотов.
  • Не получилось создать файл формата альбомов (Album format failed to be created) - возникла ошибка ImageMagick при попытке создания формата альбомов. В деталях ошибки вы сможете увидеть запускаемую команду и ответ ImageMagick на нее, который будет содержать информацию об ошибке. Как правило, проблема возникает из-за некорректной сборки ImageMagick или из-за ошибки в опциях ImageMagick указанного формата альбомов.
  • Нет поддержки шрифтов True Type (True Type fonts support is not enabled) - с большой долей вероятности ошибка говорит о том, что на вашем сервере нет поддержки шрифтов True Type. Для того, чтобы убедиться в этом, зайдите на любую страницу сайта, где отображается captcha (например, страница /invite_friend.php. Если вы не увидите там изображение с цифрами, значит, проблема действительно существует.
  • Модуль Nginx для отображения процесса загрузки файлов не настроен корректно (Nginx Upload Progress module is not configured correctly) - ошибка сигнализирует о том, что HttpUploadProgressModule не работает корректно. Вам необходимо проверить, выполнены ли требования KVS по корректной настройке этого модуля (стоят ли все 3 нужные директивы в нужных местах конфигурации).
  • Установленный путь содержит лишние слэш-символы (The configured path has redundant slash symbols) - это значит, что при выполнение инсталляции вы установили лишние слэш символы в конце заданного в setup.php серверного пути. Удалите их.
  • Невозможно установить права 777 на созданную директорию (Unable to set 777 permissions to the created folder) - ошибка говорит о том, что PHP не может установить права 777 на создаваемую им директорию (права, которые устанавливаются в действительности можно увидеть в деталях ошибки). Обратитесь к администраторам сервера для устранения этой проблемы.
  • PHP код блока содержит ошибки (The implementation of block is broken) - с большой долей вероятности ошибка говорит о том, что вы внесли изменения в файл блока, и он не может быть обработан корректно, либо в нем не хватает нужных функций. Если это так, проверьте свои изменения.
  • Страница не работает (Page is broken) - страница содержит критическую ошибку. Чтобы понять детали ошибки необходимо зайти на редактирование этой страницы в панели администрирования. Список всех ошибок будет отображаться в самом верху редактора страницы.
  • Компонент страницы не работает (Page component is broken) - компонент страницы содержит критическую ошибку. Чтобы понять детали ошибки необходимо зайти на редактирование этого компонента в панели администрирования. Список всех ошибок будет отображаться в самом верху редактора компонента.
  • MySQL вернул ошибку при проверке состояния таблицы (MySQL returned error for table status check) - возникла ошибка в таблице базы данных. Необходимо воспользоваться плагином исправления базы данных.
  • Время MySQL не синхронизировано с локальным временем (MySQL time is not synchronized with the main server time) - время MySQL сервера расходится со временем PHP. Такое может возникать из-за разных настроек временной зоны. Необходимо синхронизировать эти значения времени.
  • Различные ошибки об отсутствии файлов видео / альбомов или некорректных их размерах - эти ошибки генерируются полной проверкой контента. Если ошибки единичные, то наиболее правильным вариантом будет удаление этих видео / альбомов. Если ошибки массовые, то вам лучше обратиться в службу поддержки для установления причины.
  • Невозможно соединиться с указанным хостом по 21 порту (Failed to connect to the specified host and 21 port) - возникла проблема с подключением к хосту, указанному в данных FTP соединения для сервера хранения или конвертации. Проверьте правильность написания хоста. Если включена защита FTP по IP, проверьте, чтобы IP вашего главного сервера был добавлен в список допустимых.
  • Невозможно осуществить вход используя указанные данные (Failed to log in using the specified data) - возникла проблема с данными входа, указанными в данных FTP соединения для сервера хранения или конвертации. Проверьте правильность пользователя и пароля. Если включена защита FTP по IP, проверьте, чтобы IP вашего главного сервера был добавлен в список допустимых.
  • Невозможно выполнить операции put / get / delete (Failed to execute put / get / delete operation) - не хватает привилегий для записи файлов по FTP соединению, указанному для сервера хранения или конвертации. Попробуйте подключиться самостоятельно и проверьте возможность записи файлов в указанную директорию.
  • Расширение PHP для работы FTP не найдено (PHP extension for FTP is not available) - не установлено расширение PHP, которое требуется для работы с FTP соединениями. Установите требуемое расширение.
  • Управляющий скрипт не доступен (Control script is not accessible) - управляющий скрипт remote_control.php, который должен находиться в корневой директории HTTP сервера хранения не отвечает либо не работает корректно. Попробуйте вызвать этот скрипт вручную (его URL можно посмотреть в настройках указанного сервера хранения). При нормальной работе скрипт должен возвращать строку "connected".
  • Скрипт конвертации не работает (Conversion script is not working) - скрипт конвертации remote_cron.php, который должен находиться в директории сервера конвертации, не поставлен на Cron, либо при его запуске возникают ошибки. Проверьте команду запуска скрипта, она должна иметь похожий вид:
    cd /path/to/conversion/folder && /usr/local/bin/php remote_cron.php
  • Последний запуск скрипта конвертации был более 15 минут назад (Conversion script executed more than 15 minutes ago) - скрипт конвертации remote_cron.php не выполнялся в течение 15 минут. Проверьте команду запуска скрипта, она должна иметь похожий вид:
    cd /path/to/conversion/folder && /usr/local/bin/php remote_cron.php
  • Сервер хранения либо недоступен, либо некорректно настроен (Storage server is either unavailable, or not configured correctly) - эта ошибка возникает при попытке запроса видеофайла с сервера хранения. В деталях ошибки вы можете увидеть заголовки ответа от сервера хранения. Наиболее вероятная причина - некорректно настроен Nginx на сервере хранения. Если по заголовкам видно, что скрипт раздачи /get_file.php, который находится на главном сервере, возвращает 404 ошибку, то наиболее вероятно у вас некорректно работает mod_rewrite на главном сервере. Если скрипт раздачи видео с удаленного сервера /remote_control.php возвращает 403 ошибку, то проверьте чтобы значение $config['cv'] в скрипте /remote_control.php на сервере хранения совпадало с аналогичным значением в скрипте /admin/include/setup.php на главном сервере - если эти значения не совпадают, исправьте $config['cv'] в скрипте /remote_control.php.
  • Время сервера хранения не синхронизировано с временем основного сервера (Storage server time is not synchronized with main server time) - эта ошибка возникает в случае несинхронного времени между основным сервером и удаленным сервером хранения. Вам необходимо синхронизировать время между серверами.
  • Запросы SELECT INTO OUTFILE не должны быть разрешены (SELECT INTO OUTFILE queries should not be allowed) - ошибка говорит о том, что MySQL имеет привилегии на запись в файлы, что является нарушением политики безопасности. Необходимо запретить MySQL делать выборки в файлы.
  • Apache / PHP не должен иметь прав записи на файл / директорию (File or folder should not be writable by Apache / PHP) - эта ошибка говорит о том, что указанная директория или файл является доступной для записи через Apache / PHP, что является нарушением политики безопасности. Необходимо проверить права и владельца файла (директории) и убрать часть прав, либо сменить владельца.

Описание предупреждений

Предупреждения не являются критическими с точки зрения их устранения, но они могут сигнализировать о потенциальных проблемах в работе проекта.

  • Допустимый лимит памяти PHP меньше чем 128mb (PHP memory limit is less than 128mb) - предупреждение говорит о том, что максимальный объем оперативной памяти, доступной PHP меньше 128mb. Это в определенных случаях может приводить к вылетанию некоторых фоновых процессов.
  • Используются конструкции, которые вероятно не будут работать при кэшировании (Potential cache-unsafe constructs are used) - предупреждение выдается по страницам сайта и говорит о том, что в шаблоне этих страниц используются обращения к данным $smarty.request, $smarty.get или $smarty.post, которые могут не работать корректно при использовании кэширования. В большинстве случаев следует избегать использования этих конструкций в шаблонах страниц. Они будут работать только в тех случаях, когда ссылаются на параметры запроса, заданные в var-параметрах какого-либо блока на странице.
  • Для некоторых блоков на странице не включено кэширование (Some of page blocks are not cached) - это предупреждение говорит о том, что не включено кэширование для некоторых блоков на странице. В большинстве случаев вам следует включить кэширование для всех возможных блоков страницы (задать ненулевое время кэширования).
  • Требуются привилегии для редактирования страницы (There are not enough permissions for editing this page) - не хватает привилегий на уровне файловой системы, чтобы иметь возможность редактировать страницу через панель администрирования. Вам нужно зайти в редактор указанной страницы, чтобы получить список всех файлов, на которые не установлены нужные привилегии.
  • Требуются привилегии для редактирования страницы (There are not enough permissions for editing this page) - не хватает привилегий на уровне файловой системы, чтобы иметь возможность редактировать страницу через панель администрирования. Вам нужно зайти в редактор указанной страницы, чтобы получить список всех файлов, на которые не установлены нужные привилегии.
  • Требуются привилегии для редактирования компонента страницы (There are not enough permissions for editing this page component) - не хватает привилегий на уровне файловой системы, чтобы иметь возможность редактировать компонент страниц через панель администрирования. Вам нужно зайти в редактор указанного компонента, чтобы получить список всех файлов, на которые не установлены нужные привилегии.
  • Используются конструкции PHP, из-за которых сайт может работать нестабильно (Potential unsafe PHP constructs are used) - ошибка выдается по шаблону страницы, ее блока или компонента, в котором используется директива {{php}}. Использование этой директивы не рекомендуется и может приводить к различным ошибкам в работе сайта.
  • MySQL вернул предупреждение при проверке состояния таблицы (MySQL returned warning for table status check) - возникло предупреждение в таблице базы данных. Необходимо воспользоваться плагином исправления базы данных.
  • Первый уровень защиты от хотлинка не включен для данного сервера (The first level of antihotlink protection is not enabled for this server) - предупреждение означает, что на указанном сервере хранения видео отдается через Apache, а не через Nginx, таким образом, оно может быть захотлинковано по прямым ссылкам.
  • Второй уровень защиты от хотлинка не включен (The second level of antihotlink protection is not enabled) - предупреждение означает, что в системных настройках панели администрирования KVS у вас не включена защита скрипта раздачи видео. Необходимо включить эту защиту.
  • Директория исходников видео открыта для публичного доступа (Video source folder is publicly accessible) - говорит о том, что существует возможность скачивать исходники видео, которые находятся на главном сервере в директории /contents/videos_sources (по умолчанию). Для того, чтобы закрыть прямой доступ к этой директории ее необходимо объявить внутренней зоной в конфиге Nginx. Это делается таким образом:
    location ^~ /contents/videos_sources/ {
        root /usr/home/ftp0/domains/kernel-tube.com/html; # указание полного пути к корневой директории для /contents/videos_sources/
        internal; # запрет доступа к директории по прямым ссылкам
    }
  • Директория хранения видео на сервере открыта для публичного доступа (Server video folder is publicly accessible) - говорит о том, что для указанного сервера существует возможность скачивать видеофайлы напрямую, минуя скрипт раздачи. Для того, чтобы закрыть прямой доступ к этой директории ее необходимо объявить внутренней зоной в конфиге Nginx. Это делается таким образом (на примере директории /contents/videos):
    location ^~ /contents/videos/ {
        flv; # включение FLV стриминга
        root /usr/home/ftp0/domains/kernel-tube.com/html; # указание полного пути к корневой директории для /contents/videos/
        internal; # запрет доступа к директории по прямым ссылкам
    }
  • Директория исходников фотоальбомов открыта для публичного доступа (Album source folder is publicly accessible) - говорит о том, что существует возможность скачивать исходники фотоальбомов, которые находятся на главном сервере в директории /contents/albums/sources (по умолчанию). Для того, чтобы закрыть прямой доступ к этой директории ее необходимо объявить внутренней зоной в конфиге Nginx. Это делается таким образом:
    location ^~ /contents/albums/sources/ {
        root /usr/home/ftp0/domains/kernel-tube.com/html; # указание полного пути к корневой директории для /contents/albums/sources/
        internal; # запрет доступа к директории по прямым ссылкам
    }
  • Директория изображений для закрытого формата фотоальбомов открыта для публичного доступа (Album images folder for non-public album format is publicly accessible) - говорит о том, что для закрытого формата фотоальбомов существует возможность скачивать фотографии напрямую, минуя скрипт раздачи. Для того, чтобы закрыть прямой доступ к этой директории ее необходимо объявить внутренней зоной в конфиге Nginx. Это делается таким образом (на примере директории /contents/albums/main/700x525):
    location ^~ /contents/albums/main/700x525/ {
        root /usr/home/ftp0/domains/kernel-tube.com/html; # указание полного пути к корневой директории для /contents/albums/main/700x525/
        internal; # запрет доступа к директории по прямым ссылкам
    }
  • Обнаружен подозрительный файл (Suspicious file found) - предупреждает о найденном PHP файле, который не являются частью инсталляции KVS.
  • Обнаружены подозрительные изменения в файле страницы (Suspicious changes found in page file) - предупреждает о найденных изменениях в главном PHP файле страницы.
  • Директория разрешает выполнение PHP (Folder allows PHP execution) - указанная директория позволяет выполнять через веб PHP файлы в ней. В директорию необходимо положить .htaccess файл, который либо полностью запретит доступ к ней через веб, либо запретит выполнение PHP кода. Для получения дополнительной информации свяжитесь со службой поддержки.
  • Директория разрешает публичный доступ (Folder allows public access) - указанная директория позволяет запрашивать файлы через web, хотя ее содержимое не предназначено для доступа извне. В директорию необходимо положить .htaccess файл, который полностью запретит доступ к ней через веб: Deny from all

Описание информационных сообщений

  • Системный файл имеет поправки (The system file has custom changes) - сообщение говорит о том, что в указанный системный файл KVS были внесены поправки, которые стоит учитывать при обновлении.
  • Формат видео может хотлинковаться исходя из его настроек (Video format can be hotlinked as per its settings) - сигнализирует о том, что в настройках формата видео выключена защита от хотлинка для данного формата.