Bitrix Framework и хостинг
1 / 253

Обладая большим арсеналом возможностей и наличием готовых компонентов почти под любую задачу, продукты на основе Bitrix Framework занимают на диске от 100 Мб и больше. Сложная структура страницы требует для ее обработки определенного объема памяти.

Однако, благодаря своей архитектуре платформа Bitrix Framework позволяет легче переносить большие нагрузки, а для малых нагрузок достаточно самого обычного хостинга (в варианте «виртуальный сервер»), не загруженного другими клиентами «под завязку».

Производительность сайта - комплексное явление. Для приемлемых результатов должно быть состыкованы:

  1. ресурсы сервера;
  2. настройка серверного ПО;
  3. программная платформа (БУС);
  4. прикладная разработка на платформе.

Без понимания каждой составляющей из этого списка невозможно настроить производительность. Сложность работы хостинга как услуги заключается в том, что конечные пользователи предъявляют претензии, как правило, к ТП хостинга, хотя проблемы могут быть на любом из названных выше этапов.

Типовая реакция неквалифицированного сотрудника ТП хостинга: проверка настроек сервера с проблемным сайтом и, в случае их соответствия локальным стандартам, "перевод стрелок" на программную платформу. Однако Bitrix Framework имеет свои особенности в настройке серверного ПО, что и нужно учитывать.

Bitrix Framework имеет свои особенности в плане хостинга:

  • Наличие достаточного места на диске для создания большого количества файлов. Сегодня минимальное требование для проекта с большим числом картинок — от 300 Mбайт. (Важно помнить, что каждая картинка также занимает место на диске, а в большом проекте таких картинок может быть очень много.)

    Bitrix Framework содержит очень большое число файлов, распределенных в основном по модулям, компонентам и шаблонам. Кроме того, встроенный механизм кэширования создает на диске сервера как минимум один файл на каждую страницу или виртуальную страницу - например, на новость или элемент каталога. Естественно, что это требует ресурсов.

  • Наличие необходимых ресурсов на сервере - памяти, выделяемой скриптом, наличие акселератора PHP и некоторых других настроек. Необходимо как минимум 128 Мбайт памяти, выделяемой для PHP, чтобы могли работать серьезные проекты (например, интернет-магазины). Она расходуется на построение структуры данных и выполнение кода при вызове каждой страницы сайта.
  • Желательность двухуровневой архитектуры для работы сайтов с высокой посещаемостью или серверов с высокой загрузкой. Для этого устанавливается дополнительный веб-сервер (обычно NGINX), который принимает все запросы. Это позволяет стабилизировать использование памяти за счет ограничения числа процессов Apache и получить отказоустойчивую систему.
  • Достаточно быстрый сервер баз данных. Для работы сайтов необходимо, чтобы сервер баз данных успевал обрабатывать запросы за короткое время.
  • Желательность работы PHP и FTP/SSH от одного и того же пользователя. При разработке сайта обычно работают с файлами по FTP/SFTP-протоколу. Вместе с тем при работе в самой системе она создает файлы от имени того пользователя, под которым работает PHP. При несовпадении этих пользователей могут возникнуть серьезные проблемы в работе сайта или в возможностях его модификации.

Во многом соответствие сервера требованиям системы можно протестировать модулем Монитор производительности.

Для успешной установки и полноценной работы продукта необходимы следующее:

  • Установка может быть сделана только в корневую папку веб сервера.
  • Необходимо использовать веб сервер Apache 1.3.0 и выше.
  • Хостер должен разрешать использование .htaccess.
  • Необходимо использовать PHP 5.3+.
  • safe_mode должен быть отключен (инсталлятор блокирует установку продукта в этом режиме).
  • short_open_tag включён.
  • memory_limit не ниже 32 Мб для редакции "Старт", не менее 64 Мб для редакции "Бизнес".
  • Наличие функций работы с сокетами для обновления продукта.
  • Наличие библиотек: Zlib (компрессия - для модуля компрессии и ускорения загрузки обновлений), GD lib (отображение графиков), Free Type (работа CAPTCHA).
  • Версия MySQL 5.0 и выше, Oracle 10g и выше или MSSQL 10.0 (2008) и выше.
  • Для установки Oracle-версии продукта удостоверьтесь в наличии клиентской части Oracle 10g (или выше) и создайте нового пользователя.
  • Крайне рекомендуется наличие акселератора PHP (OPcache, XCache, APC и другого). Рекомендуется OPcache, входит в состав PHP v5.5+.

    Внимание:
    1. Есть особенность использования прекомпилятора XCache, для корректной работы продукта его параметры должны быть: xcache.cacher=Off, xcache.stat=On.
    2. eAccelerator не совместим с PHP v5.3+ и больше не поддерживается в продуктах «1C-Битрикс» с версии ядра 15.0.13. Подробнее см. в блоге разработчиков.

  • режим работы PHP как модуля Apache предпочтительнее (CGI настоятельно не рекомендуется, так как он не поддерживает работу акселератора. Лучше использовать FastCGI)
Примечание: не рекомендуется использовать модуль suhosin или mod_security т.к. в ряде случаев эти модули препятствуют нормальной работе продуктов.

Продукты Bitrix Framework поставляются в исходных кодах. Поэтому нет необходимости в модулях zend optimizer или zend guard loader.

© «Битрикс», 2001-2008, «1C-Битрикс», 2008-2017 1С-Битрикс


Скрипт bitrix_server_test
2 / 253

Компания "1С-Битрикс" рекомендует клиентам и разработчикам проверять потенциальный хостинг специальным скриптом bitrix_server_test. Скрипт постоянно обновляется под выявляемые проблемы и обновления системы:

Нажмите на рисунок, чтобы увеличить

Хостерам рекомендуется периодически скачивать обновленную версию теста и проверять свои сервера по тестируемым параметрам.


Основные сведения
3 / 253

Продукты компании «1С-Битрикс» представляют собой программное ядро для всестороннего управления веб-проектами любой сложности.

Система Bitrix Framework устанавливается в корневой каталог сайта (портала) на удаленном сервере. Доступ к управлению сайтами осуществляется посредством веб-браузера. Возможна установка и на локальный компьютер для ознакомления с системой.

Программные продукты компании «1С-Битрикс» имеют модульную структуру. Каждый модуль отвечает за управление определенными элементами и параметрами портала: информационным наполнением и структурой, форумами, рекламой, рассылкой, распределением прав между группами пользователей, сбором статистики посещений, оценкой эффективности рекламных кампаний и т.д.

Примечание: Общие возможности модулей описаны на сайте компании «1C-Битрикс» в разделе Возможности: «1C-Битрикс: Управление сайтом» и «Битрикс24 в коробке». Подробная информация и работа с ними представлена в учебных курсах.

Количество модулей в устанавливаемой системе зависит от редакции продукта. Перечень редакций и их описание доступны на сайте компании «1C-Битрикс» в разделе Редакции: «1C-Битрикс: Управление сайтом» и «Битрикс24 в коробке».

Примечание: Наглядно сравнить состав каждой редакции вы можете с помощью таблиц сравнения редакций: «1C-Битрикс: Управление сайтом» и «Битрикс 24 в коробке», представленной также на сайте компании «1C-Битрикс».

Модули системы, главным образом, работают независимо друг от друга. Однако в целом ряде случаев функционал одних модулей основан на возможностях других. Например:

  • Модуль Торговый каталог расширяет возможности модуля Информационные блоки и позволяет выполнять настройку цен товара в зависимости от различных условий, применять к товарам наценку и скидки и т.п.
  • Модуль Документооборот позволяет организовать последовательную коллективную работу с содержимым модулей Информационные блоки и Управление структурой.

После установки системы список используемых модулей можно просмотреть на странице Управление модулями (Настройки > Настройки продукта > Модули) в административном разделе системы:

Данная таблица содержит название и описание модулей, информацию о версии и дате последнего обновления, а также текущий статус в системе:

  • Установлен – модуль и его элементы доступны для использования в системе;
  • Не установлен – модуль не доступен для использования в системе.

Для экономии дискового пространства неиспользуемые модули рекомендуется удалить, при этом дистрибутив модуля остается в системе, и он в любое время может быть снова установлен. Для установки и удаления модуля служат кнопки Установить и Удалить соответственно.

Обратите внимание, что при деинсталляции некоторых модулей система предлагает сохранить накопленные модулем данные (таблицы модуля). Если вы в дальнейшем планируете использовать эти данные, то при удалении модуля необходимо отметить соответствующую опцию.

Ссылки на функционал установленных модулей добавляются в соответствующие секции административного меню системы.

Для некоторых модулей данные в меню загружаются динамически. Например:

  • для модуля Информационные блоки выполняется динамическая загрузка списка типов инфоблоков;
  • для модуля Веб-формы выполняется динамическая загрузка списка веб-форм;
  • для модуля Управления структурой выполняется динамическая загрузка файловой структуры.

В зависимости от прав пользователя на доступ к модулям системы ему может быть доступен либо недоступен тот или иной функционал.

Управление уровнем прав пользователей на доступ к модулям системы осуществляется отдельно для каждого модуля на странице его настроек.

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

Страница настроек модуля может иметь различное число вкладок и полей, в зависимости от функционала модуля. Перейти к ней можно следующими способами:

  • с помощью административного меню: Настройки > Настройки продукта > Настройки модулей > имя_модуля;
  • с помощью кнопки Настройки Кнопка, расположенной на административной панели. Данная кнопка позволяет перейти к настройкам модуля, страницы (формы) которого открыты в текущий момент в основной рабочей области.

На странице настроек также выполняется управление общими параметрами работы модулей.

Дополнительная информация

  • Документация по продукту


Справочная информация
4 / 253

Где получать информацию о функционале и способах работы

Научиться работать с продуктами компании «1С-Битрикс» не сложно, но потребуется внимание и определённая мера усидчивости. А поможет в этом различного вида справочная информация, ссылки на которую расположены на сайте компании в разделе Документация.

Справочная иформация включает в себя:
  • Разные виды документации
  • Учебные курсы
  • Контекстная справка
  • Мастер магазина
  • Частые вопросы
  • Документация в файлах формата .chm
    •

    Документация

    Нажмите на рисунок, чтобы увеличить

    • Онлайн документация для пользователей - описание интерфейса системы управления сайтом, ее основных модулей и наиболее типичных операций. Также в ней содержится полное описание прикладного программного интерфейса.
    • Онлайн документация для разработчиков по старому ядру, по ядру D7 и по Rest_API. Предназначена для технических специалистов со знанием PHP и HTML. В ней содержатся сведения о технологиях и основных принципах, заложенных в систему, описание классов и функций по всем продуктам.

      •

      Учебные курсы

      Нажмите на рисунок, чтобы увеличить

      Онлайн Курсы - это методические пособия по работе с продуктом, которые включают в себя описание и примеры работы с системой.

      Контекстная справка

      Контекстная справка выводит в Административной части системы информацию относящуюся к открытому в данный момент разделу или странице. Доступна как в 1С-Битрикс: Управление сайтом, так и в Битрикс24.

      Мастер магазина

      Мастер магазина - встроенная в административную часть система помощи с краткой информацией по конкретной задаче в рамках настройки и эксплуатации интернет-магазина с ссылками на более детальную информацию в конкретных учебных курсах.

      FAQ

      Частые вопросы - подборка решений наиболее часто встречающихся проблем при работе с продуктом в удобном представлении.

      Документация в файлах формата .chm

      Для изучения документации в оффлан (при отсутствии интернета) созданы файлы в формате справки Windows. Они содержит копию онлайн документации, эти файлы обновляется реже, чем источник на сайте. По возможности рекомендуем использовать онлайн документацию.

      Если не видно содержание файла CHM
      Внимание! Если вы не видите содержимое файла формата .chm, то причина - настройки безопасности операционной системы: скачанные из интернета файлы находятся под наблюдением системы, которая ограничивает доступ к ним.

      Чтобы отключить подобное отношение к файлу необходимо:

      • перейти в свойства файла на вкладку Общие. Внизу у Вас отобразится сообщение о том, что этот файл был заблокирован системой с целью защиты компьютера.

      • нажать кнопку Разблокировать.

      Отсутствие кнопки Разблокировать возможно в двух случаях:

      1. Файл лежит не локально, а на сетевом ресурсе.
      2. Если файл лежит на локальном диске, но путь к нему содержит спецсимволы (# и прочие).

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

      Примечание: В дополнение к документации, информацию, касающуюся продуктов компании «1С-Битрикс», можно получить на сайте в разделе форум.

      Для администраторов и разработчиков так же рекомендуется познакомиться с опытом разработок сайтов на Bitrix Framework, который описывается в блогах разработчиков и в группах Социальной сети сайта компании 1С-Битрикс.


Как отформатирован текст в курсе
5 / 253

Форматирование текста облегчает восприятие информации

Читать монотонный текст сложно. Форматирование - один из способов облегчить понимание смысла. Опишем правила форматирования, чтобы вам было легче ориентироваться.

Форматирование текста

Жирный шрифт используется для выделения важных в смысловом значении слов, терминов, фраз и предложений. То есть то, что особенно важно в контексте описываемого функционала:

  • Ключевое смысловое слово, фраза.
  • Термины, названия элементов интерфейса: кнопки, вкладки, поля, горячие клавиши, формат или название файла.
  • Название курса, глав курса, разделов и страниц сайтов. (Как правило название глав или курсов даются ссылкой, но иногда это бывает излишним.)
Примеры использования жирного шрифта
Пример названия курса или главы | Изучение курса позволяет освоить основные методы администрирования системы, а так же пополнить знания по темам, изученным в курсе Контент-менеджер.
Пример названий элементов интерфейса: | При этом у компонента Список новостей нужно настроить входные параметры так, чтобы он мог формировать ссылки на страницу детальной новости (с кодом новости). Для этого нужно в группе параметров Шаблоны ссылок в поле URL страницы детального просмотра задать путь к этой странице, а также название параметра, в котором будет передаваться код новости для показа.
Пример ключевой фразы, слова | При регистрации сервера обязательно укажите Домен для NTLM авторизации. Он должен полностью (включая регистр) совпадать с названием домена.

Курсив и подчёркивание используются для выделения:

  • Названия продуктов компании 1С-Битрикс, других программ и технологических платформ.
  • Названия методов, классов, функций и событий, если нет их описания в API доке. (Если описание есть, то название метода или класса оформляется ссылкой на страницу документации.)
  • Пространство имён в новом ядре D7.
  • Ключевое слово, фраза, термин, если использование жирного шрифта не желательно по каким-то причинам.
Примеры использования курсива
Пример названия метода: | Усовершенствованные методы буферизации в шаблоне позволяют более не использовать CBitrixComponentTemplate::EndViewTarget() ввиду того, что конец шаблона вызывает завершение буферизации автоматически. (Если страница метода в документации есть, то будет так: Перед подключением компонента ко всем значениям параметров применяется функция htmlspecialcharsEx.)
Пример названий продуктов и платформ: | Чтобы научиться эффективно работать в Bitrix Framework, нужно не сравнивать то, что вы знаете по другим системам, а стараться понять как то или иное реализуется в этой системе. В плане обучения «сравнительный» подход не работает. Просто отвлекитесь от старых знаний и изучите новую систему используя только знания PHP и сайтостроения, а не сравнивая идеологии и технологии.
Пример пространства имён в D7: | При необходимости модуль может организовывать подпространства внутри своего пространства имен. Например, Bitrix\Main\IO, Bitrix\Forum\SomeName\SomeNameTwo.

Серый фон текста используется для выделения:

  • путей в рамках файловой системы.
  • атрибутов, тегов html, параметров функций, переменных, значения полей и настроек и листинга кода, который нет смысла помещать в стиль для листинга.
Примеры использования серого фона
Пример выделения путей в рамках файловой системы: | Результаты кеширования сохраняются в виде файлов в каталоге /bitrix/cache/.
Пример выделения атрибутов, тегов и так далее: | Если в компоненте написать код: $arParams = & $arSomeArray; то переменная $arParams будет отвязана от члена класса компонента и привязана к массиву $arSomeArray.

Синий курсив с > используется для подсветки путей в продукте. То есть пути выглядят так же как они оформлены в административном отделе системы.

Примеры использования синего курсива
Пример оформления путей в административном отделе системы: Файлы кеша можно удалить в административной части на закладке Очистка файлов кеша страницы Настройки > Настройки продукта > Автокеширование.

Синий шрифт используется для подсветки УРЛ без создания собственно ссылки - псевдо УРЛ.

Примеры использования синего шрифта
Пример псевдо УРЛ: При помощи access_token приложение совершает запросы к REST-сервису до его истечения.
https://имя_портала.bitrix24.ru/rest/user.current?auth=код_авторизации

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

Примеры использования цветного шрифта
Цветной шрифт:
  • Настроить инфоблок на контроллере:

    ........

  • На подключенном сайте надо создать инфоблок с таким же значением внешнего кода, как и на контроллере. Кроме привязки к сайту, названия и внешнего кода необходимо настроить и права доступа к инфоблоку.

    ......

Форматирование абзацев текста

Форматирование целых абзацев текста используется для выделения какой-либо информации с целью указать направленность этой информации.

Определения каких либо сущностей, явлений, терминов и так далее выводится в абзацах такого вида:

Статическая информация – это информация, которая редко изменяется с течением времени. Например, рекламные тексты, история компании, контактная информация и т.п. Статическая информация создается, редактируется, дополняется и удаляется пользователями, обладающими правом на редактирование страниц сайта. Такое редактирование производится, как правило, в визуальном редакторе непосредственно в тексте самой страницы.

В Примечании размещается информация, поясняющая текст на странице, на которую стоит обратить внимание. Это могут быть примеры, расширенное объяснение, уточнение, ссылка на дополнительную информацию. Например:

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

Предупреждения - это информация, имеющая критическое значение для работы того или иного функционала продукта. Например:

Важно! Если курс был деактивирован, то результаты тестов и сертификаты по этому курсу будут недоступны пользователям. Если курс был удален, то результаты тестов и сертификаты этого курса будут также удалены.

В особо важных случаях в этом виде форматирования может использоваться красный шрифт.

В спойлерах размещается информация, которая имеет вторичное значение, но может быть полезна "для общего развития". Для открытия спойлера надо просто кликнуть на "+" в спойлере:

Задание окна для открытия ссылки при редактировании в режиме кода (для ознакомления)

В коде каждый из пунктов этого списка задается с помощью атрибута target тега <a>. Атрибут target может принимать соответственно следующие значения:

  • _blank;
  • _parent;
  • _self;
  • _top.

Чтобы избежать лишней прокрутки экрана, в спойлерах может быть размещена большая по объёму информация.

Видеоролики могут располагаться как в спойлерах, так и в отдельных абзацах. Если видео размещено в отдельных абзацах, то оно открывается во всплывающем окне:

Просмотр видео в наших курсах в формате CHM невозможен. Ролик можно просмотреть на сайте компании «1С-Битрикс».

Учебное видео
Управление валютами

Содержание видеоролика может отличаться от текущей версии продукта. Более актуальная информация содержится в тексте урока.


Глоссарий
6 / 253

Каждая платформа имеет свои термины, используемые в работе. Чтобы без проблем ориентироваться в документации, учебных курсах, при общении с разработчиками желательно объяснять ваши трудности не «на пальцах», а на языке понятном специалистам. Ниже в помощь вам приведен глоссарий терминов системы и несколько общих терминов, активно используемых в системе.

  • Экземпляр программы
  • Портал
  • Сайт
  • Шаблон сайта
  • Раздел сайта
  • Компоненты
  • Система обновлений
  • Путь к компоненту
  • Включаемые области
  • Язык
  • Языковой файл
  • Шаблон страницы
  • Пролог
  • Эпилог
  • Тело страницы
  • Навигационная цепочка
  • Административная часть
  • Публичная часть
  • Режим Правка
  • Индексная страница (файл)
  • Пользователь
  • Группа пользователей
  • Многоязычный интерфейс
  • Мета-тэг
  • Локализация
  • Хост
  • Доменное имя (домен)
  • IP адрес
  • Accept-Language
  • Время в Unix-формате
  • Права в Unix системах
  • Путь относительно корня
  • Полный путь
  • Абсолютный путь
  • DocumentRoot
  • Сабмит
  • Сессия
  • HTML-безопасный вид
  • Связывание переменных
  • Дамп
  • cron (крон)
  • Буферизация
  • Постоянное соединение (persistent)
  • Почтовое событие
  • Тип почтового события
  • Почтовый шаблон
  • Кастомизация
  • API

Термин | Описание
Экземпляр программы | Копия какого-либо продукта «1C-Битрикс», включающая в себя исходный текст продукта и только одну копию структуры и таблиц базы данных, входящих в состав продукта, а также любую документацию по использованию продукта.
Портал | Один набор файлов, хранящихся в каталоге /bitrix/modules/, и одна копия базы. Портал включает в себя один или более сайтов. Синонимом данного термина может служить: «экземпляр продукта», «одна инсталляция системы», «одна копия системы».
Сайт Совокупность таких понятий как:
  • учетная запись в базе данных - создаётся в административном меню Сайты, включает в себя следующие основные параметры:
    • идентификатор - набор символов, идентифицирующий сайт;
    • доменное имя - одно или более доменное имя сайта;
    • папка сайта - путь к каталогу в котором будет храниться публичная часть сайта;
    • язык сайта;
    • формат даты и времени;
    • URL - протокол и доменное имя по умолчанию (например, http://www.site.ru);
    • DocumentRoot - если многосайтовость организована на разных доменах, то в данном параметре должен храниться путь в файловой системе сервера к корню сайта;
    • условия подключения шаблонов - каждый сайт может иметь один или более шаблонов для отображения скриптов своей публичной части, каждый такой шаблон может быть подключен по тому или иному условию;
  • публичная часть - совокупность скриптов (страниц), лежащих в «папке сайта» и принадлежащих этому сайту;
  • настройки - каждый модуль может иметь ряд настроек, связанных с сайтом, например у модуля Информационные блоки эти настройки представляют из себя привязку информационного блока к тому или иному сайту, у модуля Техподдержка - привязку статуса, категории и т.п. к сайту.
Шаблон сайта Синонимом можно считать - дизайн сайта, скин сайта. Для показа одного сайта можно использовать несколько различных шаблонов. В шаблон сайта входят:
  • набор файлов в каталоге /bitrix/templates/ID_шаблона/, где ID_шаблона - поле ID в форме редактирования шаблона сайта. Структура данного каталога:
    • /components/ - каталог с компонентами, принадлежащими тому или иному модулю;
    • /lang/ - языковые файлы, принадлежащие как данному шаблону в целом, так и отдельным компонентам;
    • /images/ - каталог с изображениями данного шаблона;
    • /page_templates/ - каталог с шаблонами страниц и их описанием, хранящимся в файле .content.php;
    • /include_areas/ - каталог с файлами - содержимым включаемых областей;
    • header.php - пролог данного шаблона;
    • footer.php - эпилог данного шаблона;
    • styles.css - CSS стили, используемые на страницах сайта, когда используется данный шаблон;
    • template_styles.css - CSS стили, используемые в самом шаблоне;
    • .тип меню.menu_template.php - шаблон вывода меню соответствующего типа;
    • chain_template.php - шаблон по умолчанию для вывода навигационной цепочки;
    • а также ряд других вспомогательных произвольных файлов и папок, входящих в данный шаблон.
Раздел сайта | Каталог в файловой системе сервера. В Bitrix Framework структура сайта - это файловая структура сервера, поэтому страницы сайта - это файлы, а разделы сайта - соответственно каталоги.
Компонент Является частью того или иного модуля, представляет из себя логически завершенный код, хранящийся в одном файле, принимающий ряд параметров, выполняющий ряд действий и выводящий какой-либо результат (например, в виде HTML кода). Использование компонента является наиболее предпочтительным способом организации вывода информации как в публичной, так и в административной частях. В понятие компонент входят следующие элементы:
  • основной файл - подключается с помощью функции CMain::IncludeFile, представляет из себя скрипт на языке PHP, реализующий логику компонента;
  • языковые файлы - используются в компоненте для представления его результата на различных языках;
  • описание - это PHP код, используемый визуальным редактором для управления компонентом и его параметрами;
В данный момент используются компоненты версии 2.0. Использование компонентов 1.0 не рекомендуется, но их ещё можно встретить на сайтах, построенных на ранних версиях системы.
Система обновлений Технология SiteUpdate позволяет:
  • скачивать обновления продукта;
  • загружать новые модули и обновления для имеющихся модулей, расширяющие их функциональные возможности;
  • загружать языковые файлы и устанавливать новые языки;
  • выполнять регистрацию лицензий на дополнительные сайты.
Данные загружаются с сайта компании «1С-Битрикс» через веб-интерфейс административного раздела продукта. В процессе обновления выполняется модификация только ядра продукта (файлы папок /bitrix/modules/, /bitrix/tools/, /bitrix/admin/ и /bitrix/components/bitrix/). Обновление не затрагивает публичную часть портала, полностью исключая возможность потери данных.

Обновление системы осуществляется в несколько шагов:

  • система обновлений автоматически запрашивает лицензионный ключ продукта;
  • затем выполняется проверка наличия доступных обновлений;
  • далее пользователю предлагается выбрать обновления для загрузки;
  • после этого происходит загрузка выбранных обновлений.
Все обновления и новые модули сначала компрессируются, а затем загружаются на сайт владельца.
Путь к компоненту Используется в функции CMain::IncludeFile в качестве первого параметра и представляет из себя путь к основному файлу компонента относительно одного из следующих каталогов (в порядке убывания приоритета):
  • /bitrix/templates/ID шаблона сайта/;
  • /bitrix/templates/.default/;
  • /bitrix/modules/ID модуля/install/templates/
Где:
ID шаблона сайта - идентификатор текущего шаблона сайта,
ID модуля - идентификатор модуля, которому принадлежит компонент.
Включаемые области | Это специально выделенная область на странице сайта, которую можно редактировать отдельно от основного содержания страницы. Реализуется с помощью специального программного компонента.
Язык Это учетная запись в базе данных, доступная для редактирования в административном меню на странице Языки интерфейса, со следующими полями:
  • Идентификатор;
  • Название;
  • Формат даты;
  • Формат времени;
  • Кодировка;
  • и т. д..
Как в публичной, так и административной частях, язык в первую очередь используется в работе с языковыми файлами.
В административной части язык определяет формат времени, даты, кодировку страниц (в публичной - данные параметры определяются настройками сайта).
Языковой файл Представляет из себя PHP скрипт, хранящий переводы языковых фраз на тот или иной язык. Данный скрипт состоит из массива $MESS, ключи которого - идентификаторы языковых фраз, а значения - переводы на соответствующий язык. Для каждого языка существует свой набор языковых файлов, хранящихся как правило в каталогах /lang/.
Языковые файлы, как правило, используются в административных скриптах модулей и в компонентах.
Для работы с языковыми файлами предназначен модуль Перевод.
Шаблон страницы Это файл, хранящийся в одном из каталогов:
  • /bitrix/templates/ID шаблона сайта/page_templates/
  • /bitrix/templates/.default/page_templates/
Данный файл представляет из себя заготовку публичной страницы. Как правило, используется при создании новой страницы в модуле Управление структурой. Для задания порядка сортировки шаблонов страниц используется файл .content.php находящийся в одном из вышеуказанных каталогов.
Пролог

В общем случае, под данным термином понимается верхняя левая часть страницы.

Для публичной части, пролог соответствующего шаблона сайта хранится в файле /bitrix/templates/ID шаблона сайта/header.php.

Для административной части - пролог хранится в файле /bitrix/modules/main/interface/prolog_main_admin.php.

В свою очередь пролог может быть разделен на служебную и визуальную части. В служебной части подключаются все необходимые классы, создаётся соединения с базой, создаются ряд служебных экземпляров объектов, таких как $USER, $APPLICATION и т.д. В визуальной части выводится верхняя левая часть страницы.

Если в публичной части необходимо подключить неразделенный пролог, то используем следующий код:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

Если по тем или иным причинам необходимо разделить пролог на служебную (prolog_before.php) и визуальную (prolog_after.php) части, то используем следующий код:

require($_SERVER["DOCUMENT_ROOT"].
"/bitrix/modules/main/include/prolog_before.php");
...
require($_SERVER["DOCUMENT_ROOT"].
"/bitrix/modules/main/include/prolog_after.php");
Эпилог

В общем случае под данным термином понимается нижняя правая часть страницы.

Для публичной части, эпилог соответствующего шаблона сайта хранится в файле /bitrix/templates/ID шаблона сайта/footer.php.

Для административной части - эпилог хранится в файле /bitrix/modules/main/interface/epilog_main_admin.php.

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

Если в публичной части необходимо подключить неразделенный эпилог, то используем следующий код:

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");

Если по тем или иным причинам необходимо разделить эпилог на визуальную (epilog_before.php) и служебную (epilog_after.php) части, то используем следующие коды:

require($_SERVER["DOCUMENT_ROOT"].
"/bitrix/modules/main/include/epilog_before.php");
...
require($_SERVER["DOCUMENT_ROOT"].
"/bitrix/modules/main/include/epilog_after.php");

Примечание: Обратите внимание, что в случае пролога файл *_before.php это служебная часть, а в случае эпилога *_before.php это визуальная часть. Такое отличие возникает потому, что пролог перед телом страницы, а эпилог - после.

Тело страницы | Тело страницы это часть PHP/HTML кода, расположенного в скрипте между подключениями пролога и эпилога. Тело страницы не является частью шаблона сайта и представляет из себя индивидуальное содержимое публичной либо административной страницы.
Навигационная цепочка | Это элемент дизайна, предназначенный в первую очередь для улучшения навигации по сайту. Навигационная цепочка выводится в визуальной части пролога и состоит из заголовков разделов сайта с соответствующими ссылками на них. Помимо заголовков разделов, добавляемых автоматически, вы также можете добавлять произвольные пункты в навигационную цепочку.
Административная часть Раздел системы, содержащий интерфейс для управления модулями системы, структурой, содержанием, посетителями и другими составляющими сайта. Это множество скриптов, в которых подключен административный пролог и эпилог. Их подключение подразумевает:
  • данная страница не принадлежит ни одному сайту;
  • в то же время она принадлежит какому-либо модулю;
  • имеет строго определённый административный интерфейс;
  • все параметры локализации данной страницы зависят от выбранного текущего языка;
  • на этой странице используется дополнительная проверка прав, задаваемых в настройках соответствующего модуля.
Публичная часть Раздел системы, доступный для отображения посетителям сайта. В общем случае, под данным термином понимается множество скриптов, у которых подключен пролог и эпилог одного из шаблонов сайта. Их подключение подразумевает:
  • данная страница принадлежит какому либо сайту;
  • имеет интерфейс текущего шаблона сайта;
  • все параметры локализации данной страницы зависят от текущего сайта.
Режим Правка | Режим, при котором текущая страница публичного раздела отображается в особом виде: выделены используемые компоненты, включаемые области, редактируемые области и т.д. Каждая такая область имеет набор кнопок для быстрого перехода к редактированию данного элемента страницы.
Индексная страница (файл) Это имя файла, который будет использован веб-сервером в случае, если запрашиваемый URL заканчивается на слэш и не содержит в себе имени файла. Порядок, в котором будут искаться индексные страницы для различных веб-серверов, задается по разному, например:
  • Apache - в файле httpd.conf, параметр DirectoryIndex;
  • IIS - в свойствах сайта, закладка Documents > Enable default content page;
К сожалению, в PHP значение данного параметра недоступно, поэтому для определения индексной страницы в коде необходимо пользоваться функцией GetDirIndex.
Пользователь Запись в базе данных, содержащая параметры зарегистрированного пользователя с такими обязательными полями как:
  • логин;
  • пароль;
  • E-Mail.
А также ряд дополнительных полей, содержащих личную информацию о пользователе, информацию по его работе, административные заметки.

Регистрационные данные (логин и пароль), указанные пользователем при регистрации либо полученные им автоматически (например, при импорте), в дальнейшем используются для авторизации в системе. В результате регистрации пользователь привязывается к определенной группе и получает право на доступ к ресурсам портала в соответствии с правами данной группы.

Группа пользователей | Совокупность пользователей портала, обладающих определенными правами на доступ и управление ресурсами портала (например, пользователи группы Модераторы обладают правом на чтение и редактирование сообщений форума). Управление группами пользователей осуществляется на странице Группы пользователей в административном разделе (Настройки > Пользователи > Группы пользователей).
Многоязычный интерфейс Возможность реализуется за счет использования языковых файлов, хранящих перевод фраз на соответствующие языки для:
  • административного раздела;
  • сообщений об ошибках;
  • визуальных компонентов;
  • соответствующих областей в шаблоне портала;
  • и т.д.
В соответствии с текущим языком интерфейса выполняется подключение необходимых языковых файлов. В результате сообщения отображаются пользователю на выбранном им языке. Переключение между языками административного интерфейса осуществляется с помощью соответствующих кнопок на административной панели.
Мета-тэг | Мета-тэг это один из элементов HTML, позволяющий задать информацию о странице. Указать, например, кодировку страницы, ее ключевые слова, автора, задать краткое описание страницы. Как правило, содержимое мета-тэгов используется в служебных целях, например, роботами поисковых систем, индексирующих сайт. Мета-тэг задается внутри тэга <head>.
Локализация | Подразумевает представление информации в переводе на соответствующий язык, в соответствующей кодировке данного языка и с использованием соответствующих форматов представления данных, характерных для этого языка (например, дата, время, денежные единицы, числа и т.д.).
Хост | В применении к функциям главного модуля, под данным термином понимается доменное имя или IP адрес, посредством которого можно обратиться к тому или иному сайту.
Доменное имя (домен) | Строго говоря, это одно из полей DNS таблицы (domain name service), содержащее в себе строго структурированное имя интернет сайта, заданное по определённым правилам. Основная задача DNS таблицы - это ассоциация доменных имен с IP адресами сайтов. Пример доменного имени: 1c-bitrix.ru
IP адрес | Это "имя" компьютера в сети, заданное по правилам протоколов TCP/IP. IP адрес состоит из четырех октетов, часть из которых идентифицирует подсеть, в которой находится компьютер, а часть - непосредственно этот компьютер в рамках соответствующей подсети. Пример IP адреса: 198.63.210.79.
Accept-Language | Набор языков, установленных в браузере посетителя сайта. К примеру, для MS Internet Explorer их можно выставить в меню Сервис > Свойства обозревателя > Общие > Языки. Для Mozilla Firefox: Меню > Настройки > Содержимое > Языки.
Время в Unix-формате | Количество секунд, прошедшее с 1 января 1970 года, с точностью до микросекунды. На сегодняшний день, время в Unix-формате может фиксироваться только до 2038 года.
Права в Unix системах В Unix-подобных операционных системах (являющихся доминирующими на сегодняшний день для интернет серверов) поддерживаются три вида прав - чтение, запись и выполнение, которые присваиваются каждому файлу или директории. Права эти повторяются три раза: для владельца файла, для группы пользователей, к которой владелец принадлежит, и для всех остальных пользователей. Как правило, права указываются в числовом формате:
  • 4 - чтение;
  • 2 - запись;
  • 1 - выполнение.

Сумма этих чисел дает окончательный набор прав, например, 6 - это чтение и запись, но без выполнения, 7 - все права, 5 - чтение и выполнение.

Таким образом, например, право 764 будет означать: 7 - все права для владельца файла, 6 - чтение и запись для группы пользователей, к которой принадлежит владелец файла и 4 - чтение для всех остальных пользователей.

В PHP все права задаются в виде восьмеричных чисел, поэтому их надо задавать с обязательным указанием префикса - 0. Пример: 0755.

Путь относительно корня | Путь к файлу, начинающийся от каталога, указанного в параметре DocumentRoot в настройках веб-сервера, заданный по правилам формирования URL-адресов. Пример:/ru/about/index.php
Полный путь | Включает в себя протокол, домен, порт и путь относительно корня к странице (каталогу). Пример: http://www.bitrixsoft.ru/ru/about/index.php
Абсолютный путь | Абсолютный путь к файлу включает в себя DocumentRoot и путь относительно корня.
DocumentRoot Путь к корню сайта в файловой системе сервера. Задается в настройках веб-сервера, например:
  • для Apache - в файле httpd.conf, параметр DocumentRoot;
  • для IIS - в свойствах сайта, закладка Home Directory > Local Path.
Сабмит | Отправка данных HTML формы на сервер.
Сессия | Под термином понимается сессия PHP. Сессия может открываться в момент захода на сайт и закрывается при закрытии окна браузера. Также новая сессия открывается при авторизации пользователя, если закончить сеанс авторизации (разлогиниться) - сессия закрывается. Синонимом термина сессия можно считать один "заход на сайт".
HTML-безопасный вид Как правило данный термин применяют к тексту, в котором произведены следующие замены:
Исходное | Результат
< | &lt;
> | &gt;
" | &quot;
& | &amp;

Подобные замены позволяют выводить текст внутри HTML кода, не опасаясь, что он будет интерпретирован браузером как часть этого HTML кода.
Связывание переменных | В применении к SQL-запросам для Oracle версии, под данным термином подразумевается связывание имен переменных (либо полей таблицы) с их значениями. Как правило, подобная технология используется для полей типа BLOB, CLOB, LONG и т.п. предназначенных для хранения больших объемов данных.
Дамп В применении к базе данных, под термином подразумевается выгрузка содержимого и, возможно, структуры таблиц в файл в определённом формате, для их возможной дальнейшей загрузки обратно в данную, либо любую другую базу. Для каждой базы данных существуют свои утилиты, позволяющие сделать дамп, например для MySQL утилита mysqldump позволяет выгрузить в формате обычных SQL запросов, для Oracle утилита exp позволяет выгрузить в своем внутреннем формате.
В применении к переменным, дамп подразумевает отображение структуры и содержимого переменной в текстовом виде.
cron (крон) | В Unix-подобных операционных системах утилита cron позволяет организовать запуск скриптов по четко указанному расписанию.
Буферизация | Под этим термином в PHP понимается такой режим, при котором весь исходящий поток данных из PHP скрипта (например, HTML код) запоминается предварительно в памяти и не отдается браузеру пользователя. Буферизацию в PHP можно включить с помощью функции ob_start. В дальнейшем буферизацию можно отключить, например с использованием функции ob_end_flush, при этом все накопленные данные будут отосланы браузеру. Буферизация позволяет произвольно манипулировать исходящим потоком данных, на этом принципе основана технология отложенных функций.
Постоянное соединение (persistent) | При создании соединения с базой, в памяти создаётся дескриптор данного соединения. Если соединение обычное, то после отработки скрипта этот дескриптор удаляется, если соединение постоянное, он остается и может быть использован другими процессами при необходимости. Достоинством постоянного соединения является то, что, как правило, времени на его работу требуется меньше. Но есть и недостаток - количество открытых постоянных соединений ограничивается в настройках базы данных и при превышении этого лимита посетитель не сможет зайти на сайт пока не освободятся новые соединения.
Почтовое событие Это почтовое сообщение, имеющее свой тип и отправляемое по соответствующему почтовому шаблону. Почтовое событие инициализирует поля типа почтового события конкретными значениями. Порядок расположения этих полей в письме, а также текст письма, определяется почтовым шаблоном.
Для создания почтового события предназначен класс CEvent. Используется в Почтовой системе.
Почтовый шаблон Определяет текст почтового сообщения, а также порядок расположения полей (placeholder'ов), заданных в типе почтового события.
Почтовые шаблоны доступны в административном разделе на странице Почтовые шаблоны (Настройки > Настройки продукта > Почтовые события > Почтовые шаблоны).
Для манипуляции почтовыми шаблонами предназначен класс CEventMessage. Используется в Почтовой системе.
Тип почтового события Определяет набор специальных полей (placeholder'ов), которые могут быть использованы в почтовом шаблоне. В момент создания почтового события эти поля будут инициализированы конкретными значениями.
Типы почтовых событий доступны в административном разделе на странице Типы почтовых событий (Настройки > Настройки продукта > Почтовые события > Типы почтовых событий).
Для манипуляции типами почтовых событий предназначен класс CEventType. Используется в Почтовой системе.
Кастомизация | Изменение логики работы компонента или шаблона компонента под частные задачи.
API (SDK) | Каждый модуль системы содержит набор высокоуровневых функций для выборки данных в публичном разделе сайта и набор классов с низкоуровневыми методами для более специализированной работы с данными модуля. Подробная информация по API каждого модуля представлена в документации для разработчиков.


Схема работы продукта
7 / 253

На представленном ниже рисунке вы можете ознакомиться с общей схемой работы продукта.

Общая схема работы продукта


Установка и настройка
8 / 253

Раздел Установка и настройка описывает процедуры:

  • установки ознакомительной и коммерческой версии продукта;
  • процесс регистрации продукта на сайте компании "1С-Битрикс" и загрузки исходных текстов для получения полнофункциональной системы с открытыми текстами;
  • установка системы на виртуальную машину;
  • другие вопросы, связанные с установкой системы.

Для специалистов, выполняющих настройку веб-серверов (Apache, IIS) самостоятельно, рекомендуется дополнительно изучить документацию по настройке соответствующего программного обеспечения.

Карта установки

Продукт «1C-Битрикс: Управление сайтом» имеет много способов и вариантов установки. Конкретный способ зависит от целей установки, имеющегося на компьютере ПО, выбранного решения. Карта установки позволит вам выбрать для себя оптимальный вариант установки из множества возможных.

  • Ознакомление с продуктом на локальном компьютере

    Для ознакомления с продуктом на локальном компьютере можно использовать Windows-инсталлятор продукта, либо установку на Виртуальную машину (рекомендуется). (Установка с помощью Windows-инсталлятора в данном курсе не рассматривается.)

  • Установка на удаленный сервер

    Для установки на удаленный сервер мы рекомендуем использовать скрипт BitrixSetup. Также в этой ситуации можно воспользоваться установкой продукта с помощью архива .tar.gz или .zip.

  • Перенос сайта между разными площадками

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


Системные требования
9 / 253

В силу больших возможностей системы и наличия готовых компонентов почти для любой задачи «1С-Битрикс:Управление сайтом» занимает на диске от 100 Мбайт и больше, а сложная структура страницы может потребовать для ее обработки определенного объема памяти. Но благодаря своей архитектуре, платформа Bitrix Framework позволяет серверу легче переносить большие нагрузки.

В главе указываются основные технические требования к серверному программному обеспечению, сведения о поддержке стандартов и технологий, а также требования к программному обеспечению пользователя продуктом «1C-Битрикс: Управление сайтом». Современное аппаратное обеспечение перекрывает потребности системы практически в любом случае.


Требования к серверному программному обеспечению
10 / 253

Веб-сервер, который может выполнять PHP приложения

Apache (рекомендуется) разработка продукта выполнена для Apache версии 1.3.х. Однако система также успешно работает на более высоких версиях продукта.

IIS (Internet Information Server)(возможна установка) – работа продукта возможна с версии IIS 6.0 и выше. Требуется дополнительная настройка для корректной работы с продуктом.

Eserv (возможна установка) – продукт тестировался для совместной работы с веб-сервером.

PHP

Для работы продукта требуется наличие PHP версии не ниже 5.3.х. Выбор PHP-версии зависит от требований, предъявляемых вашим хостинг-провайдером, либо от установленной версии PHP на локальном компьютере. Рекомендуется использовать самую последнюю стабильную версию PHP, чтобы исключить возможность появления ошибок, связанных с PHP, а также для большей безопасности проекта на сервере.

Для корректной работы продукта требуется наличие следующих расширений PHP:

  • GD – библиотека для работы с изображениями, требуется для построения графиков и диаграмм для модулей статистики, рекламы, техподдержки. Используется для работы механизма CAPTCHA.
  • PHP XML – используется для работы системы обновлений. Библиотека по умолчанию включена в стандартной установке PHP. Для версии под Windows - поддержка встроенная.
  • FreeType – библиотека необходима для корректной работы механизма CAPTCHA.
  • Поддержка регулярных выражений (POSIX и Perl-compatible) – необходима для корректной работы внутренних механизмов продукта.
  • Zlib compression – библиотека компрессии используется для работы модуля Компрессии и при работе системы обновлений для уменьшения количества передаваемых данных от сервера к клиенту.
  • Крайне рекомендуется наличие акселератора PHP (OPcache, XCache, APC и другого). Рекомендуется OPcache, входит в состав PHP v5.5+.

    Внимание:
    1. Есть особенность использования прекомпилятора XCache, его параметр xcache.cacher для корректной работы продукта должен быть Off.
    2. eAccelerator не совместим с PHP v5.3+ и больше не поддерживается в продуктах «1C-Битрикс» с версии ядра 15.0.13. Подробнее см. в блоге разработчиков.

Примечание: Для баз данных Oracle и MySQL доступна кодировка UTF-8. Для корректной поддержки кодировки UTF необходимо проверить, установлен ли в PHP модуль mbstring. Для этого в настройках PHP, в файле php.ini, должно быть:
 mbstring.func_overload=2
 mbstring.internal_encoding=UTF-8

Поддержка серверов баз данных

MySQL – минимальным техническим требованием является использование версии MySQL 5.0 и выше.

Для работы с СУБД MySQL требуется установленная поддержка MySQL для PHP.

Внимание! С 1 июня 2016 стартовала Программа «1С-Битрикс» по переходу на базу данных MySQL. С 1 января 2017 года поддержка продуктов «1С-Битрикс» на Oracle Database и MS SQL Server будет ограниченной, заказчики не смогут скачать обновления продукта платформы и воспользоваться возможностями новых релизов.

Настройки PHP

Для корректной работы продукта необходимо установить следующие параметры PHP:

  1. memory_limit = 64M; Максимальный объем памяти в байтах, который разрешается использовать для работы PHP ядру продукта (в данном случае - 64 Мб).

    Обратите внимание: указанный параметр может быть изменен
    • непосредственно в файле php.ini;
    • из скрипта с помощью функции: ini_set("memory_limit", "64M");

      Примечание: такая строка добавляется в файле /bitrix/php_interface/dbconn.php в момент установки, значение задается пользователем;

    • в файле .htaccess с использованием директивы: php_value memory_limit 64M
    • в файле httpd.conf с использованием директивы: php_admin_value memory_limit 64M

    Обратите внимание: установка параметров PHP из .htaccess возможна только при выполнении следующих условий:
    • используется веб-сервер Apache или совместимый с ним (IIS не является совместимым сервером);
    • файлы .htaccess обрабатываются веб-сервером, т.е. в настройках веб-сервера (httpd.conf) установлена директива: AllowOverride All или другое значение, отличное от None;
    • PHP установлен как модуль Apache (в случае, если PHP работает как CGI, все необходимые значения следует учесть и установить при сборке PHP)
  2. file_uploads = On; Параметр определяет возможность загрузки на сервер файлов.

    Дополнительно к указанному параметру устанавливаются значения следующих параметров:

    • upload_tmp_dir = <имя каталога>

      Обратите внимание! Необходимо, чтобы указанный каталог существовал и на него были права на запись для пользователя, под которым работает веб-сервер.

    • upload_max_filesize = <достаточный размер>
  3. Необходимо, чтобы была корректно настроена работа с сессиями в PHP. Рекомендуется проверить наличие пути для сохранения файлов сессий.

    Обратите внимание, если параметр session.save_path не настроен в файле php.ini, то по умолчанию будет использовано значение /tmp.

    В случае, если в параметрах URL на сервере появляется PHPSESSID=..., отключить его можно следующим образом:
    • В файле php.ini установить: session.use_trans_sid = 0
    • В файле .htaccess установить: php_flag session.use_trans_sid off
      Для демонстрационного сайта, строка включена в указанный файл, требуется только раскомментировать ее.

    Важно! C целью безопасности необходимо обязательно указывать отдельную папку хранения сессий для каждого пользователя хостинга.


Поддержка стандартов и технологий. Требования к клиентскому программному обеспечению
11 / 253

Система «1С-Битрикс: Управление сайтом» разработана с использованием и поддержкой следующих технологий:

HTML/XHTML – система не накладывает ограничений на использование шаблонов, разработанных с использованием HTML/XHTML.

JavaScript – система не накладывает ограничений на использование JavaScript в шаблонах сайта, шаблонах меню и на страницах сайта.

AJAX – технология используется в публичном интерфейсе продукта, компонентах 2.0, административной панели управления для ускорения работы с информацией сайта и уменьшения количества передаваемых данных от сервера к клиенту. Система не накладывает ограничений на использование технологии AJAX в публичных разделах сайта.

CSS – система предполагает использование различных таблиц каскадных стилей для каждого шаблона сайта. Отдельные таблицы стилей могут быть использованы для настройки представления публичных компонентов и шаблонов отдельных модулей (например, модули форума, техподдержки, опросов). Административная панель управления разработана с учетом возможности создания своих «визуальных тем», которые основаны на разработке отдельных таблиц стилей.

Flash – система ограниченно поддерживает технологию Macromedia (ныне Adobe) Flash. Элементы Flash могут быть использованы:

  • в качестве элементов оформления в шаблонах сайтов;
  • в качестве загруженных в систему рекламных баннеров;
  • как интерактивные элементы, взаимодействующие с системой;

RSS – продукт поддерживает стандарт RSS версий 0.92 и 2.0. RSS используется для организации обмена информацией между модулями Информационные блоки, Блоги и Форум.

CommerceML – система реализована с поддержкой стандарта CommerceML версии 1.0. Поддержка стандарта позволяет обеспечить обмен информацией между «1C-Битрикс: Управление сайтом» и системой программ «1C: Предприятие» версий 7.7 и 8.х.

CSV – система использует стандарт CSV для организации обмена данными модуля информационных блоков с другими системами.

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

Известные проблемы:

  • Работа визуального редактора может функционально отличаться при использовании браузеров различных типов.
  • некоторые функции API могут производить HTML код, не соответствующий стандарту XHTML, и не полностью проходить проверку соответствия стандарту, указанному в объявлении типа документа <!DOCTYPE>.


Установка продукта «1С-Битрикс: Управление сайтом»
12 / 253

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

Решения — это дистрибутивы, адаптированные под различные типовые потребности пользователей.


Предварительные операции
13 / 253

Продукт «1С-Битрикс: Управление сайтом» поставляется в виде архивов .zip и .tar.gz для версий PHP 5.

  • Для начала установки загрузите архивные файлы продукта «1C-Битрикс: Управление сайтом» на сервер (или локальный компьютер).
  • Распакуйте архив в корневой каталог вашего сайта. Для распакованных файлов продукта вам потребуется примерно 60-120 Мб свободного дискового пространства в зависимости от редакции продукта. Для оценки полного размера необходимо дополнительно прибавить размер самого архива.

Внимание! Установка и дальнейшая корректная работа продукта возможна только в корневой папке вашего сайта на хостинге.

Для начала процесса установки продукта выполните следующее:

  • Откройте страницу http://<ваш_сайт>/index.php в браузере, заменив фразу <ваш_сайт> на реальный адрес вашего сайта.
  • Следуйте инструкциям Мастера установки.


Мастер установки «1C-Битрикс: Управление сайтом»
14 / 253

В главе подробно описывается по шагам процесс установки продукта «1С-Битрикс: Управление сайтом», а также показана установка любого решения на примере Интернет-магазина.

Примечание: Количество шагов в Мастере установки продукта может отличаться в зависимости от вариантов установки.

Примечание: Запустив Мастер установки c параметром clear_db=Y (например, http://localhost/?clear_db=Y), перед установкой продукта в базе данных будут удалены все таблицы и связанные с ними сущности.

Внимание! Используйте эту опцию, только если вы полностью осознаете последствия ваших действий.


Первый шаг
15 / 253

Примечание: Если продукт устанавливается вместе с пакетом «Битрикс: Веб-окружение», то этот шаг будет пропущен.

Первый шаг установки (начало установки)

Первое окно Мастера установки информирует о начале процесса инсталляции и выводит основную информацию о продукте.

  • Для продолжения установки нажмите кнопку Далее.


Второй шаг
16 / 253

Примечание: Если продукт устанавливается вместе с пакетом «Битрикс: Веб-окружение», то этот шаг будет пропущен.

Второй шаг установки (лицензионное соглашение)

  • Внимательно ознакомьтесь с текстом Лицензионного соглашения. Если вы согласны с его условиями, то установите флаг в поле Я принимаю лицензионное соглашение.
  • Для продолжения установки нажмите кнопку Далее.


Третий шаг
17 / 253

Третий шаг установки (ввод лицензионного ключа)

На данном шаге выполняется ввод лицензионного ключа, выбирается тип установки - сайт или установка для разработки, кодировки сайта.

Регистрация продукта

  • В поле Лицензионный ключ введите полученный при покупке лицензионный ключ продукта.

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

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

  • Установка для разработки

    Начиная с версии 16.5.7 и старше, в продукте «1С-Битрикс» появилась возможность пометить новую или существующую установку программного продукта специальным маркером, который не будет влиять на блокировку системы обновлений, и как следствие - на возникновение ошибки ERROR_WRONG_CODE.

    На Установке для разработки можно проводить тестирование, не закрывая публичный доступ к сайту или не устанавливая продукт локально. Этот функционал поможет решить проблему коллективного доступа к одной установке продукта. Ещё эта функция будет полезна, если разработчиков несколько и всем им нужна своя публичная установка продукта для тестирования.

    Примечание: Подробнее о данном режиме установки можно прочитать тут.

Выбор Базы данных

Для базы данных MySQL доступна кодировка UTF-8. Для ее подключения установите флажок в поле Установить в кодировке UTF-8. Для корректной поддержки кодировки UTF-8 необходимо проверить, установлен ли в PHP модуль mbstring. Для этого в настройках PHP, в файле php.ini, должно быть:

mbstring.func_overload=2
mbstring.internal_encoding=UTF-8

Внимание! С 1 июня 2016 стартовала Программа «1С-Битрикс» по переходу на базу данных MySQL. С 1 января 2017 года поддержка продуктов «1С-Битрикс» на Oracle Database и MS SQL Server стала ограниченной: клиенты не могут скачивать обновления продукта платформы и воспользоваться возможностями новых версий продукта.

Кодировка сайта

Установкой соответствующего флажка можно установить продукт с использованием кодировки UTF-8.

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — распространенная кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста.

На данный момент выбор для кодировки HTML-документа стоит между WIN-1251 и UTF-8.

Использование кодировки WIN-1251 целесообразно со старыми версиями MySQL (до версии 4.х), которые некорректно работали с UTF-8. Эти недостатки отсутствуют в современных версиях СУБД MySQL.

Преимуществом UTF-8 является наличие в ней большого количества спецсимволов, типографских знаков и символов национальных алфавитов. UTF-8 поддерживается всеми современными браузерами, начиная с Internet Explorer 4.

Для достижения наибольшей универсальности и полноты использования существующих символов рекомендуется использовать кодировку UTF-8.

Для продолжения установки нажмите кнопку Далее.


Четвертый шаг
18 / 253

Примечание: Если продукт устанавливается вместе с пакетом «Битрикс: Веб-окружение» - Windows (exe-дитрибутив) или на Виртуальной машине BitrixVM (VMWare/VirtualBox), то этот шаг будет пропущен.

Четвертый шаг установки (предварительная проверка)

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

Если ваша система не соответствует минимальным техническим требованиям, то наверху экрана появится красная надпись, описывающая несоответствие. Более подробное описание несоответствия находится в теле страницы. Вы не сможете продолжить установку продукта до устранения несовместимости.

Внимание! При установке продукта в кодировке UTF-8 значение параметра mbstring.func_overload должно быть равно 2. Другие значения для данной кодировки неприемлемы.

Если при установке продукта в кодировке UTF-8 на этапе предварительной проверки красным отобразятся параметры mbstring.func_overload и mbstring.internal_encoding, то для исправления необходимо в файле php.ini указать строки:

mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8
Примечание. Возможна установка сайта в кодировке win-1251, если необходимо, чтобы значение overload оставалось равным 2. Для этого достаточно использовать значение cp1251 для параметра encoding:
mbstring.func_overload = 2
mbstring.internal_encoding = CP1251

Если ваша система не соответствует рекомендованным настройкам системы, то дальнейшая инсталляция все-таки возможна. Список таких несоответствий отобразится в теле страницы. Однако после установки рекомендуется привести систему в соответствие с рекомендованными настройками (в дальнейшем, проверить настройки системы можно в форме Проверка системы административного раздела).

  • Для продолжения установки нажмите кнопку Далее.


Пятый шаг
19 / 253

Примечание: Если продукт устанавливается вместе с пакетом «Битрикс: Веб-окружение» - Windows (exe-диcтрибутив) или на Виртуальной машине BitrixVM (VMWare/VirtualBox), то этот шаг будет пропущен.

Пятый шаг установки (создание базы данных)

На данном этапе выполняется создание конфигурационного файла соединения с базой данных и загрузка данных в базу. В зависимости от выбранного типа базы данных поля в группе Параметры базы данных будут отличаться. Неизменными будут поля секции Дополнительные параметры.

Параметры базы данных для MySQL:

На данном шаге устанавливаются параметры связи с базой данных.

Локальная установка

Если вы устанавливаете продукт «1С-Битрикс: Управление сайтом» на локальный компьютер с уже установленными приложениями для его корректной работы (Apache, PHP, MySQL) либо на пакет «Битрикс: Веб-окружение», то заполняйте поля следующим образом:

  • Сервер: сервер, на котором работает система управления базами данных (СУБД), в данном случае MySQL. Для локального компьютера этот параметр обычно имеет значение localhost с портом, на котором работает MySQL, в формате localhost:[номер_порта]. Номер порта можно найти в конфигурационных файлах MySQL.

    Внимание! При установке продукта на пакет «Битрикс: Веб-окружение» - Windows в данном поле введите localhost:31006.

  • Пользователь базы данных: выберите создать нового пользователя;
  • Имя пользователя: введите произвольное имя (логин) пользователя СУБД для доступа к базе данных.
  • Пароль: пароль пользователя для доступа к базе данных.
  • База данных: создать новую базу.
  • Имя базы данных: имя создаваемой базы данных. Любое имя на латинице, возможно использование цифр и символа подчеркивания.
  • Тип таблиц базы данных: для большинства случаев подойдет тип стандартный. Возможен выбор из двух вариантов:
    • Стандартный. Стандартным типом таблиц в MySQL является тип MyISAM, который не является ориентированным на транзакции. Для таблиц типа MylSAM, все данные сохраняются в одном файле, следовательно, максимальный размер файла одновременно является максимальным размером таблицы.

      Операционные системы налагают свои ограничения на максимальный размер файла. Обычно он составляет от 2 до 4 Гбайт. Таблицы MylSAM являются платформо-независимыми. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования.

    • Innodb. Таблицы InnoDB в MySQL снабжены обработчиком таблиц, обеспечивающим безопасные транзакции с возможностями фиксации транзакции, отката и восстановления после сбоя.

      Для таблиц InnoDB осуществляется блокировка на уровне строки, а также используется метод чтения без блокировок в команде SELECT. На случай отмены транзакций ведется журнал транзакций. Он подвержен внутренней ротации, т.е. когда заполняются все записи, самые старые из них начинают удаляться. Перечисленные функции позволяют улучшить взаимную совместимость и повысить производительность в многопользовательском режиме.

      InnoDB предназначается для получения максимальной производительности при обработке больших объемов данных. По эффективности использования процессора этот тип намного превосходит другие модели реляционных баз данных с памятью на дисках.

  • Далее выберите Создать новую базу данных. Появится дополнительная группа: Пароль и логин администратора базы данных.

  • В поле Логин введите root.
  • Поле Пароль оставьте пустым.

Удалённый сервер

Если вы устанавливаете продукт на удаленном сервере, то данные для полей параметров базы данных вам надо запросить у службы поддержки удаленного сервера и заполнить поля:

  • Сервер: укажите сервер, на котором работает система управления базами данных (СУБД).
  • Пользователь базы данных: переключатель определяет, создавать ли нового пользователя базы данных в процессе установки или использовать данные существующего пользователя.
  • Имя пользователя: имя (логин) пользователя СУБД для доступа к базе данных.
  • Пароль: пароль пользователя для доступа к базе данных.
  • База данных: переключатель определяет: создавать ли новую базу данных в процессе установки или использовать существующую.
  • Имя базы данных: имя базы данных, в которую будет установлен продукт.
  • Тип таблиц базы данных: выбор между различными типами таблиц для базы данных.

Внимание! В большинстве случаев подойдет стандартный тип таблиц. Для сайтов с повышенными требованиями к нагрузке, например, интернет-магазинам, для базы данных MySQL предпочтительнее тип InnoDB.

Внимание! Если в процессе установки необходимо создать нового пользователя или новую базу данных, то требуется ввести Логин и Пароль администратора базы данных. Если базы данных ранее не было создано, то обязательно необходимо выбрать новая в поле База Данных. Как правило, база данных создается на сервере самой службой хостинга. Вам нужно лишь только получить имя и параметры доступа к ней.

Дополнительные параметры:

Эти параметры определяют права доступа к файлам сайта (для всех типов баз данных).

Заполните поля:

  • Права на доступ к файлам сайта: права, с которыми будут создаваться файлы. Права должны быть достаточными для доступа веб-сервера на запись. По умолчанию имеет значение 0644;
  • Права на доступ к папкам сайта: права, с которыми будут создаваться каталоги. Права должны быть достаточными для доступа веб-сервера на запись. По умолчанию имеет значение 0755.

Примечание: Ручную установку параметров соединения с базой данных (в том числе и максимальный объем памяти для выполнения скрипта) вы можете выполнить в файлах /bitrix/php_interface/dbconn.php и /bitrix/.settings.php. Файлы будут созданы после завершения установки.

Для продолжения установки нажмите кнопку Далее.


Шестой шаг
20 / 253

Шестой шаг установки (установка продукта)

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


Седьмой шаг
21 / 253

Седьмой шаг установки (создание администратора)

На данном этапе производится настройка сайта и создается учетная запись (бюджет) администратора сайта, которому будут доступны все функции настройки и управления сайтом. После установки системы администратор при необходимости может создать дополнительные учетные записи пользователей с меньшим количеством прав.

Поля, отмеченные *, обязательны для заполнения.

  • Логин: логин (имя) администратора сайта для входа в административный раздел сайта. Логин должен быть не короче трех символов. Используйте в логине только латинские буквы и цифры.
  • Пароль: пароль администратора сайта для входа в административный раздел сайта. Используйте в пароле только латинские буквы и цифры.

    Важно! Для администратора сайта настоятельно рекомендуется использовать сложный пароль длиной более 6 символов.

  • Подтверждение пароля: пароль вводится еще раз для проверки правильности набора.
  • E-Mail: адрес электронной почты администратора сайта (e-mail).
  • Имя: имя администратора сайта.
  • Фамилия: фамилия администратора сайта.

Примечание: Введенные пароль и логин в дальнейшем будут использоваться администратором для авторизации при входе в систему.

Для продолжения установки нажмите кнопку Далее. Откроется Мастер создания сайта.


Восьмой шаг
22 / 253

Восьмой шаг установки (выбор решения для установки)

  • Выберите подходящее вам решение.

Будет запущен один из мастеров для создания сайта в зависимости от выбора решения:

  • Демо-сайт для разработчиков.
  • 1С-Битрикс: Сайт сообщества - это решение для тех, кто создает сайт социального сообщества: клуб любителей кофе, рыбалки, велотуризма и т.д.
  • Корпоративный сайт производственной компании на примере сайта мебельного производства - решение для производственных организаций и компаний для создания корпоративного проекта.
  • Корпоративный сайт услуг на примере сайта банка - решение для организаций и компаний в сфере услуг для создания корпоративного проекта.
  • Информационный портал – решение для тех, кто создает сайт СМИ со своей социальной сетью и сообществами.
  • 1С-Битрикс: Персональный сайт - сайт для пользователя, который хочет создать свое виртуальное представительство в сети.
  • Интернет-магазин - это решение для тех, кто создает свою торговую площадку в Интернете.
  • если выбрать Загрузить из Marketplace, то будет осуществлен переход к девятому шагу Выбор модуля Мастера установки.


Девятый шаг
23 / 253

Девятый шаг установки (выбор модуля)

Примечание: Переход к странице выбора модулей осуществляется, если на восьмом шаге установки былo выбрано решение Загрузить из Marketplace.

  • Выберите необходимый сторонний модуль (мастер создания сайта) для загрузки из Marketplace.

  • Нажмите кнопку Далее.


Десятый шаг
24 / 253

Десятый шаг установки (загрузка модуля)

Примечание: Переход на этот шаг осуществляется только если былo выбрано решение Загрузить из Marketplace на восьмом шаге установки.

Автоматический шаг, на котором происходит загрузка выбранного вами решения (мастера). Отслеживание процесса можно вести по графическому индикатору

  • После завершения процесса система автоматически перейдет к Мастеру создания сайта выбранного решения.


Установка демо-сайта для разработчиков
25 / 253

Примечание: Переход к этому мастеру осуществляется только если былo выбрано решение Демо-сайт для разработчиков на восьмом шаге установки.

  • Выбор кнопки Далее запустит Мастер создания демо-сайта для разработчиков.
Примечание: В случае выбора кнопки Отмена продукт будет установлен в "чистом" виде, без демо-данных. То есть, будет выведена страница с приветственным текстом. Эта функция предназначена для разработчиков проектов. Если цель – ознакомление с продуктом, то пользоваться этой кнопкой не рекомендуется.

Первый шаг мастера создания сайта

На первом шаге выбирается шаблон дизайна для сайта. Шаблоны отличаются внешним оформлением, представленной информацией на главной странице сайта, а также базовыми настройками.

  • Поставьте флажок у выбранного типа шаблона.
  • Нажмите кнопку Далее.

Второй шаг мастера создания сайта

На втором шаге работы мастера выбирается цветовая схема для выбранного на первом шаге шаблона дизайна сайта. Для разных типов шаблонов предлагаются разные цветовые схемы.

  • Выберите подходящую вам цветовую схему.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Третий шаг мастера создания сайта

На данном этапе задаются название вашего сайта, слоган и логотип.

  • Заполните поля Название компании и Слоган компании.

    • Примечание: Если использование названия и слогана компании не предполагается, то эти поля можно оставить пустыми.

  • С помощью кнопки Обзор можно выбрать логотип компании для загрузки на сайт.

    Внимание! Размер загружаемого файла логотипа не должен превышать 1,5 Мб, формат файлов должен быть: GIF, JPG, PNG.

  • Для перехода к следующему шагу нажмите кнопку Далее.

Четвертый шаг мастера создания сайта

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

  • Снимите флажки с сервисов, которые вы не хотите устанавливать.

    Примечание. Если снять флажки со всех сервисов, то будет установлена только Главная страница, страница авторизации и поиск. Впоследствии через Административную панель можно запустить Мастер повторно и установить нужные сервисы, а также сменить шаблон сайта.
  • Для изменения настроек предназначена кнопка Назад, для запуска процесса установки - кнопка Установить.

Ход установки отображается с помощью графического индикатора.

Окончание работы мастера

После завершения установки выводится информация об успешном завершении работы Мастера создания сайта.

  • Для выхода из мастера нажмите кнопку Перейти на сайт. Откроется публичный раздел созданного демо-сайта.

Установка продукта завершена.

При необходимости проводится дополнительная настройка системы.
  • Для модуля веб-аналитики производится загрузка CSV файла с данными по привязке IP к странам. Это можно сделать на странице настроек модуля веб-аналитики в закладке Страна и город (Настройки > Настройки продукта > Настройки модулей > Веб-аналитика).
  • Чтобы отключить подстановку идентификатора сессии в ссылки на сайте, необходимо добавить в находящийся в корне сайта файл .htaccess директиву php_flag session.use_trans_sid off.
    Установка этой директивы может не поддерживаться установленной текущей версией Apache.
  • Чтобы включить кеширование изображений, необходимо добавить в находящийся в корне сайта файл .htaccess директивы:
    ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"
    Установка этих директив может не поддерживаться установленной текущей версией Apache.

    Примечание: Включение кеширования изображений рекомендуется производить уже после всех отладочных работ на сайте.


Установка решения «1C-Битрикс: Управление сайтом» версии 16.5.х и выше
26 / 253

Внимание! Количество шагов в Мастере создания сайта может быть разным и зависит от конкретного решения.

В качестве примера установки любого из решений «1C-Битрикс: Управление сайтом» рассмотрим создание сайта онлайн-магазина (решение Интернет-магазин).

Примечание: Переход к этому мастеру осуществляется, только если былo выбрано решение Интернет-магазин на восьмом шаге установки.

Первый шаг мастера (выбор шаблона)

Первое окно информирует о начале работы мастера. На данном шаге выбирается шаблон дизайна для вашего сайта. Шаблоны отличаются внешним оформлением, а также базовыми настройками.

  • Выберите подходящий шаблон сайта.
  • Нажмите кнопку Далее.

Второй шаг мастера (выбор темы)

На этом шаге работы мастера выбирается цветовая тема для выбранного на первом шаге шаблона дизайна сайта. Для разных шаблонов предлагаются разные цветовые схемы.

  • Выберите подходящую цветовую тему.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Третий шаг мастера (информация о сайте)

На данном этапе задаются данные о компании.

  • Заполните необходимые данные.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Четвертый шаг мастера (настройка каталога)

На данном этапе задаются настройки каталога.

  • Для перехода к следующему шагу нажмите кнопку Далее.

Пятый шаг мастера (информация о магазине)

На данном этапе задаются служебные данные о компании.

  • Выберите Локализацию магазина, заполните поля: Информация о магазине и Банковские реквизиты.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Шестой шаг мастера (типы плательщиков)

На данном этапе задаются типы плательщиков магазина.

  • Выберите Типы плательщиков, которые будут использоваться на сайте.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Седьмой шаг мастера (оплата и доставка)

На данном этапе задаются способы оплаты и доставки товара.

  • Выберите Способы оплаты, Способы доставки товара, а также Местоположение магазина, которые будут использоваться на сайте.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Восьмой шаг мастера (установка решения)

Автоматический шаг, на котором устанавливаются все настройки решения. Отслеживание процесса можно вести по графическому индикатору. После завершения процесса установки система автоматически перейдет к следующему шагу.

Девятый шаг мастера (завершение настройки)

Установка и настройка решения завершена

Нажмите кнопку Перейти на сайт для перехода на главную страницу сайта.


Установка стороннего решения из Marketplace
27 / 253

Установка стороннего решения из MarketPlace может быть осуществлена как на этапе установки продукта «1C-Битрикс: Управление сайтом», так и после запуска проекта.

Внимание! Компания «1С-Битрикс» не несет ответственности за разработки партнеров. По всем вопросам, связанным с работой сторонних решений, а также в случаях нарушения работы сайта, вызванного некорректной работой сторонних решений, обращайтесь к партнерам-разработчикам.

В продукт включена защита от манипуляций с переустановкой стороннего решения с целью получить «бесконечный триал». Физическое удаление модуля (удаление папки модуля) независимо от срока действия триала приведёт к тому, что установить заново триальную версию станет невозможно. Установится только версия с купленной лицензией.

Внимание! Установка решений из MarketPlace невозможна на сайты с неактивной лицензией. При использовании демо-версии продукта для установки решения необходимо получить пробный лицензионный ключ.

В систему встроена защита от повторной установки демо-версии. То есть пользователь не имеет возможности удалить и поставить заново модуль и вновь пользоваться им в демо-режиме.


До установки продукта
28 / 253

Внимание! Количество шагов в Мастере создания сайта может быть разным и зависит от конкретного решения.

В качестве примера установки любого стороннего решения из Marketplace рассмотрим создание типового сайта лечебных учреждений, клиник (решение Сайт медицинской клиники).

Примечание: Переход на этот шаг осуществляется, только если былo выбрано Загрузить из Marketplace на восьмом шаге установки.

Первый шаг мастера (выбор шаблона)

Первое окно информирует о начале работы мастера. На данном шаге выбирается шаблон дизайна для вашего сайта. Шаблоны отличаются внешним оформлением, а также базовыми настройками.

  • Выберите подходящий шаблон сайта.
  • Нажмите кнопку Далее.

Второй шаг мастера (выбор темы)

На этом шаге работы мастера выбирается цветовая тема для выбранного на первом шаге шаблона дизайна сайта. Для разных шаблонов предлагаются разные цветовые схемы.

  • Выберите подходящую цветовую тему.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Третий шаг мастера (настройка решения)

На данном этапе задаются данные о компании.

  • Заполните необходимые данные в соответствующих полях.
  • Для перехода к следующему шагу нажмите кнопку Далее.

Четвертый шаг мастера (установка решения)

Автоматический шаг, на котором устанавливаются все настройки решения. Отслеживание процесса можно вести по графическому индикатору. После завершения процесса установки система автоматически перейдет к следующему шагу.

Пятый шаг мастера (завершение установки)

Установка и настройка решения завершена

  • Нажмите кнопку Перейти на сайт для перехода на главную страницу сайта.


После установки продукта
29 / 253

Установка стороннего решения из Marketplace

Установка стороннего решения из Marketplace после установки продукта «1C-Битрикс: Управление сайтом» возможна двумя способами:

  1. в публичной части нажатием кнопки Протестировать новое решение, расположенной на панели управления:

    2. Далее действия аналогичны описанным в уроке по установке стороннего решения до установки продукта.

  2. в административной части в Каталоге решений (Marketplace > Каталог решений):

    • Выбрав подходящее решение из списка в Marketplace, вы перейдете на страницу этого продукта:

      На странице решения нужно выбрать необходимые действия:
      • Купить - товар добавится в Корзину на сайте Marketplace, и вы перейдете к выбору оплаты и покупки данного решения;
      • Онлайн-Демо - вы перейдете в демо-раздел на сайте разработчика, чтобы в реальном времени попробовать в действии данное решение;
      • Тестировать - вы перейдете в раздел обновлений Marketplace для скачивания и установки демо-версии на ваш сайт.
      • Установить - вы перейдете в раздел обновлений Marketplace для скачивания и установки решения на ваш сайт (этот вариант доступен при бесплатном распространении решения).
    • После выбора вариантов Тестировать или Установить вы перейдете в раздел Обновление решений (Marketplace > Обновление решений). Нажав кнопку Загрузить, необходимо принять лицензионное соглашение, далее начнется загрузка.

    • После загрузки решения нажмите кнопку Установить для установки модуля решения.

    • Далее необходимо нажать на кнопку Установить либо перейти в раздел Доступные решения (Marketplace > Установленные решения), выбрать в меню действий пункт Установить нужного мастера установки решения.

      • Дальнейшие шаги работы мастера установки решения аналогичны описанным в уроке по установке стороннего решения до установки продукта.

Обновление стороннего решения из Marketplace

Для обновления стороннего решения необходимо перейти в Установка обновлений (Marketplace > Обновление решений):

По ссылке Посмотреть список обновлений осуществляется переход на закладку Список обновлений, где указывается какое решение можно обновить:

Активация купона стороннего решения из Marketplace

Купон - это своего рода лицензионный ключ, позволяющий легально использовать стороннее коммерческое решение, но при этом не спрашивать у него код ключа самого продукта «1C-Битрикс».

На закладке Активация купона (Marketplace > Обновление решений) осуществляется регистрация стороннего решения с помощью ввода кода купона:

Обратите внимание, купон нельзя активировать на демо-версии продукта.


Установка продукта с помощью BitrixSetup
30 / 253

Установка «1С-Битрикс: Управление сайтом» на удаленный сервер возможна посредством загрузки дистрибутива по протоколу FTP или с помощью скрипта BitrixSetup.

Для загрузки по FTP достаточно скачать и распаковать на локальном компьютере коммерческую или пробную версию. Затем с помощью любого FTP-клиента загрузить дистрибутив в корневую папку веб-сервера, либо закачать архив на удаленный сервер и распаковывать уже там.

Во избежание возможных ошибок при загрузке, а так же частой проблемы с различием прав доступа пользователя FTP и пользователя сервера Apache настоятельно рекомендуется использовать специально созданный скрипт BitrixSetup.

С помощью скрипта BitrixSetup вы сможете загрузить дистрибутив пробной или коммерческой версии продукта с сайта www.1c-bitrix.ru непосредственно на ваш сайт, минуя промежуточную загрузку дистрибутива на локальный компьютер. Кроме того, скрипт позволяет автоматически распаковать дистрибутив при отсутствии возможности доступа к сайту по SSH или с помощью внешних программ.

  • Перейдите по ссылке http://www.1c-bitrix.ru/download/cms.php на страницу с дистрибутивами продукта.
  • Перейдите на закладку BitrixSetup.

  • Нажмите ссылку Скачать.
  • В открывшемся диалоговом окне выберите вариант Сохранить.
  • Сохраните загружаемый файл с именем bitrixsetup.php.
  • Установите FTP соединение с сервером, на котором планируется размещение сайта.
  • Загрузите сохраненный на локальном компьютере файл bitrixsetup.php в корневую директорию вашего сайта на сервере.

    Внимание! Установка и дальнейшая корректная работа продукта возможна только в корневой папке сайта на сервере.

  • Откройте страницу http://<ваш сайт>/bitrixsetup.php в браузере, заменив строку <ваш сайт> на реальный адрес вашего сайта. В браузере отобразится страница загрузки дистрибутива.

    Внимание! Убедитесь, что веб-сервер обладает достаточными правами для создания и записи файлов на хостинге.
  • В поле Выбор дистрибутива выберите Управление сайтом и с помощью выпадающего списка укажите редакцию продукта, которую вы хотите установить.
  • Укажите версию продукта, которая вам необходима: демонстрационная или коммерческая.

    Если вы выбрали коммерческую версию, то введите лицензионный ключ в поле Лицензионный ключ.

    Примечание: Установка коммерческой версии без лицензионного ключа невозможна. Установка демоверсии возможна как с демонстрационным ключом, полученным на сайте компании «1С-Битрикс», так и без ключа вообще.

  • Нажмите кнопку Загрузить. Начнется процесс загрузки дистрибутива на сайт.

С помощью скрипта BitrixSetup будет установлено соединение вашего сервера непосредственно с сервером компании «1C-Битрикс». Дистрибутив выбранной редакции продукта будет скопирован в корневую директорию сайта на сервере, автоматически распакован, а затем в браузере откроется окно Мастера установки продукта.

С помощью кнопки Назад можно вернуться в раздел Выбор дистрибутива, чтобы изменить значения параметров загрузки (например, редакцию дистрибутива).

Важно! В целях безопасности скрипт bitrixsetup.php из корневого каталога сайта автоматически удаляется после распаковки дистрибутива.


Быстрая установка (Short install)
31 / 253

Быстрая установка позволяет в упрощенном виде установить продукт «1C-Битрикс». Во время такой установки мастером пропускаются шаги лицензионного соглашения, предварительной проверки хостинга, выбора и настройки базы данных и т.п.

Примечание: Быстрая установка не рекомендуется для MSSQL и Oracle из-за сложности настроек этих баз данных, хоть и поддерживается в продуктах «1C-Битрикс». Установку продукта для баз данных MSSQL и Oracle лучше производить стандартным мастером.

Все необходимые данные для установки содержатся в файлах /bitrix/php_interface/dbconn.php и /bitrix/.settings.php (настройки для нового ядра D7), которые нужно создать и поместить в необходимые директории устанавливаемого дистрибутива.

Пример файла /bitrix/php_interface/dbconn.php

<?
define("SHORT_INSTALL", true);
define("SHORT_INSTALL_CHECK", true);

define("MYSQL_TABLE_TYPE", "INNODB");
define("BX_UTF", true);

define("DBPersistent", false);
$DBType = "mysql";
$DBHost = "127.0.0.1:31007";
$DBName = "sitemanager";
$DBLogin = "user";
$DBPassword = "123456";
$DBDebug = false;
$DBDebugToFile = false;

define("BX_FILE_PERMISSIONS", 0664);
define("BX_DIR_PERMISSIONS", 0775);
@umask(~BX_DIR_PERMISSIONS);

define("BX_USE_MYSQLI", true);
define("DELAY_DB_CONNECT", true);
define("CACHED_menu", 3600);
define("CACHED_b_file", 3600);
define("CACHED_b_file_bucket_size", 10);
define("CACHED_b_lang", 3600);
define("CACHED_b_option", 3600);
define("CACHED_b_lang_domain", 3600);
define("CACHED_b_site_template", 3600);
define("CACHED_b_event", 3600);
define("CACHED_b_agent", 3660);

?>

Рассмотрим каждую строку подробнее:

  • SHORT_INSTALL - если указано значение true, то запускается упрощенный мастер установки.
  • SHORT_INSTALL_CHECK - проверка параметров окружения (права доступа к файлам, БД и т.п). Если такой константы нет, проверка будет выполнена на первом хите. После этого в начало dbconn.php запишется define("SHORT_INSTALL_CHECK", true);
  • MYSQL_TABLE_TYPE - выбор типа таблиц MySQL: MyISAM или InnoDB.
  • BX_UTF - выбор кодировки сайта: true - UTF8, false - CP1251.
  • DBPersistent - если данная константа инициализирована значением true, то будет создаваться постоянное соединение с базой, иначе - обычное.

    Примечание: При создании соединения с базой в памяти создается дескриптор данного соединения. Если соединение обычное, то после отработки скрипта это дескриптор удаляется. Если соединение постоянное, дескриптор остается и может быть использован другими процессами при необходимости. Достоинством постоянного соединения является то, что, как правило, времени на него требуется меньше, но в то же время есть недостаток - количество открытых постоянных соединений ограничивается в настройках базы данных и при превышении этого лимита посетитель не сможет зайти на сайт пока не освободятся новые соединения.

  • $DBType - указывается тип базы: mysql, mssql или oracle.
  • $DBHost - указывается для базы:
    • MySQL - адрес и порт сервера базы данных (например, localhost или 192.168.3.155:31007, если БД находится на другом хосте и на нестандартном порту).
    • MSSQL - строка соединения с сервером (например, для ODBC: DRIVER=SQL Server; SERVER=TESTSQL, для Native: TESTSQL).
    • Oracle - не используется.
  • $DBName - указывается для базы:
    • MySQL - имя базы (например, sitemanager).
    • MSSQL - имя базы (например, sitemanager_mssql_odbc)
    • Oracle - строка соединения с базой данных.
      Например:
      $DBName = "
    (DESCRIPTION =
        (ADDRESS_LIST =
            (ADDRESS =
                (PROTOCOL = TCP)
                (HOST = 192.168.0.1)
                (PORT = 1521)
            )
        )
        (CONNECT_DATA =
            (SERVICE_NAME = BX)
        )
    )
";

    Примечание: Базы данных должны быть заранее созданы на хостинге. Например, для кодировки сайта в UTF8 при создании MySQL-базы collation для нее должно быть utf8_unicode_ci, в CP1251 - cp1251_general_ci.

  • $DBLogin - логин пользователя для доступа в базу данных.
  • $DBPassword - пароль пользователя для доступа в базу данных.
  • $DBDebug - если данная переменная будет равна true, то в случае ошибки при создании соединения с базой или в любом SQL-запросе, сообщение об ошибке и полный текст этой ошибки будет отображаться в браузере. В противном случае - полный текст ошибки будет показан только администратору сайта.
  • $DBDebugToFile - если данная переменная будет равна true, то все SQL-запросы к базе данных и время их выполнения будут записываться в лог-файл /mysql_debug.sql (/mssql_debug.sql или /oracle_debug.sql). Данная возможность используется, как правило, для получения данных о скорости выполнения SQL-запросов к базе данных.

    Внимание: Ведение подобного лога может серьезно замедлить работу сайта, поэтому пользоваться этим стоит кратковременно.

  • BX_FILE_PERMISSIONS - права, с которыми будут создаваться файлы. Права должны быть достаточными для доступа веб-сервера на запись (по умолчанию - 0644).
  • BX_DIR_PERMISSIONS - права, с которыми будут создаваться каталоги. Права должны быть достаточными для доступа веб-сервера на запись (по умолчанию - 0755).
  • @umask(~BX_DIR_PERMISSIONS) - возвращает права на директории, созданные в процессе установки продукта, к принятым по умолчанию на хостинге (без вывода ошибок).
  • BX_USE_MYSQLI - использование расширения mysqli (в версии ядра 14.5.2 и выше).

    Внимание: В PHP должно быть установлено расширение mysqli, дополнительные проверки на наличие расширения не производятся! Включать mysqli нужно отдельно для старого (dbconn.php) и нового (.settings.php) ядра.

  • DELAY_DB_CONNECT - подключение к базе данных будет автоматически устанавливаться при первом запросе через API-функции.
  • CACHED_menu - указывается время жизни управляемого кеша меню в секундах. Если константа равна false, то кеширование меню отключено.
  • CACHED_b_lang, CACHED_b_option, CACHED_b_lang_domain, CACHED_b_site_template, CACHED_b_event, CACHED_b_agent - указывается время жизни управляемого кеша языковых файлов, настроек, шаблона сайта, событий и агентов в секундах. Если константа равна false, то кеширование отключено.

Пример файла /bitrix/.settings.php

<?php
return array (
  'utf_mode' =>
  array (
    'value' => true,
    'readonly' => true,
  ),
  'cache_flags' =>
  array (
    'value' =>
    array (
      'config_options' => 3600,
      'site_domain' => 3600,
    ),
    'readonly' => false,
  ),
  'cookies' =>
  array (
    'value' =>
    array (
      'secure' => false,
      'http_only' => true,
    ),
    'readonly' => false,
  ),
  'exception_handling' =>
  array (
    'value' =>
    array (
      'debug' => false,
      'handled_errors_types' => 4437,
      'exception_errors_types' => 4437,
      'ignore_silence' => false,
      'assertion_throws_exception' => true,
      'assertion_error_type' => 256,
      'log' => array (
          'settings' =>
          array (
            'file' => '/var/log/php/exceptions.log',
            'log_size' => 1000000,
        ),
      ),
    ),
    'readonly' => false,
  ),
  'connections' =>
  array (
    'value' =>
    array (
      'default' =>
      array (
        'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
        'host' => 'localhost',
        'database' => 'sitemanager0',
        'login' => 'root',
        'password' => '',
        'options' => 2,
      ),
    ),
    'readonly' => true,
  )
);

Примечание: Некоторые секции файла настроек содержат параметр readonly. Если он принимает значение true, то данные настройки нельзя изменить через API.

  • utf_mode - отвечает за кодировку сайта, значения value:
    • true - UTF8;
    • false - CP1251.
  • cache_flags - флаги кэширования:
    • config_options - время жизни кэша настроек сайта в секундах;
    • site_domain - время жизни кэша настроек домена в секундах.
  • cookies - отвечает за cookies на сайте.
  • exception_handling - секция отвечает за обработку ошибок.
  • connections - секция отвечает за параметры соединения с базой данных и другими источниками данных.

Таким образом, быстрая установка начнется с Шестого шага мастера установки продукта.


Регистрация продукта
32 / 253

С самого начала все коммерческие версии продуктов «1C-Битрикс» поставлялись в исходных текстах. Таким образом, предоставляется клиентам контроль над продуктом. Лицензия также предусматривает право на изменение исходных текстов.

Но все пробные версии продуктов «1C-Битрикс» поставлялись закодированные с помощью Zend Optimizer, и для работы пробной версии продукта требовалось установить Zend Optimizer на сервер. Это создавало проблемы при развертывании продукта и при установке пробных версий продукта на хостинге, пробные версии работали существенно медленнее, чем коммерческие версии в исходных текстах, закодированный код не компилировался оптимизаторами PHP кода.

Внимание! Начиная с версии 9.1, в продуктах «1C-Битрикс» для обеспечения 30-тидневного периода демо-версий и защиты решений партнеров используется собственный обфускатор PHP кода, который защищает несколько важных системных файлов в пробных версиях продуктов «1C-Битрикс», а также автоматически защищает решения партнеров. В коммерческих версиях по-прежнему все файлы остались в свободном исходном коде.

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

Лицензионный ключ - специальный ключ (последовательность символов), который подтверждает право на использование копии продукта.

Для демо-версии этот шаг не обязателен, но рекомендуется.

Внимание! С использованием одного и того же лицензионного ключа продукт «1C-Битрикс» можно произвести не более двух установок. Количество установок засчитывается при активации системы. При получении ошибки о превышении допустимого количества установок продукта необходимо обратиться в Техподдержку «1C-Битрикс».

Если установка не имеет доступа из сети и используется для разработки, то рекомендуется использовать опцию настройки главного модуля Установка для разработки (с версии 16.5.7). В этом случае установки для разработки при обновлении учитываются отдельно от публичных установок.

Переоформление лицензии с одного владельца на другого выполняется через Техподдержку компании 1С-Битрикс. При этом не имеет значение имеется ли на момент переоформления у клиента активная ТП или нет.


Регистрация коммерческого продукта
33 / 253

Внимание! С использованием одного и того же лицензионного ключа продукт «1C-Битрикс» можно установить не более двух раз. Продукт «1C-Битрикс» может быть временно установлен на дополнительный компьютер (ЭВМ) с целью использования исключительно для работ по разработке, тестированию и/или наполнению сайта при условии отсутствия любого «внешнего» доступа к ней (в том числе из сети Интернет или извне локальной сети пользователя). Указанная копия продукта «1C-Битрикс» должна быть немедленно удалена после завершения вышеперечисленных работ. При получении ошибки о превышении допустимого количества установок продукта необходимо обратиться в Техподдержку «1C-Битрикс».

Выполнив операцию регистрации продукта, вы получите доступ к бесплатным последним обновлениям системы, а также приоритетный доступ к службе Технической поддержки компании «1С-Битрикс» на период активности лицензии. Для неактивной лицензии техническая поддержка также осуществляется, но по менее строгому регламенту.

Кроме того, вы также получите доступ к закрытому форуму компании, где можно принять участие в обсуждении интересующей темы, а также вынести на обсуждение возникший вопрос.

Для регистрации продукта:

  • Перейдите в Панель управления.
  • Перейдите на страницу Marketplace > Обновление платформы. Откроется форма для получения обновлений.

В этой форме вы увидите сообщение об ошибке:

  • Нажмите кнопку Активировать ключ.

Откроется форма следующего вида:

Поля, отмеченные *, обязательны для заполнения.

  • Заполните поля:
    • Полное юридическое название компании-владельца продукта или ФИО частного лица: укажите название организации, которая является владельцем ключа. В случае если владельцем ключа является частное лицо, в данном поле указывается его имя.
    • Список адресов, включая тестовые, по которым будет доступна данная копия продукта "1С-Битрикс: Управление сайтом": укажите адреса сайтов, управление которыми будет осуществляться с помощью системы с данным лицензионным ключом. Адреса вводятся через запятую.
    • Телефон владельца данной копии продукта: укажите номер контактного телефона вместе с кодом города владельца продукта.
    • E-mail владельца для связи по вопросам лицензирования и использования программного продукта: укажите адрес электронной почты, по которому, в случае необходимости, сотрудники компании «1С-Битрикс» смогут связаться с вами.
    • Контактное лицо, ответственное за использование данной копии программного продукта: укажите ФИО ответственного контактного лица.
    • E-mail контактного лица: укажите адрес электронной почты контактного лица клиента.
    • Телефон контактного лица: укажите телефон контактного лица.
    • Прочая контактная информация: в данном поле вы можете указать дополнительную контактную информацию: адреса электронной почты, почтовый адрес, номера контактных телефонов и т.д.
    • У меня нет аккаунта на сайте www.1с-bitrix.ru, я хочу создать новый: если вы не являетесь зарегистрированным пользователем на сайте компании «1С-Битрикс», то установите флаг в данное поле. После активации лицензионного ключа вы будете зарегистрированы на сайте компании с указанными в нижеследующих полях регистрационными данными. Используя указанные регистрационные данные, вы можете обратиться в службу Технической поддержки компании «1С-Битрикс», а также получить доступ к закрытому форуму на сайте компании.
    • Я зарегистрирован на сайте…: отметьте эту опцию, если вы зарегистрированы на сайте www.1с-bitrix.ru и укажите ваш логин.
  • Нажмите Активировать ключ. Лицензия активируется.
  • Далее необходимо получить полнофункциональную версию системы без ограничения по времени работы. Нажмите Зарегистрировать продукт. Продукт будет зарегистрирован на указанные при активации данные:

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

После выполнения всех этих действий станет доступна информация о лицензии:


Регистрация демо-версии коммерческим ключом
34 / 253

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

Для этого необходимо:

  • Приобрести лицензию.
  • Ввести лицензионный ключ:

    1. на закладке Установка обновлений (Marketplace > Обновление платформы), нажав на кнопку Ввести лицензионный ключ

      2. либо

    2. на закладке Система обновлений страницы настроек Главного модуля (Настройки > Настройки продукта > Настройки модулей > Главный модуль) в поле Лицензионный ключ

  • После этого необходимо провести активацию ключа, как это было описано в уроке Регистрация коммерческого продукта. После коммерческой регистрации будут снято ограничение демо-версии на время её работы, таким образом вы получите полнофункциональный продукт.


Система обновлений
35 / 253

Система обновлений, как и техподдержка, осуществляется в течение года после регистрации приобретенной лицензии. Для получения в дальнейшем права на обновления необходимо оформить продление техподдержки и обновлений.

Примечание: Для получения обновлений демо-версии продукта, установленной на локальный компьютер, необходимо иметь доступ в Интернет.


Общие сведения
36 / 253

Система обновлений служит для осуществления взаимодействия между копией продукта (клиент) и сервером обновлений. Основными видами взаимодействия являются:

  • обновление модулей продукта до последней версии (это позволяет расширить функциональные возможности модулей и исправить обнаруженные в них ошибки);
  • загрузка новых модулей, которые доступны в соответствии с лицензией;
  • загрузка языковых файлов (файлов языкозависимых сообщений продукта на разных языках);
  • загрузка системы помощи на разных языках;
  • регистрация копии продукта с помощью лицензионного ключа;
  • загрузка исходных текстов скриптов модулей продукта;
  • добавление купонов на дополнительные сайты.

Установка обновлений выполняется со страницы Система обновлений (Marketplace > Обновление платформы).

Некоторые термины системы обновлений:

Ядро продукта - каталог /bitrix/modules/ (пути везде задаются относительно корневой папки, если явно не указано противное). Часто в понятие ядра продукта включается также структура базы данных продукта.

Служебная область - все подкаталоги каталога /bitrix/, за исключением каталогов /bitrix/modules/ (т.е. ядра продукта) и /bitrix/updates/. Часто в понятие служебной области включаются так же данные служебных таблиц базы данных (например, записи таблицы b_event_type).

Каталог системы обновлений - каталог /bitrix/updates/. Этот каталог предназначен исключительно для работы системы обновлений и не может использоваться в других целях.

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

Регистрация копии продукта - снятие с данной копии продукта ограничений, которые имеет демонстрационная версия (например, ограничение по времени работы).

Лицензионный ключ - специальный ключ (последовательность символов), который подтверждает право на использование копии продукта.

Купон на дополнительный сайт - специальный ключ (последовательность символов), который подтверждает право на создание одного дополнительного сайта в рамках данной копии продукта.

Сервер обновлений - сервер, который отдает обновления продукта системе обновлений. Адрес сервера обновлений задается на странице глобальных настроек главного модуля (должен иметь значение www.1c-bitrix.ru или www.bitrixsoft.com).

Важные замечания по работе системы обновлений

Система обновлений не изменяет публичную часть. Служебная область изменяется только в рамках необходимости, при этом существующие файлы и записи не изменяются (т.к. они уже могли быть изменены владельцем копии продукта под свои нужды). Ядро продукта может быть изменено системой обновлений сколь угодно сильно (при этом, конечно, обеспечивается обратная совместимость).

Важно! Если вы самостоятельно изменили хотя бы один файл ядра продукта или структуру базы данных, то автоматическая установка обновления может иметь непредсказуемый результат.

Система обновлений не собирает и не передает никаких конфиденциальных данных копии продукта, на которой она работает. Система обновлений обменивается с сервером обновлений исключительно техническими данными, напрямую необходимыми для корректной работы системы обновлений (например, текущие версии модулей или дата последнего обновления системы помощи).

Система обновлений производит технически сложную серьезную модификацию ядра продукта. Если эта модификация будет произведена с ошибками, то сайты, работающие на этом ядре, могут оказаться неработоспособными. Перед установкой обновлений рекомендуется убедиться в наличии резервной копии как базы данных, так и скриптов ядра продукта и служебной области. Рекомендуется для проведения процедуры обновления выбирать время, когда нагрузка на сервер минимальна. При возникновении проблем с установкой обновления вам необходимо незамедлительно обратиться в службу технической поддержки компании «1С-Битрикс».

Страница системы обновлений

После выбора в левом меню административной части сайта пункта Обновления вы попадаете на страницу системы обновлений.

Если на странице системы обновлений выводится сообщение о том, что лицензионный ключ не верен (или лицензия не найдена), то возможны следующие ситуации:

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

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

Если на странице системы обновлений выводится сообщение о том, что доступно обновление самой системы обновлений, то необходимо установить это обновление. До установки этого обновления остальной функционал системы будет недоступен.

Если в систему введен валидный активный лицензионный ключ и установлено последнее обновление самой системы обновлений, то на странице системы обновлений вы можете выполнить следующие действия:

  • Просмотреть и загрузить обновления модулей системы.
  • Просмотреть и загрузить языковые файлы.
  • Выполнить загрузку исходных текстов продукта, если позволяет лицензия. Перед загрузкой исходных текстов ядро продукта должно быть обновлено до последней версии (т.е. никакие обновления ядра продукта не должны быть доступны). Обратите внимание, что в случае медленного канала или большой загрузки сервера загрузка исходных текстов может занять некоторое время.
  • Выполнить активацию купона на продление технической поддержки, на добавление дополнительных сайтов или на переход на другую редакцию.
  • Включить или отключить установку бета-версий обновлений модулей.
  • Просмотреть журнал установки обновлений. Журнал содержит информацию о последних установленных обновлениях, включая информацию по статусам и ошибкам установки.

Дополнительная информация

  • Marketplace (документация)


Настройки системы обновлений
37 / 253

Настройки системы обновлений осуществляются на закладке Система обновлений страницы настроек Главного модуля (Настройки > Настройки продукта > Настройки модулей > Главный модуль)

  • Лицензионный ключ - указывается лицензионный ключ продукта. Если коммерческая версия была уже зарегистрирована, то в этом поле будет уже указан лицензионный ключ.
  • Установка для разработки - специальная опция для разработчиков, позволяющая устанавливать продукт без блокировки системы обновлений во время разработки.
  • Имя сервера, содержащего обновления - указывается адрес сервера обновлений. По умолчанию в этом поле уже указан сервер обновлений.
  • Для настройки обновления продукта через прокси-сервер необходимо заполнить соответствующие поля:
    • Адрес прокси для системы обновлений;
    • Порт прокси для системы обновлений;
    • Имя пользователя прокси;
    • Пароль прокси.
  • Усиленная проверка корректности установки обновлений - включение данной опции дает возможность контролировать корректность установки обновлений. Использование этой функции системы несколько замедляет процесс установки обновления, но позволяет получить информацию об успешности копирования тех или иных файлов. В случае некорректной установки будет выведено сообщение с описанием ошибки.
  • Загружать только стабильные обновления - некоторые обновления модулей системы доступны уже на стадии бета-тестирования. Эта опция соответствует пункту Включить установку только стабильных версий на закладке Дополнительно страницы Системы обновлений (Marketplace > Обновление платформы). Соответственно, если эта опция выключена, то будут загружаться бета-версии обновлений.

    Внимание! Не рекомендуется выключать эту опцию для работающих проектов. Бета-версии иногда содержат ошибки в коде, которые могут повлиять на работу вашего проекта негативным образом. Выключать ее можно для локальных установок с целью ознакомления с новым функционалом системы.

  • Автоматически проверять наличие обновлений - система может автоматически проверять выход новых обновлений. Периодичность проверки можно указать в выпадающем списке: Не проверять, Каждый день, Раз в неделю и Раз в месяц.
  • Остановить автоматическую проверку при возникновении ошибок - при отмеченной опции при возникновении ошибок автоматическая проверка обновлений будет остановлена.
  • Не использовать архиватор - при отмеченной опции файлы с обновлениями архивироваться не будут.
  • Продолжительность шага пошаговой загрузки обновления (сек) - указывается продолжительность шага загрузки в секундах для пошаговой загрузки файлов обновления.
Примечание: Для получения обновлений демо-версии продукта, установленной на локальный компьютер, необходимо иметь доступ в Интернет.

Дополнительная информация

  • Настройки главного модуля
  • Система обновлений (документация)


Обновление ядра продукта
38 / 253

Система обновлений производит технически сложную серьезную модификацию ядра продукта. Если эта модификация будет произведена с ошибками, то сайты, работающие на этом ядре, могут оказаться неработоспособными. При возникновении проблем с установкой обновления вам необходимо незамедлительно обратиться в службу технической поддержки компании «1С-Битрикс».

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

Для загрузки обновлений модулей системы выполните следующие действия:

  • С помощью меню Центра уведомлений, расположенного на административной панели вверху, перейдите на страницу Система обновлений (Marketplace > Обновление платформы):

  • Для установки всех обновлений модулей системы нажмите кнопку Установить рекомендуемые обновления.

Если вы не хотите устанавливать все обновления сразу, то на закладке Список обновлений отметьте только необходимые для установки обновления и нажмите кнопку Установить обновления.

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

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

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


Просмотр и загрузка языковых файлов
39 / 253

С помощью системы обновлений вы можете установить дополнительные языковые файлы интерфейса. Для этого выполните следующее:

  • Перейдите на закладку Список обновлений.
  • В секции опциональных обновлений отметьте необходимые языковые файлы.
  • Нажмите кнопку Установить обновления.

Контролировать процесс установки вы сможете по полосе прогресса. В результате будет выведено сообщение об успешной установке либо о возникших ошибках.

Примечание: Подробнее про установку и загрузку языков в систему смотрите в уроке Управление языками курсов Администратор. Базовый или Администратор сервиса Битрикс24 (коробочная версия).


Активация купона
40 / 253

Система «1C-Битрикс: Управление сайтом» позволяет создавать несколько сайтов с применением одной копии (лицензии) продукта, размещая ядро и базу данных системы в единственном экземпляре на сервере. Максимальное количество сайтов на одной копии продукта ограничено лицензией. Если необходимо создать дополнительные сайты сверх текущего максимального количества, то следует приобрести лицензии на дополнительные сайты.

При приобретении лицензий на дополнительные сайты вам выдаются купоны на дополнительные сайты (один купон - одна дополнительная лицензия). Дополнительные лицензии (и купоны соответственно) зависят от редакции продукта. Например, для создания дополнительного сайта в продукте редакции Эксперт необходимо приобрести лицензию (купон) на дополнительный сайт для редакции Эксперт.

Если вы уже используете «Старт», «Стандарт» или другую редакцию продукта, то вы можете расширить возможности вашего сайта, осуществив переход на более высокую редакцию продукта. Для этого вам необходимо приобрести купон для перехода на нужную вам редакцию.

Система «Битрикс24» в коробке (редакции «Корпоративный портал» и «Холдинг») включает в себя лицензию на 25 пользователей. Для увеличения количества пользователей портала необходимо приобрести лицензию на необходимое количество пользователей. Также можно приобрести лицензию на неограниченное количество пользователей.

При приобретении лицензий на дополнительных пользователей вам выдается купон на требуемое количество пользователей портала. Дополнительные лицензии (и купоны соответственно) не зависят от редакции портала.

Если вы уже используете редакцию «Корпоративный портал», то вы можете расширить возможности вашего портала, осуществив переход на более высокую редакцию продукта - «Холдинг». Для этого вам необходимо приобрести купон для перехода на нужную вам редакцию.

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

После получения купона вам необходимо его активировать, для этого:

  • Откройте страницу Система обновлений (Marketplace > Обновление платформы).
  • Перейдите на закладку Активация купона.

  • Введите купон в соответствующее поле и нажмите кнопку Активировать купон.


Типичные ошибки
41 / 253

При попытке обновления выдаётся ошибка "Ошибка соединения с сервером обновлений: [110] Connection timed out."

Ошибка свидетельствует о том, что скрипт обновления не может подключиться к серверу обновлений www.bitrixsoft.com на порт 80. Причины могут быть следующие:

  • не доступны функции работы с сокетами, в частности, fsockopen();
  • на сервере запрещены исходящие соединения к 80 порту;
  • недостаточный объем памяти на сервере (Часто проявляется на VPS с виртуализацией OpenVZ и 256 Мб RAM.);
  • проблема в работе сети.

Вам необходимо обратиться к администратору сервера, предоставив описание ошибки.

Ошибка при обновлении: [SITE_LICENSE_VIOLATION] Превышено количество лицензированых сайтов

Эта ошибка свидетельствует о том, что в системе либо не зарегистрировано ни одного сайта, либо все сайты деактивированы, либо превышено количество активных сайтов, разрешенных текущей лицензией.

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

Ошибка при обновлении [ERROR_WRONG_CODE]

Система обновлений продукта привязывается к конкретной установке и "запоминает" состояние системы после очередного обновления. Ошибка возникает в том случае, если текущее состояние не соответствует тому, которое было на момент последнего обновления. Этот механизм призван пресечь попытки обновления на одном лицензионном ключе неограниченное количество установок продукта.

Согласно лицензионному соглашению, на каждый лицензионный ключ допускается две установки системы: одна публичная и одна локальная (для разработчика), но недоступная из Интернета. С учетом этого система настроена так, что сохраняет данные о двух установках. При этом, если не переносить копию с локальной машины на сервер и назад - можно обновлять независимо обе копии, проблем не возникнет. Если же вам необходимо переносить продукт на локальную машину, то следует обновлять только одну копию из двух: либо на сервере, либо локальную (зависит от ваших предпочтений).

Аналогичным образом следует поступать при переносе сайта на новый сервер: скопировать структуру файлов и БД на новый сервер, после этого, не обновляя продукт на старом, удалить его сразу после обновления DNS.


Перенос продукта
42 / 253

Особенности платформы Bitrix Framework в плане хостинга

  • Наличие достаточного места на диске для создания большого количества файлов. Сегодня минимальное требование для проекта с большим числом картинок — от 300 Мбайт. (Важно помнить, что каждая картинка также занимает место на диске, а в большом проекте таких картинок может быть очень много.)
  • Наличие необходимых ресурсов на сервере — памяти, выделяемой скриптом, наличие акселератора PHP и некоторых других настроек. Необходимо как минимум 128 Мбайт памяти, выделяемой для PHP, чтобы могли работать серьезные проекты (например, интернет-магазины). Она расходуется на построение структуры данных и выполнение кода при вызове каждой страницы сайта.
  • Желательность двухуровневой архитектуры для работы сайтов с высокой посещаемостью или серверов с высокой загрузкой. Для этого устанавливается дополнительный веб-сервер (обычно NGINX), который принимает все запросы. Это позволяет стабилизировать использование памяти за счет ограничения числа процессов Apache и получить отказоустойчивую систему.
  • Достаточно быстрый сервер баз данных. Для работы сайтов необходимо, чтобы сервер баз данных успевал обрабатывать запросы за короткое время.
  • Желательность работы PHP и FTP/SSH от одного и того же пользователя. При разработке сайта обычно работают с файлами по FTP/SFTP-протоколу. Вместе с тем при работе в самой системе она создает файлы от имени того пользователя, под которым работает PHP. При несовпадении этих пользователей могут возникнуть серьезные проблемы в работе сайта или в возможностях его модификации.

Во многом соответствие сервера требованиям системы можно протестировать модулем Монитор производительности.

Для успешной установки и полноценной работы продукта необходимы следующее:

  • Установка может быть сделана только в корневую папку веб сервера.
  • Необходимо использовать веб сервер Apache 1.3.0 и выше.
  • Хостер должен разрешать использование .htaccess.
  • Необходимо использовать PHP 5.3+.
  • safe_mode должен быть отключен (инсталлятор блокирует установку продукта в этом режиме).
  • short_open_tag включён.
  • memory_limit не ниже 32 Мб для редакции "Старт", не менее 64 Мб для редакции "Бизнес".
  • Наличие функций работы с сокетами для обновления продукта.
  • Наличие библиотек: Zlib (компрессия - для модуля компрессии и ускорения загрузки обновлений), GD lib (отображение графиков), Free Type (работа CAPTCHA).
  • Версия MySQL 5.0 и выше, Oracle 10g и выше или MSSQL 10.0 (2008) и выше.
  • Для установки Oracle-версии продукта удостоверьтесь в наличии клиентской части Oracle 10g (или выше) и создайте нового пользователя.
  • Крайне рекомендуется наличие акселератора PHP (OPcache, XCache, APC и другого). Рекомендуется OPcache, входит в состав PHP v5.5+.

    Внимание:
    1. Есть особенность использования прекомпилятора XCache, его параметр xcache.cacher для корректной работы продукта должен быть Off.
    2. eAccelerator не совместим с PHP v5.3+ и больше не поддерживается в продуктах «1C-Битрикс» с версии ядра 15.0.13. Подробнее см. в блоге разработчиков.

  • режим работы PHP как модуля Apache предпочтительнее (CGI настоятельно не рекомендуется, так как он не поддерживает работу акселератора. Лучше использовать FastCGI.)
Примечание: не рекомендуется использовать модуль suhosin или mod_security т.к. в ряде случаев эти модули препятствуют нормальной работе продуктов.

Продукты Bitrix Framework поставляются в исходных кодах. Поэтому нет необходимости в модулях zend optimizer или zend guard loader.

Протестировать конфигурацию сервера можно специальным скриптом bitrix_server_test.php, который необходимо запустить на своём сервере.

Примечание: Можно ознакомится с примером анализа производительности PHP.

Рекомендуется ознакомиться с опытом настройки и тестирования серверов в блогах Александра Демидова и Дениса Шаромова, а так же с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании "1С-Битрикс".


Перенос продукта «1C-Битрикс» v.12 и выше
43 / 253

Для переноса сайта на удаленный сервер (равно как и с удаленного сервера на локальную машину) можно воспользоваться специальным механизмом резервного копирования, который предоставляет следующие возможности:

  • выбор подходящего сценария для архивации в зависимости от технических возможностей сервера (локальный бекап, бекап в облако);
  • создание архивной версии файлов сайта (формат .tar.gz, зашифрованный архив .enc);
  • включение или исключение из архива папки, содержащей ядро продукта;
  • включение или исключение из архива публичной части;
  • исключение из архива файлов, размер которых превышает некоторое заданное значение;
  • создание дампа базы данных (формат .tar.gz, зашифрованный архив .enc);
  • исключение из дампа базы данных таблиц статистики и поискового индекса;
  • задание длительности шага архивации и интервала между ними;
  • отключение компрессии архива для снижения нагрузки на сервер;
  • проведение проверки целостности архива после завершения.

Обратите внимание! Механизм резервного копирования может быть использован только для базы данных MySQL.

Для переноса сайта с локальной машины на удаленный хостинг или с одного удаленного хостинга на другой при помощи встроенной функции резервного копирования и специального скрипта restore.php, необходимо предварительно:

  • Проверить:
    • соответствие удаленного хостинга минимальным техническим требованиям продукта;
    • наличие прав не ниже (0644 – для файлов и 0755 для папок) на все файлы в корне сайта у пользователя, под которым работает Apache (PHP).
  • При наличии активной лицензии настоятельно рекомендуется обновить исходную копию продукта до последней версии.

Следующий шаг - создание архива сайта. Выполнить действия по созданию архива можно на странице Резервное копирование (Настройки > Инструменты > Резервное копирование). Подробнее о создании архива сайта см. в уроках Резервное копирование курсов Администратор. Базовый и Администратор «Битрикс24 в коробке».

После этого можно непосредственно приступать к переносу сайта. Выполните действия в следующем порядке:

  1. Загрузите файл с архивом в корневую директорию сайта на удаленном сервере или на локальной машине в зависимости оттого, откуда и куда вы переносите сайт. Если исходный сайт доступен из интернета, то лучше скачивать архив с дальнего сервера. При этом скачиваются все части архива автоматически. При переносе с локального на хостинг надо будет вручную положить все части рядом с restore.php.

    Важно! Если файл архива содержит в себе полную копию сайта (и ядро, и публичную часть), то на сервере систему «1C-Битрикс» устанавливать не нужно.

  2. Скачайте скрипт restore.php, который доступен по ссылке в справке внизу страницы Список резервных копий (Настройки > Инструменты > Резервное копирование > Список резервных копий). Загрузите скрипт на сервер в корень сайта.

    3. Примечание: По этой ссылке расположен скрипт, соответствующий вашей версии дистрибутива. Свежую версию скрипта можно всегда скачать с сайта 1С-Битрикс.

  3. В адресной строке браузера наберите http://ваш_сайт/restore.php. Нажмите кнопку Далее.

  4. В открывшемся диалоговом окне выберите нужный вариант расположения файла с архивом и нажмите кнопку Далее.

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

    При размещении архива в облаке

    Если архив сайта был размещен на сайте (в облаке) клиента, то необходимо выбрать вариант Скачать резервную копию с дальнего сайта и указать путь к архиву:

    Если архив сайта был размещен в облаке 1С-Битрикс, то необходимо выбрать вариант Развернуть резервную копию из облака "1С-Битрикс" и указать активный лицензионный ключ:

  5. После скачивания архива будет предложено указать пароль (если архив был зашифрован на этапе резервного копирования) для распаковки файлов:

  6. После завершения распаковки файлов необходимо будет указать настройки соединения с базой данных, если при создании резервной копии был создан дамп базы данных.

    Укажите необходимые параметры, нажмите кнопку Восстановить и ждите завершения работы сценария.
  7. После успешной распаковки в открывшемся диалоговом окне нажмите кнопку Удалить архив и служебные скрипты:

    Во избежание повреждения сайта или утечки информации будут удалены файлы:
    • /restore.php
    • /файл резервной копии (файл с расширением .tar.gz или .enc)
    • /bitrix/backup/дамп базы (файл с расширением .sql)
  8. Восстановление завершено.

Некоторые особенности:
  • Если в качестве WEB-сервера используетя IIS, то учтите, что файл web.config так же архивируется. Необходимо удалить извлеченный из архива файл web.config. Ваш сервер создаст новый под себя.
  • После переноса может не работать ЧПУ. В этом случае надо переименовать .htaccess.restore в .htaccess.

Примечание: О восстановление сайта в административном интерфейсе можно прочитать в одноименном уроке здесь.


Перенос сайтов в многосайтовой конфигурации
44 / 253

Лицензия допускает создание двух сайтов на одном экземпляре системы. Перенос системы на другой хостинг в двухсайтовой конфигурации имеет свои особенности.

Прежде всего, многосайтовость должна быть настроена на разных доменах.

Во-вторых, несколько меняется общий порядок действий:

  • Создайте резервную копию главного сайта с ядром, файлами и базой:

  • Перенесите главный сайт через restore.php.
  • Создайте резервную копию второго сайта без ядра и базы, только файлы. При создании копии исключите из архива папки /bitrix и /upload:

  • Перенесите второй сайт через restore.php.
  • С помощью файла symlink.php сделайте связку с первым сайтом.
  • Настройте пути и доменные имена для каждого сайта:


Перенос продукта «1C-Битрикс» до v.12
45 / 253

Для переноса сайта на удаленный сервер (равно как и с удаленного сервера на локальную машину) можно воспользоваться специальным механизмом резервного копирования, который предоставляет следующие возможности:

  • выбор подходящего сценария для архивации в зависимости от технических возможностей сервера;
  • создание архивной версии файлов сайта (формат .tar.gz);
  • включение или исключение из архива папки, содержащей ядро продукта;
  • включение или исключение из архива публичной части;
  • исключение из архива файлов, размер которых превышает некоторое заданное значение;
  • создание дампа базы данных (формат .tar.gz);
  • исключение из дампа базы данных таблиц статистики и поискового индекса;
  • задание длительности шага архивации и интервала между ними;
  • отключение компрессии архива для снижения нагрузки на сервер;
  • проведение проверки целостности архива после завершения.

Обратите внимание! Механизм резервного копирования может быть использован только для базы данных MySQL.

Для переноса сайта с локальной машины на удаленный хостинг или с одного удаленного хостинга на другой при помощи встроенной функции резервного копирования и специального скрипта restore.php, необходимо предварительно:

  • Проверить:
    • соответствие удаленного хостинга минимальным техническим требованиям продукта;
    • наличие прав не ниже (0644 – для файлов и 0755 для папок) на все файлы в корне сайта у пользователя, под которым работает Apache (PHP).
  • При наличии активной лицензии настоятельно рекомендуется обновить исходную копию продукта до последней версии.

Следующий шаг - создание архива сайта. Выполнить действия по созданию архива можно на странице Резервное копирование (Настройки > Инструменты > Резервное копирование). Подробнее о создании архива сайта см. в уроке Резервное копирование.

После этого можно непосредственно приступать к переносу сайта. Выполните действия в следующем порядке:

  • Загрузите файл с архивом в корневую директорию сайта на удаленном сервере или на локальной машине в зависимости оттого, откуда и куда вы переносите сайт.Если исходный сайт доступен из интернета, то лучше скачивать архив с дальнего сервера. При этом скачиваются все части архива автоматически. При переносе с локального на хостинг надо будет вручную положить все части рядом с restore.php.

    Важно! Если файл архива содержит в себе полную копию сайта (и ядро, и публичную часть), то на сервере систему «1С-Битрикс» устанавливать не нужно.

  • Скачайте скрипт restore.php, который доступен по ссылке вверху страницы резервного копирования (Настройки > Инструменты > Резервное копирование > Список резервных копий). Загрузите скрипт на сервер в корень сайта.
  • В адресной строке браузера наберите http://ваш_сайт/restore.php. Нажмите кнопку Далее.

  • В открывшемся диалоговом окне выберите нужный вариант расположения файла с архивом и нажмите кнопку Далее.

    • Примечание: Если архив сайта был размещен в облаке клиента, то необходимо выбрать вариант Скачать архив с дальнего сайта и указать путь к архиву:

  • После завершения распаковки файлов будет предложено указать настройки соединения с базой данных, если при создании резервной копии был создан дамп базы данных.

    Примечание: Если архив содержит резервные копии данных из облака, можно их сохранить локально в папку /upload/, при этом они будут отвязаны от облака. Или оставить как есть.

    Укажите необходимые параметры, нажмите кнопку Далее и ждите завершения работы сценария.
  • После успешной распаковки в открывшемся диалоговом окне нажмите кнопку Удалить архив и служебные скрипты:

    Во избежание повреждения сайта или утечки информации будут автоматически удалены файлы:
    • /restore.php
    • /файл резервной копии (файл с расширением .tar.gz)
    • /bitrix/backup/дамп базы (файл с расширением .sql)
    После этого вы автоматически попадете в публичный раздел восстановленного сайта.

Некоторые особенности:
  • Если в качестве WEB-сервера используетя IIS, то учтите, что файл web.config так же архивируется. Необходимо удалить извлеченный из архива файл web.config. Ваш сервер создаст новый под себя.
  • После переноса может не работать ЧПУ. В этом случае надо переименовать .htaccess.restore в .htaccess.


Возможные ошибки при переносе сайта
46 / 253

Перенос сайта нештатными средствами

Перенос сайта на хостинг лучше всего выполнять встроенными в Bitrix Framework средствами резервного копирования/восстановления.

Несмотря на то, что фактически сайт на «1С-Битрикс: Управление сайтом» представляет из себя набор файлов и базу данных, копирование файлов напрямую на удаленный сервер в большинстве случаев будет не верным решением. Из-за большого количества мелких файлов такое копирование может растянуться на несколько часов. Кроме того, использование стандартных механизмов позволяет избежать последующих возможных проблем с правами доступа к файлам сайта.

Среди часто возникающих проблем:

  1. Веб-сервер не может записать в нужную ему папку или удалить временные файлы. Возможные последствия:

    • невозможность обновления продукта;
    • невозможность редактировать сайт через веб-интерфейс;
    • некорректная работа компонента кэширования;
    • и другие проблемы.

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

      Самым простым решением в этом случае будет установка прав на все файлы и папки 777 (для Unix платформы) либо любой другой способ дать PHP запись на эти файлы.

  2. Нет возможности отредактировать через ftp/ssh файлы, созданные через веб-интерфейс. В этом случае многим веб-разработчикам будет сложно дорабатывать сайт.

    Одним из простых, но не всегда работающих решений, является установка параметров в файле dbconn.php, позволяющих всем редактировать создаваемые через Bitrix Framework файлы.

    define("BX_FILE_PERMISSIONS", 0666);
define("BX_DIR_PERMISSIONS", 0777);

    Однако для файлов, созданных через ftp/ssh, вам придется периодически изменять права вручную. Либо, если хостинг это поддерживает, устанавливать параметр umask.

Настройки PHP

При переносе сайта на хостинг могут возникнуть различные нюансы из-за настроек PHP:

  • Проблемы с несоответствием владельца файлов: на ряде хостингов PHP работает от имени одного пользователя, а доступ по ftp/ssh предоставлен другому. В этом случае файлы, созданные одним методом, могут быть недоступны для модификации, или вообще вызывать ошибку выполнения из-за нарушения параметров безопасности.
  • Проблемы с настройками безопасности: возможны различные варианты подключения PHP к веб-серверу, и в некоторых из этих вариантов устанавливаются жесткие ограничения на владельца файла и права на файл. В этом случае возможны ошибки с кодом 500, и разобраться в проблеме вам поможет только журнал ошибок веб-сервера.

    Пример: На многих хостингах, если PHP подключен как CGI, требуется соответствие владельца файла и прав на файл. Если владелец файла – не ваш аккаунт или права на файл допускают запись всем пользователям, PHP будет вызывать ошибку. В этом случае необходимо установить корректные права на файлы и папки, а также правильные параметры в dbconn.php.

  • Ограничения на время выполнения скрипта или на другие выделяемые ресурсы. В этом случае сайт может вести себя странно – то открываться, то не открываться и показывать белый экран.

    Пример: особо чувствительны к размеру памяти и времени выполнения различные скрипты импорта-экспорта данных. Если у вас возникают ошибки – проверяйте доступность ресурсов на хостинге, в случае их нехватки смените хостера.

  • Проблемы с использованием кодировки utf-8 на хостинге. Выясните, поддерживается ли она (необходимо наличие библиотеки mbstring и возможность установки параметра pgp: mbstring.func_overload=2).
  • Другие проблемы, специфичные для вашего хостера. Для их устранения рекомендуем заранее протестировать работу сайта на выбранном вами хостинге и заручиться контактами специалистов службы поддержки провайдера.

Возможные проблемы при работе с многосайтовостью в Bitrix Framework

Проверьте, что ваш хостинг позволит огранизовать многосайтовость выбранным вами методом. Не все провайдеры позволяют корректно (для Bitrix Framework) создавать дополнительные сайты. Информацию об способах организации многосайтовости можно получить в учебном курсе Многосайтовость.

Проблемы с почтой

Некоторые хостинги не позволяют отправлять почту без авторизации. В этом случае для отправки письма с сайта вам необходимо будет переопределять функцию отправки почту в соответствии с документацией к продукту.

Распакованный сайт недоступен

После распаковки резервной копии на всём сайте отображается только форма авторизации. Возможные причины и решения:

  • Некорректное значение поля Путь к корневой папке веб-сервера для этого сайта в настройках сайтов (Настройки > Настройки продукта > Сайты > Список сайтов).

    Решение: в настройках сайта изменить значение поля Путь к корневой папке веб-сервера для этого сайта на соответствующий путь на новом хостинге, нажав на ссылку Вставить текущий. Оставьте поле пустым, если все сайты работают на одном веб-сервере.

  • Если перенос осуществлялся простым копированием файлов (FTP/SSH), мог не скопироваться файл .access.php. В данном файле хранятся права доступа групп пользователей к сайту, если данного файла нет, то для всех пользователей устанавливается право Запрещено.

    Решение 1: в корень сайта положить файл .access.php с содержимым:

    <?  $PERM["/"]["*"]="R"; ?>

    либо

    Решение 2: через файловый менеджер продукта в свойствах корневой папки сайта на вкладке Доступ установить для группы Все пользователи (в том числе неавторизованные) право Чтение.

Не полный архив

При просмотре архива, созданного штатной системой резервного копирования, через WinRar видно, что файлов в архиве гораздо меньше, чем на сайте.

Причина: дело в том, что у формата tar есть несколько диалектов. Система пакует архив в формате GNU tar, как это делает по умолчанию tar в Linux. WinRar понимает tar, но конкретно этот диалект поддерживает не полностью.

Резервный архив должен распаковываться системным restore.php, скачанным со страницы резервного копирования. Если и в этом случае часть файлов утеряна, проблему следует решать через техподдержку.

Ошибка ERROR 1062 (23000)

При распаковке резервной копии происходит ошибка: ERROR 1062 (23000) at line 1247: Duplicate entry '2-?' for key 2.

Причина: Ошибка происходит, если кодировка, в которой сделан архив, отличается от используемой на новом сервере баз данных.

  • Кодировка архива устанавливается в зависимости от содержимого файла /bitrix/php_interface/after_connect.php, например:
    <?
$DB->Query("SET NAMES 'utf8'");
?>
    т.е архив будет создаваться в кодировке utf8.
  • Кодировку сервера баз данных можно увидеть в параметре character_set_server после выполнения SQL-запроса:
    show variables where Variable_name = 'character_set_server';

Обойти или устранить эту ошибку можно двумя способами:

  • В настройках нового сервера баз данных изменить кодировку в параметре character_set_server на ту, в которой сделан архив.

    Внимание! За выполнением этой операции возможно придется обратиться к администратору сервера.

  • Можно открыть архив в текстовом редакторе и в самое начало вставить строку:
    SET NAMES `utf8`;
    Кодировка выбирается в зависимости от кодировки архива.

    Внимание! Этот способ работает только в случае небольших дампов (которые успевают импортировать за один шаг).

Ошибки в .htaссess

Часть ошибок (например: ошибка 404 при переходе подробную информацию новостей), возникающих при переносе сайтов связана с тем, что при переносе файл .htaссess переименовывается с добавлением "_". Для решения проблемы достаточно проверить имя файла и, при обнаружении ошибки, восстановить его.


Дополнительные моменты
47 / 253

В главе рассказывается о различных моментах в работе продукта: от настройки сервера до ошибок, возникающих при работе пользователей и функционировании баз данных.

Удаление приложения

Удаление приложения на удаленном компьютере состоит в удалении базы данных и всех файлов и папок из корневой папки вашего веб-сервера.


Необходимый уровень прав на сервере
48 / 253

Настройка прав на сервере хостинг-провайдера может быть индивидуальна, но прежде всего должны быть установлены права на чтение/запись из скрипта для пользователя, под которым запущен веб-сервер Apache.

При этом на разделяемом хостинге другие пользователи на этой же машине не должны иметь права на чтение/запись в ваши файлы через свои скрипты. Также желательно, чтобы пользователь по FTP мог перезаписывать эти файлы, и в то же время файлы, закаченные по FTP, могли быть перезаписаны из скрипта.

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

На некоторых хостингах процесс сервера запускается по умолчанию под пользователем nobody:группа. Файлы, которые пользователь хостинга хранит на своей машине, должны быть доступны Apache. Это означает, что они либо имеют атрибут чтение для всех, либо же пользователь-владелец файлов обязан принадлежать к той же самой группе, что и сервер. В последнем случае файлы должны быть доступны для чтения членами группы (именно такие права для них устанавливают по умолчанию FTP-серверы). При таком подходе страдает безопасность: раз все пользователи принадлежат к одной и той же группе, то они могут читать файлы друг друга.

Представим, что пользователь открыл в браузере страницу, запустившую CGI-скрипт. Так как скрипт в действительности запустил сервер Apache, запущенный под nobody, то он будет выполняться с правами этого пользователя. Следовательно, для того чтобы скрипт смог записать какой-нибудь файл в директорию хостинг-клиента, для нее должен стоять атрибут записи для членов группы. Мы видим, что при таком подходе хостинг-пользователи также могут и изменять файлы друг друга.

«1С-Битрикс: Управление сайтом» работает с любым уровнем прав, который вы указали ему при настройке (установке).

Чтобы продукт корректно работал с папками и файлами с заданным CHMOD (писал и создавал), вам нужно установить в /bitrix/php_interface/dbconn.php следующие константы:

define("BX_FILE_PERMISSIONS", 0644);
define("BX_DIR_PERMISSIONS", 0755);

Это типовые настройки прав на большинстве хостингов. Если возникают какие-то проблемы с работой, то обращайтесь в техническую поддержку вашего хостинга.

Самостоятельно установить нужный уровень прав можно, используя команду CHMOD в консольном режиме.

Следующий вызов устанавливает уровень прав доступа и для файлов, и для папок:

chmod -R 644 *

Для установки прав только на папки можно использовать следующий код:

find . -type d -exec chmod 0755 {} ';'

Если надо установить разные права на папки и файлы, то выполните следующий скрипт:

<?php
define("BX_FILE_PERMISSIONS", 0644);
define("BX_DIR_PERMISSIONS", 0755);

function chmod_R($path) {

   $handle = opendir($path);
   while ( false !== ($file = readdir($handle)) ) {
     if ( ($file !== ".") && ($file !== "..") ) {
       if ( is_file($path."/".$file) ) {
         chmod($path . "/" . $file, BX_FILE_PERMISSIONS);
       }
       else {
         chmod($path . "/" . $file, BX_DIR_PERMISSIONS);
         chmod_R($path . "/" . $file);
       }
     }
   }
   closedir($handle);
}

$path=dirname(__FILE__);
umask(0);
chmod_R($path);
echo $path;
?>

Для установки рекурсивно прав раздельно на файлы и папки можно использовать некоторые программы FTP клиентов. Например, FlashFXP версии 3.хх.

FlashFXP позволяет также разделять права для файлов и папок, но выполняет смену прав медленнее.

Обратите внимание на установки соответствующих флагов:

Separately set File and Folder attributes (Раздельно устанавливать права на файлы и папки);
Apply changes to all subfolders and files (Рекурсивная установка прав на подпапки и файлы)

Для каждой из установок настраивается свой уровень:

Установка прав на папки | Установка прав на файлы

Обратите внимание! Модуль Управление структурой позволяет просмотреть права на доступ к файлам и папкам, установленные на уровне системы.

При просмотре файловой структуры в Менеджере файлов в столбце Права на доступ отображается уровень прав на доступ к файлам и папкам, информация о владельце и группе пользователей (для *NIX).


Использование файлов .htaccess
49 / 253

.htaccess (от англ. hypertext access) - файл дополнительной конфигурации веб-сервера Apache. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельном каталоге без изменения главного конфигурационного файла httpd.conf.

Файл .htaccess является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах, если только эти директивы не переопределены директивами нижележащих файлов .htaccess. Для того, чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла httpd.conf (значение директивы AllowOverride должно быть установлено как All). Пути к файлам и каталогам должны указываться от корня сервера.

При внесении изменений в файл .htaccess нет необходимости перезапускать сервер. Файл .htaccess проверяется при каждом обращении к серверу, так что изменения вступают в силу сразу после их внесения. Так как файл является служебным, он не доступен пользователям из веб-браузера.

Обратите внимание! При установке на шаге предварительной проверки производится проверка обработки файлов .htaccess.

В демонстрационном сайте файл .htaccess по умолчанию содержит следующие директивы:

Options -Indexes
ErrorDocument 404 /404.php

<IfModule mod_php5.c>
  php_flag allow_call_time_pass_reference 1
  php_flag session.use_trans_sid off

  #php_value display_errors 1

  #php_value mbstring.func_overload 2
  #php_value mbstring.internal_encoding UTF-8
</IfModule>

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} [\xC2-\xDF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xE0[\xA0-\xBF][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} \xED[\x80-\x9F][\x80-\xBF] [OR]
RewriteCond %{REQUEST_FILENAME} \xF0[\x90-\xBF][\x80-\xBF]{2} [OR]
RewriteCond %{REQUEST_FILENAME} [\xF1-\xF3][\x80-\xBF]{3} [OR]
RewriteCond %{REQUEST_FILENAME} \xF4[\x80-\x8F][\x80-\xBF]{2}
RewriteCond %{REQUEST_FILENAME} !/bitrix/virtual_file_system.php$
RewriteRule ^(.*)$ /bitrix/virtual_file_system.php [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-l
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
  RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]
  RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]
</IfModule>

<IfModule mod_dir.c>
  DirectoryIndex index.php index.html
</IfModule>

<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"
</IfModule>
Внимание! Для активизации закомментированных PHP директив необходимо снять знак комментария (#) в начале строки. Если на вашем сервере Apache не установлено разрешение на использование PHP-флагов, выполнение данных директив приведет к возникновению внутренней ошибки (500). В случае возникновения ошибки необходимо снова закомментировать директивы, поместив в начало каждой знак #.

Для остальных PHP директив, не обозначенных знаком комментария (#), добавлена проверка на наличие необходимых модулей Apache в системе. Выполнение данных директив не приведет к возникновению ошибки в системе.

  1. PHP директива php_flag session.use_trans_sid off производит отключение подстановки идентификатора сессии в ссылке на сайте.
  2. Значение PHP флага php_value display_errors 1, указывает на то, что включено разрешение на вывод сообщений о возникновении ошибок. Директива php_value error_reporting определяет уровень ошибок, при возникновении которых будет выводиться сообщение. С помощью указанных директив можно настроить режим вывода интерпретатором PHP сообщений об ошибках.
  3. Директивы php_value mbstring.func_overload 2 и php_value mbstring.internal_encoding UTF-8 управляют настройкой библиотеки mbstring.
  4. Блок директив IfModule mod_rewrite.c - это настройка правил для mod_rewrite.
  5. Директива AddType application/x-httpd-php .ico определяет обработку расширения ico как php-файлов.
  6. Директива ExpiresActive on включает кеширование изображений, позволяющее ускорить их загрузку при повторном обращении к страницам сайта.
    Директивы ExpiresByType image/jpeg "access plus 3 day", ExpiresByType image/gif "access plus 3 day", ExpiresByType image/png "access plus 3 day", ExpiresByType text/css "access plus 3 day", ExpiresByType application/javascript "access plus 3 day" в свою очередь, определяют формат изображений, стилей, скриптов и срок, на который будет произведено кеширование. По умолчанию, выполняется кеширование файлов формата .jpeg, .gif, .png, css и .js сроком на 3 дня.
Внимание! После внесения изменений, файл .htaccess должен быть сохранен в UNIX-формате (для оболочки FAR опция Сохранить как UNIX-текст).

Авторизация в режиме CGI

В некоторых случаях может не работать авторизация при обмене данными с 1С. Часто проблема возникает в результате работы php в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в php. Можно это проверить, посмотрев phpinfo() в разделе Server API: CGI.

Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Для этого выполните следующие действия:

  • В корне сайта в файл .htaccess добавьте строки:
        RewriteEngine on
    RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L]
  • Закоментируйте следующие строки в файле bitrix/admin/.htaccess, которые отключают mod_rewrite:
        #<ifmodule mod_rewrite.c="">
    # RewriteEngine Off
    #</ifmodule>
  • В файл bitrix/php_interface/dbconn.php добавьте строки:
        $remote_user = $_SERVER["REMOTE_USER"]
    ? $_SERVER["REMOTE_USER"] : $_SERVER["REDIRECT_REMOTE_USER"];
    $strTmp = base64_decode(substr($remote_user,6));
    if ($strTmp)
        list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':', $strTmp);

Для проверки работоспособности HTTP-авторизации воспользуйтесь скриптом.

Внимание! Данный вариант обхода не всегда может решить проблему. Если при выполнении всех рекомендаций HTTP-авторизация не заработала, то следует детально разбираться с проблемой.


Ошибки подключения к БД
50 / 253

При возникновении ошибки подключения к базе данных на экран выдается сообщение вида:

Для решения проблемы следует:

  • проверить параметры подключения к базе данных (файл /bitrix/php_interface/dbconn.php);
  • проверить доступность базы данных.

Внешний вид сообщения об ошибке определяется в файле /bitrix/modules/main/include/dbconn_error.php:

<br>
<table cellpadding="1" cellspacing="0" width="35%" bgcolor="#9C9A9C">
    <tr>
        <td><table cellpadding="5" cellspacing="0" width="100%">
            <tr>
                <td bgcolor="#FFFFFF" align="center"><FONT face="Verdana, Arial, Helvetica, sans-serif" size="-1">
                <font color="#FF0000"><b><?echo "Error connecting to database."?></b></font><br>Please try again.</font></td>
            </tr>
        </table></td>
    </tr>
</table>
<br><br><br>

Для проверки доступности базы данных можно использовать, в частности, MySQLGUI - интерфейс управления для Windows, доступный для скачивания на странице http://www.mysql.ru/download/.


Ошибки запросов к БД
51 / 253

При возникновении ошибок запросов к базе данных на экран выдается сообщение вида:

Стандартный вид данного сообщения определяется в файле /bitrix/php_interface/dbquery_error.php.

Иногда возникает ситуация, когда сайт перестает отвечать, и посетителям отображается пустая страница. В этом случае рекомендуется открыть файл bitrix/php_interface/dbconn.php, содержащий параметры соединения с базой данных, и установить значение параметра $DBDebug = true;

<?
define("DBPersistent", true);
$DBType = "mysql";
$DBHost = "localhost:31006";
$DBLogin = "root";
$DBPassword = "";
$DBName = "bsm_demo";
$DBDebug = true;
$DBDebugToFile = false;

set_time_limit(60);

define("BX_FILE_PERMISSIONS", 0644);
define("BX_DIR_PERMISSIONS", 0755);
@ini_set("memory_limit", "64M");
?>

В результате будет получен код ошибки, содержащий, как правило, названия поврежденных таблиц базы данных.

Запуск утилиты perror.exe с кодом ошибки (файл perror.exe хранится в каталоге mysql/bin) позволяет получить описание ошибки по ее коду:

Примечание: Для ошибки с кодом 28 выводится следующее описание:

Данное сообщение означает, что на диске, где установлена база данных, недостаточно места для ее работы.

Если речь идет о повреждении базы данных, то рекомендуется воспользоваться встроенным инструментом системы для проверки и восстановления базы данных. Использование скрипта проверки и восстановления базы данных позволит оперативно восстановить работу сайта.

Обратите внимание на следующее:
  • Скрипт проверки и восстановления базы данных может быть использован только для MySQL с типом таблиц MyISAM.
  • Скрипт проверки запускается из административного раздела сайта Настройки -> Инструменты -> Проверка БД:

    В случае, если повреждены таблицы статистики и нет возможности перейти в административный раздел, сбор статистики может быть временно отключен с помощью параметра ?no_keep_statistic_LICENSE-KEY=Y. В параметре указывается лицензионный ключ сайта.

  • Существует возможность использования скрипта проверки и восстановления базы данных без перехода в административный раздел.

    Для этого при обращении к странице восстановления необходимо указать два параметра: имя (login) и пароль (password) на доступ к базе данных. Например: http://www.mysite.ru/bitrix/admin/repair_db.php?login=DB_Login&password=DB_Password. По умолчанию значения данных параметров хранятся в файле /bitrix/php_interface/dbconn.php.

Проблема:

На экран выводится ошибка:

MySQL Query Error: ….. [Out of memory restart server and try again (needed 65528 bytes)]

Решение:

Необходимо увеличить объем памяти в настройках MySQL.

Рекомендуется использовать следующие параметры MySQL, задавая их в конфигурационном файле MySQL my.cnf:

key_buffer = 128K
max_allowed_packet = 16M
table_cache = 4
sort_buffer_size = 128K
read_buffer_size = 128K
read_rnd_buffer_size = 128K
net_buffer_length = 128K
thread_stack = 128K

После изменения параметров необходимо будет перезагрузить MySQL.


500 - Internal Server Error
52 / 253

Ошибка сервера может быть вызвана различными причинами, поэтому ее диагностика достаточно сложна и трудоемка. Это не является ошибкой «1С-Битрикс: Управление сайтом». Она часто возникает на разделяемом хостинге из-за ограничения ресурсов системы.

При возникновении ошибки сервера в первую очередь необходимо просмотреть файл сервера error.log. В этом файле может содержаться строка с кодом ошибки.

  • Типичным примером причины возникновения ошибки сервера может быть превышение разрешенных прав на хостинге.

    Например, происходит попытка выполнить файл с атрибутами, не разрешёнными для запуска на сервере (например, файл имеет атрибуты 0755, а допускается 0711).
  • Также возможной причиной может быть наличие лимита по времени на исполнение php-скриптов;
  • Или у системы нет прав на запись или чтение файла и др.
  • Другой распространенной причиной возникновения внутренней ошибки сервера является нарушение конфигурации сервера или попытка использования неразрешенных инструкций, например, в файле .htaccess. В этом случае необходимо закомментировать либо удалить строку, содержащую неразрешенную директиву, в соответствующем файле (например, .htaccess).
  • Обратите внимание, если PHP работает как CGI, то 500 ошибка на сервере может быть вызвана фатальной ошибкой PHP. В этом случае рекомендуется выполнить проверку программного кода и диагностировать ошибку.
  • Внутренняя ошибка сервера может возникнуть при запуске из-под Apache CGI-скрипта, время исполнения которого превышает время, отведенное на выполнение скрипта в настройках сервера.

Таким образом, всё зависит от конфигурации сервера.

Важно понимать, указанные ограничения не настраиваются через настройки PHP в php.ini.

В нормальной ситуации такая ошибка и её причина фиксируется в логах сервера. В этом случае пользователю рекомендуется обратиться к хостеру с просьбой указать, что является причиной возникновения ошибки и попросить её устранить (например, увеличить ресурсы). Если хостер не смог найти решение - обратитесь в техподдержку компании «1С-Битрикс» с точным указанием того, как ошибка происходит и какие причины указал хостер. Без указания причины ошибки техподдержка помочь вам не сможет.


Виртуальная машина BitrixVM v7.x
53 / 253

«1C-Битрикс: Виртуальная машина» - бесплатный программный продукт, готовый к немедленному использованию виртуальный сервер, полностью настроенный, протестированный и адаптированный для оптимальной работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями.

Виртуальная машина сэкономит время и силы на правильное развертывание и администрирование сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».

С помощью специальных ВМ-решений вы можете быстро получить оптимально сконфигурированный сервер, не уступающий по производительности BitrixVM, а по масштабируемости - превосходящий виртуальную машину «1С-Битрикс». Пакеты подготовлены специалистами «1С-Битрикс» и доступны для скачивания и использования.

Решения для оптимизации установки продуктов «1С-Битрикс»:

  1. «1C-Битрикс: Виртуальная машина 7.x»

    «1C-Битрикс: Виртуальная машина 7.x» специально сконфигурирована для быстрого исполнения программных продуктов «1С-Битрикс»: разворачивается за минуты и сразу же готова к работе! На виртуальную машину можно не только установить ознакомительные версии продуктов «1С-Битрикс», но и перенести свои, уже готовые проекты.

    Дистрибутивы BitrixVM доступны для:

    • VMWare;
    • Sphere;
    • VirtualBox;
    • HyperV.

  2. «1С-Битрикс: Веб-окружение» - Linux (BitrixEnv)

    «1С-Битрикс»: Веб-окружение» - Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах CentOS 6 (i386, x86_64) и CentOS 7 (i386, x86_64).

  3. Virtuozzo Application Template для запуска оптимизированного VPS «Битрикс»

    Пакет Virtuozzo VZ Application Template для «Битрикс» с использованием решения «1С-Битрикс: Веб-окружение» - Linux 2.0. Шаблон предназначен для установки (создания) Virtuozzo контейнеров на основе CentOS 6 (i386, x86_64) и CentOS 7 (x86_64) packaged as a Virtuozzo EZ Template.

  4. Amazon Elastic Compute Cloud (Amazon EC2)

    Amazon EC2 - это веб-сервис, предоставляющий масштабируемые вычислительные мощности и созданный для быстрого и простого разворачивания веб-приложений на площадках (в облаках) Amazon. Специалистами «1С-Битрикс» подготовлены предконфигурированные образы BitrixVM (AMI-образы) для быстрого запуска приложений «1С-Битрикс» в Amazon EC2, которые включают:

    • CentOS 7.x;
    • NGINX + Apache2;
    • PHP 5.6+;
    • MySQL5 with InnoDB support;
    • Mail server agent;
    • UNIX-like Control Menu with common tasks;
    • IP address via DHCP, or configured by Amazon Elastic IP;
    • HTTPS support.

    Список ami-образов по регионам можно посмотреть на странице BitrixVM.

Внимание!«1C-Битрикс: Виртуальная машина» версии 7.x также позволяет управлять масштабированием серверов пула в простом визуальном режиме в административном интерфейсе с помощью модуля Управление масштабированием.

Глава предназначена для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину BitrixVM. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В документе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине BitrixVM.

Описание установки ПО виртуализации не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации соответствующего ПО.

Если у вас возникнут вопросы по процессу установки продуктов компании «1С-Битрикс», вы можете обратиться в службу Технической поддержки. Обсуждение работы BitrixVM доступно на специализированном форуме или в группе Виртуальные машины Битрикс социальной сети компании «1С-Битрикс».

Внимание! Информацию по устаревшим версиям «1C-Битрикс: Виртуальная машина» можно прочитать тут: версия 5.х и версия 4.3.

Внимание! Все названия хостов, адреса e-mail, серверов, ip-адреса и т.п информация в учебном курсе указываются в качестве примера. Поэтому при настройке виртуальной машины необходимо использовать свои данные.

Внимание! Если в BitrixVM или в BitrixEnv меняется ssl-сертификат с установленного по умолчанию на свой, и сертификат запаролен, то это вызовет проблему в работе мастеров и при перезапуске сервисов. Будет постоянно запрашиваться ввод пароля. Чтобы избежать подобных проблем, нужно удалить пароль из сертификата:
/path/to/openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key


Установка «1С-Битрикс: Веб-окружение» - Linux (BitrixEnv)
54 / 253

«1С-Битрикс: Веб-окружение» - Linux (BitrixEnv) будет полезно:

  • Для пользователей и разработчиков, которые использовали продукт «1С-Битрикс: Виртуальная машина» в процессе подготовки сайта и столкнулись с проблемой переноса конфигурации на хостинг или на невиртуальное оборудование и потерей производительности.
  • Для специалистов хостинг-партнеров, планирующих создать шаблоны различных VPS для продуктов «1С-Битрикс».
  • Для системных администраторов, которым требуется быстро подготовить производительную платформу для установки или миграции сайтов на основе «1С-Битрикс».
  • Для программистов и системных администраторов, которым требуется быстро развернуть кластер для проектов на основе «1С-Битрикс».

«1С-Битрикс: Веб-окружение» - Linux позволяет быстро и с минимальными затратами развернуть оптимальное окружение для работы продуктов и решений «1С-Битрикс» на Linux-платформе CentOS 6/7 (i386, x86_64):

  • mysql-server 5.*
  • web-server (Apache 2.2.*)
  • php 5.6/7.0.х
  • nginx 1.10.2
  • memcached
  • stunnel
  • catdoc
  • xpdf
  • munin
  • nagios
  • sphinx

Рассмотрим установку «1С-Битрикс: Веб-окружение» - Linux на оборудовании с уже установленной CentOS 7 (Minimal) (i386, x86_64).

  1. Авторизуемся на сервер под административным аккаунтом root.
  2. Загружаем скрипт «1С-Битрикс: Веб-окружение» - Linux и запускаем его командами:
    wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh
chmod +x bitrix-env.sh
./bitrix-env.sh

    Примечание: Если на сервере нет утилиты для загрузки файлов wget, то ее можно установить командой yum install wget

  3. Далее необходимо согласиться на отключение SElinux (если SElinux включен в системе) и перезагрузить машину командой reboot:

  4. После отключения SElinux нужно запустить снова установку BitrixEnv командой:
    ./bitrix-env.sh
  5. В процессе установки потребуется установить пароль root для MySQL и установка завершена:

    Внимание! Пароль root для MySQL обязателен, без установки пароля root для MySQL не будут работать многие команды меню BitrixEnv. Вы всегда сможете сменить пароль root для MySQL позже.

  6. При первом входе на сервер с логином root будет предложено сменить пароль у пользователя bitrix:

  7. Далее нужно создать пул (1. Create Management pool of server) и можно приступать к работе:

    Внимание! В «1С-Битрикс: Веб-окружение» - Linux версии 7.x+ нужно обязательно создать пул (1. Create Management pool of server). Мастер создания пула откроет все необходимые порты в CentOS для корректной работы сервисов продуктов «1С-Битрикс».

  8. Cервер готов для дальнейшего использования.
  9. После всех настроек сервера в целях безопасности не забудьте выйти из учетной записи root:
    • Выйти в консоль, выбрав в меню 0. Exit (или нажать Ctrl+C)
    • И затем в консоли выполнить команду exit

«Тихая» установка BitrixEnv (silent mode)

С версии 7.1 появилась возможность создания пула в тихом режиме, когда после установки окружения BitrixEnv запускается сразу создание пула с нужным именем хоста и паролем для root MySQL.

./bitrix-env.sh [-s] [-p [-H hostname]] [-M mysql_root_password]
где:
  • -s - Тихий режим установки. Не задавать вопросы (Silent or quiet mode. Don't ask any questions).
  • -p - Создать пул после установки окружения (Create pool after installation of bitrix-env).
  • -H - Имя хоста (Hostname for for pool creation procedure).
  • -M - Пароль root для MySQL (Mysql password for root user).

Пример использования:

Запустить установку окружения в тихом режиме, создать пул с именем хоста server1 и задать пароль root пользователя MySQL - 111111.

./bitrix-env.sh -s -p -H server1 -M '111111'

Как управлять BitrixEnv

Для перехода к выполнению любого действия в меню виртуальной машины введите число и нажмите Enter. Например, для настройки локального виртуального сервера в строке наберите 2 (Manage localhost) и нажмите Enter.

Чтобы вернуться из командной строки (если нажали 0. Exit) обратно в меню BitrixEnv, введите в консоли команду:

/root/menu.sh


Запуск виртуальной машины BitrixVM
55 / 253

Запуск виртуальной машины BitrixVM

  1. Загрузите подходящий вам дистрибутив настроенной виртуальной машины BitrixVM.
  2. Загруженный архив распакуйте в любую папку, например, С:\BitrixVM\ и запустите виртуальную машину с помощью подходящего ПО:

  3. Начнется процесс загрузки операционной системы, установленной на виртуальной машине. В конце загрузки откроется окно:

  4. При первом запуске виртуальной машины будет предложено сменить пароли суперпользователя root и пользователя bitrix:

    Примечание: Для суперпользователя root по умолчанию задан пароль bitrix.

    • В строке localhost login укажите логин: root, а в поле Password пароль: bitrix.
    • В строке (current) UNIX password укажите текущий пароль (bitrix) и нажмите Enter.
    • Введите новый пароль в строке Enter new UNIX password и нажмите Enter.
    • Повторите ввод нового пароля в строке Retype new UNIX password и нажмите Enter.

    Аналогично происходит смена пароля пользователя bitrix:

    Примечание: Сменить пароль пользователя bitrix можно позднее в панели управления виртуальным сервером с помощью пункта меню 1. Create Management pool of server - Change bitrix password.

  5. Далее нужно обязательно создать пул управления сервером с помощью меню 1. Create Management pool of server.

    Внимание! В BitrixVM версии 7.x+ нужно обязательно создавать пул (1. Create Management pool of server). Мастер создания пула откроет все необходимые порты в CentOS для корректной работы сервисов продуктов «1С-Битрикс».

  6. Виртуальный сервер готов для дальнейшего использования.
  7. После всех настроек виртуального сервера в целях безопасности не забудьте выйти из учетной записи root:
    • Выйти в консоль, выбрав в меню 0. Exit (или нажать Ctrl + C)
    • И затем в консоли выполнить команду exit

Как управлять BitrixVM

Для перехода к выполнению любого действия меню виртуальной машины введите число и нажмите Enter. Например, для настройки локального виртуального сервера в строке наберите 2 (Manage localhost) и нажмите Enter.

Чтобы вернуться в вашу ОС, нажмите Ctrl+Alt (VMWare Player).

Чтобы вернуться из командной строки (если нажали 0. Exit) обратно в меню виртуальной машины, введите в консоли команду:

/root/menu.sh

Примечание: При возникновении проблем с сетевым адаптером VMWare Player необходимо перейти в настройки сетевого адаптера (Virtual Machine > Removable Devices > Network Adapter > Settings...), выбрать один из режимов (Bridged, NAT, Host-only):

и перезапустить виртуальный сервер, выбрав пункт меню 2. Manage localhost > 4. Reboot server.


Установка и перенос продуктов «1С-Битрикс» в BitrixVM/BitrixEnv
56 / 253

Установка и перенос продуктов «1С-Битрикс» может быть осуществлена несколькими способами.


Установка дистрибутива сайта в BitrixVM/BitrixEnv
57 / 253

Для установки продукта «1С-Битрикс» нужно:

  1. Перейти по адресу bitrix url, указанному в BitrixVM или BitrixEnv в браузере. Откроется страница с выбором варианта установки:

  2. Для продолжения необходимо выбрать один из вариантов:

    • Установить - в этом случае будет запущен мастер, который позволяет скачать и установить новый сайт средствами продуктов компании «1C-Битрикс». Шаги этого варианта аналогичны шагам, рассмотренным в главе Установка продукта с помощью BitrixSetup («1C-Битрикс: Управление сайтом» или «Битрикс24 в коробке»).

    • Восстановить копию - в этом случае будет запущен мастер, с помощью которого можно будет перенести существующий проект (восстановить проект из резервной копии). Шаги этого варианта аналогичны шагам, рассмотренным в главе Перенос продукта («1C-Битрикс: Управление сайтом» или «Битрикс24 в коробке»).


Перенос продукта «1C-Битрикс» в виртуальную среду BitrixVM/BitrixEnv
58 / 253

Для переноса сайта с хостинга (облака) или локального сервера на виртуальную среду BitrixVM или BitrixEnv необходимы: архив сайта и настроенная виртуальная среда BitrixVM или BitrixEnv. Этот процесс состоит из двух этапов:

  • Создание архива сайта.
  • Копирование сайта в виртуальную среду BitrixVM/BitrixEnv.

Создание архива сайта

  1. Перейти на страницу Резервное копирование (Настройки > Инструменты > Резервное копирование):

    • архив сайта может быть сохранен в облаке «1С-Битрикс»;

      Внимание! Опция копирования в облако «1С-Битрикс» доступна пользователям с активной лицензией. Также, в целях безопасности, все резервные копии сайта отправляются в облако «1С-Битрикс» всегда зашифрованными. Компания «1С-Битрикс» не может восстановить или поменять пароль! Будьте внимательны, без знания этого пароля восстановить архив не удастся!

    • либо в папке сайта (архив сайта будет сохранен в папке /bitrix/backup/ хостинга с уникальным именем файла).

  2. На вкладке Параметры можно выбрать экспертные настройки создания резервной копии:

    Примечание: Для безопасности данных рекомендуется включить опцию Шифровать данные резервной копии и ввести пароль для архива сайта.

  3. После успешного создания архива сайта он будет доступен на странице Список резервных копий (Настройки > Инструменты > Список резервных копий) . Здесь будут показаны все резервные копии:

  4. Далее понадобится Получить ссылку для переноса с помощью одноименного меню действий:

    и в появившемся окне скопировать ее в буфер обмена:

  5. Также можно скачать архив сайта на локальный компьютер с помощью пункта меню Скачать.

Копирование сайта в виртуальную среду BitrixVM/BitrixEnv

  1. Запустить предварительно настроенную виртуальную среду BitrixVM или BitrixEnv.

  2. В адресной строке браузера ввести http://адрес_виртуальной_машины/ (можно указать домен или ip-адрес).

  3. Откроется мастер установки продукта «1С-Битрикс», где нужно выбрать Восстановить проект:

  4. На этапе загрузки резервной копии выбрать нужный способ хранения архива сайта (в данном случае - ввести ссылку из буфера обмена, полученную на странице со списком резервных копий сайта):

    Примечание: Также есть возможность загрузить архив из облака «1С-Битрикс» (понадобится лицензионный ключ с действующей лицензией), с локального компьютера или из корневой папки сервера в зависимости от того, где хранится ваша резервная копия.

  5. После скачивания архива, если архив был зашифрован, то будет предложено ввести пароль:

  6. Далее необходимо настроить подключение к базе данных:

    Настройки подключения к MySQL по умолчанию в BitrixVM/BitrixEnv берутся из /home/bitrix/www/bitrix/php_interface/dbconn.php.

    Можно указать собственные параметры подключения к MySQL - в этом случае необходимо еще выбрать опцию Создать базу данных, если не существует.

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

  8. Перенос продукта «1C-Битрикс» на виртуальную среду BitrixVM/BitrixEnv закончен:

Ошибка "Call to undefined function mysqli_init()"

При переходе на новую версию платформы BitrixVM/BitrixEnv может возникнуть ошибка - "Call to undefined function mysqli_init()". Причина ошибки в том, что раньше в БД MySQL использовалось расширение mysql (объявлено устаревшим в PHP 5.5.0), а в новых версиях - mysqli.

Решение проблемы:

  1. В файле \bitrix\php_interface\dbconn.php добавить:
    define("BX_USE_MYSQLI", true);
  2. В файле \bitrix\.settings.php:
    'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',
    поменять на:
    'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
  3. Проверить наличие в файле /etc/php.d/30-mysqli.ini (или в подобном):
    extension=mysqli.so

  4. Cделать рестарт httpd:

    • CentOS 6:
      service httpd restart
    • CentOS 7:
      systemctl restart httpd.service


1. Управление хостами (1. Manage Hosts in the pool)
59 / 253

Для начала работы с сервисами нужно создать и настроить пул сервера или нескольких серверов. Для этого нужно выбрать пункт главного меню 1. Create Management pool of server и ввести название сервера в данном пуле.

После создания пула в основном меню добавятся новые пункты в главном меню:


1. Добавление нового хоста в пул (1. Add new host in the pool)
60 / 253

Внимание! Добавление хостов в пул (кластер) нужно для масштабирования системы, для распределения нагрузки между несколькими серверами. Если у вас нет дополнительных серверов, то необходимости добавления хостов в пул нет.

Внимание! На добавляемом хосте в пул (кластер) должно быть установлено BitrixVM или BitrixEnv.

Добавление нового хоста в пул (кластер) осуществляется с помощью меню 1. Manage Hosts in the pool > 1. Add new host in the pool.

Для этого необходимо задать ip-адрес или DNS-имя хоста, выбрать короткое имя (в примере - server2) и ввести пароль root для подключаемого сервера:

Примечание: Имя хоста можно выбрать любое, можно указать, что хотите: bx1, server10, mysite.com (можно и имя домена, если он один) и т.д.

Таким образом, можно добавлять любое количество серверов в пул:

Теперь можно управлять любым сервером пула с одной машины.

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

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Удаление хоста из пула (2. Delete host from pool)
61 / 253

Удаления хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage Hosts in the pool > 2. Delete host from pool .

Для этого необходимо задать ip-адрес или DNS-имя хоста удаляемого из пула сервера:

После подтверждения сервер будет удален из пула:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Перезапуск хоста (3. Reboot host)
62 / 253

Перезагрузка хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage Hosts in the pool > 3. Reboot host.

Для этого необходимо задать имя хоста (в данном примере - server2) и согласиться на перезапуск сервера:


4. Обновление BitrixEnv на хосте (4. Update BitrixEnv on host)
63 / 253

С помощью менеджера пула можно удаленно обновлять Веб-окружение и компоненты системы на любом хосте, входящем в пул.

Например, в пул добавлена виртуальная машина версии 5.1.8, нам нужно обновить ее до 7.х.х.

  • Выбираем пункт меню 1. Manage Hosts in the pool > 4. Update BitrixEnv on host, система спросит имя хоста для обновления и подтверждение действия:

  • Менеджер пула запустит задачу обновления Веб-окружения на удаленном хосте:

    Примечание: Посмотреть текущие фоновые задачи можно в главном меню 5. Background tasks in the pool > 1. View running tasks.

  • Через некоторое время система на удаленном хосте обновится до последней версии (в данном примере - 7.0.0)

Таким же образом можно обновлять включенные в пул виртуальные машины ранних версий.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


5. Смена пароля пользователя bitrix (5. Change password for bitrix user on host)
64 / 253

Смена пароля для пользователя bitrix осуществляется через пункт меню 1. Manage Hosts in the pool > 5. Change password for bitrix user on host.

Будет выдан запрос имени хоста, на котором нужно сменить пароль пользователя bitrix, новый пароль и согласие на смену пароля:

Внимание! Сменить пароль пользователя root через меню виртуальной машины нельзя. Для этого необходимо воспользоваться системными командами ОС. Например, для Centos 6.х/7.x консольная команда смены пароля пользователя root: passwd.


6. Настройка таймзоны в пуле (6. Configure timezone in the pool)
65 / 253

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

Дата и время на сервере - это не одна конкретная дата и время, это фактически три различных даты и три различных времени со своими часовыми поясами:

  • Время сервера
  • Время PHP
  • Время MySQL

Смена таймзоны происходит через пункт меню веб-окружения 1. Manage Hosts in the pool > 6. Configure timezone in the pool, и меняет дату и время, в трех местах сразу, т.к это очень важный момент, что все три места работают с одинаковыми параметрами времени и даты.

  • После выбора континента, страны и города будет выведен запрос на согласие применения данной таймзоны:

  • После этого будет предложено также изменить таймзону для PHP:

  • И в заключение нужно подтвердить изменение таймзоны для всех серверов, входящих в пул:

Примечание: Корректность установки времени у PHP и MySQL можно проверить также через административный веб интерфейс продуктов «1C-битрикс»: Настройки > Инструменты > Проверка системы.


7. Удаление конфигурации пула (7. Remove pool configuration)
66 / 253

Внимание При удалении конфигурации пула происходит сброс информации о нодах и настроек подключения к ним. Поэтому не рекомендуется это делать, если:
  • Сконфигурирован MySQL-кластер (master-slave);
  • Сконфигурирован Web-кластер;
  • Перенесена MySQL-мастер база на другой сервер пула.

Удаления конфигурации пула осуществляется с помощью меню 1. Manage Hosts in the pool > 7. Remove pool configuration.

После подтверждения конфигурации пула будет удалена:

Меню же вернется к своему первоначальному состоянию:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


8. Обновление PHP и MySQL (8. Upgrade php and mysql versions)
67 / 253

В процессе обновления BitrixVM до версии 5.1.х и выше PHP и MySQL автоматически не обновляются. Обновить их можно в ручном режиме с помощью пункта меню виртуальной машины 1. Manage hosts in the pool - 8. Upgrade php and mysql versions.

Примечание: Пункт меню 1. Manage hosts in the pool - 8. Upgrade php and mysql versions появится только при обновлении BitrixVM с предыдущих версий до версии 5.1.х и выше.

Внимание! Для того, чтобы воспользоваться обновлением PHP до версии 7.0, необходимо предварительно обновить версию PHP до 5.6 и MySQL до 5.5 с помощью пункта меню 1. Manage hosts in the pool - 8. Upgrade php and mysql versions и далее уже повторно с помощью этого же пункта меню обновить до версии PHP 7.х.

После выбора пункта 8. Upgrade php and mysql versions, подождав пока выполнится фоновая задача обновления, в итоге будут обновлены PHP и MySQL до своих актуальных версий.

Если вам понадобится вернуться c PHP 7.x на 5.6, то вы можете сделать это, выбрав пункт 1. Rollback php to 5.6 version:

Если вы обновили BitrixVM/BitrixEnv до версии 7.1 и выше, то у вас появится возможность обновить версию MySQL до 5.7 Percona DB. Сделать это можно, выбрав пункт 2. Upgrade mysql to 5.7 version:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Управление локальным сервером (2. Manage localhost)
68 / 253

  • 1. Configure hostname - задается название хоста виртуального сервера;
  • 2. Configure network interface via DHCP - настройка IP-адреса сервера через DHCP;
  • 3. Configure network interface manually - настройка IP-адреса сервера вручную;
  • 4. Reboot server - перезагрузка виртуального сервера;
  • 5. Shutdown server - выключение виртуального сервера;
  • 6. Update server - обновление компонентов операционной системы виртуальной машины.
  • 0. Previous screen or exit - возвращение к главному меню.


1. Изменение имени хоста (1. Configure hostname)
69 / 253

Чтобы задать имя хоста локального сервера, нужно перейти в главном меню 2. Manage localhost - 1. Configure hostname.

Далее согласиться на изменение имени хоста и ввести название Input hostname - например server1 (по умолчанию имя хоста - localhost.localdomain):

После чего системе будет присвоено новое имя:

Примечание: Имя хоста можно выбрать любое, можно указать, что хотите: bx1, server10, mysite.com (можно и имя домена, если он один) и т.д.


2. Настройка IP-адреса сервера через DHCP (2. Configure network interface via DHCP)
70 / 253

При первом старте BitrixVM получение IP-адреса сервером происходит автоматически, если в сети есть настроенный DHCP-сервер.

Чтобы сменить или обновить IP-адрес локального сервера с помощью DHCP-сервера, нужно:

  • Перейти в главном меню 2. Manage localhost - 2. Configure network interface via DHCP.
  • Выбрать сетевой интерфейс (в данном примере - ens33) и автоматически будет получен IP-адрес от DHCP-сервера:


3. Настройка IP-адреса сервера вручную (3. Configure network inteface manually)
71 / 253

Для задания IP-адреса в ручном режиме необходимо:

  • Перейти в главном меню 2. Manage localhost - 3. Configure network interface manually.
  • Выбрать сетевой интерфейс (в данном примере - ens33).
  • Ввести данные:

    • Type IP address - новый IP-адрес сервера;
    • Type broadcast - широковещательный адрес сети;
    • Type network mask - маска подсети;
    • Type default gateway - шлюз по умолчанию;
    • Type DNS server - адрес DNS-сервера.
  • Проверить введенные данные и дать согласие на изменение параметров сети сервера:


6. Обновление локального сервера (6. Update server)
72 / 253

Внимание! Обновление продукта «1C-Битрикс: Виртуальная машина» - сложная операция, в процессе которой происходит обновление системных файлов операционной системы виртуальной машины, и для этого необходимы соответствующие знания администрирования *nix-систем. Перед запуском обновления рекомендуется сделать полный бекап «Виртуальной машины».

Для обновления локальной виртуальной машины необходимо выбрать в административном меню пункт 2. Manage localhost - 6. Update server и согласиться на обновление.

Скрипт автоматически проверит обновления компонентов, выдаст общий объем для загрузки и запрос на установку.

Внимание! Этот пункт меню запускает обновление компонентов лишь текущей виртуальной машины. Если у вас несколько серверов в пуле (кластер), то целесообразно производить обновление для всех виртуальных машин, входящих в этот пул.

Примечания:
  • Если после обновления, что-то перестанет работать, то можно вернуть полностью или частично старые файлы настроек соответствующей службы, т.к. конфигурационные файлы при обновлении не перезаписываются, а сохраняются в файлах *.ori.(метка времени).
  • Также в процессе обновления могут отключиться некоторые модули php. Для их включения необходимо выполнить следующие команды:
    mv -f /etc/php.d/(имя модуля).ini.disabled /etc/php.d/(имя модуля).ini
service httpd restart

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Настройка MySQL (3. Configure MySQL servers)
73 / 253


1. Обновить настройки для всех MySQL-серверов (1. Update settings for all MySQL servers)
74 / 253

Чтобы обновить настройки для всех MySQL-серверов, нужно перейти в главном меню 3. Configure MySQL servers - 1. Update settings for all MySQL servers:

Опция обновляет конфигурацию одного или нескольких MySQL-серверов в пуле (если такое имеется) и приводит их к дефолтным настройкам для виртуальной машины.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Изменить пароль root для mysql-сервера (2. Change password for mysql user root)
75 / 253

Внимание! В BitrixVM/BitrixEnv версии 7.x+ пароль root для MySQL-сервера не может быть пустым. При первом запуске BitrixVM он автоматически создается, а при установке BitrixEnv будет выдан запрос на создание пароля root для MySQL-сервера.

Если вам понадобилось сменить пароль root MySQL-сервера, нужно перейти в главном меню 3. Configure MySQL servers - 2. Change password for mysql user root.

Далее выбрать нужный сервер (имя хоста), согласиться на изменение и ввести новый пароль.


3. Остановить/Запустить службу mysql (3. Stop/Start mysql service on the server)
76 / 253

Остановить или запустить MySQL-сервер можно в главном меню 3. Configure MySQL servers - 3. Stop/Start mysql service on the server .

Далее выбрать нужный сервер (имя хоста), согласиться на остановку или старт MySQL-сервера:


4. Создать slave MySQL-сервер (4. Create slave MySQL server)
77 / 253

В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластерную конфигурацию master-slave «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».

Ключевые особенности:

  • гибкая балансировка нагрузки SQL
  • простота администрирования
  • дешевое и быстрое неограниченное масштабирование
  • он-лайн бэкап
  • не требуется доработка логики веб-приложения

Схема «master - slave» реализуется средствами MySQL. Платформа «1С-Битрикс» позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.

Внимание! Перед тем как начинать конфигурировать схему «master - slave» в BitrixVM/BitrixEnv нужно предварительно установить продукты «1С-Битрикс: Управление сайтом» или в «Битрикс24 в коробке» с модулем Веб-кластер. Данный модуль входит только в старшие редакции продуктов «1С-Битрикс».

Для создания slave сервера MySQL нужно:

  • Выбрать пункт меню 3. Configure MySQL servers > 4. Create slave MySQL server, ввести имя хоста в пуле, на котором будет создан slave сервер MySQL (в данном примере - server2):

  • Придумать и ввести пароли репликации и кластера:

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

  • Подождать, пока задача по добавлению slave cервера MySQL будет закончена.
  • Создадим аналогичным образом еще один slave сервер MySQL (server3). В итоге получим три сервера MySQL: master (server1) и два slave (server2 и server3):

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


5. Смена master сервера MySQL (5. Change master MySQL server)
78 / 253

Для переноса master сервера MySQL на другую машину необходимо:

  • Выбрать пункт меню 3. Configure MySQL servers > 5. Change master MySQL server.

    Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 slave-сервер MySQL с помощью меню 3. Configure MySQL servers > 4. Create slave MySQL server.

  • Ввести имя хоста для будущего master сервера MySQL из списка доступных slave (например server2):

  • Подождать, пока задача по смене master cервера MySQL будет закончена.
  • В итоге серверы MySQL станут: master (server2) и два slave (server1 и server3):

Таким образом, мы перенесли master сервер MySQL с машины server1 на server2.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


6. Удаление slave сервера MySQL (6. Remove slave MySQL server)
79 / 253

Для удаления slave сервера MySQL необходимо:

  • Выбрать пункт меню 3. Configure MySQL servers > 6. Remove slave MySQL server.

    Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 slave-сервер MySQL с помощью меню 3. Configure MySQL servers > 4. Create slave MySQL server.

  • Ввести имя хоста удаляемого slave сервера MySQL (например server1):

  • Подождать, пока задача по удалению slave cервера MySQL будет закончена.
  • В итоге серверы MySQL станут: master (server2) и один slave (server3):

Таким образом, мы освободили ресурсы машины server1 под другие роли.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


4. Настройка memcached (4. Configure memcached servers)
80 / 253

Продукты «1С-Битрикс» позволяет использовать пул серверов memcached для работы с кешем данных.

Это обеспечивает:

  • высокую эффективность - за счет централизованного использования кеша веб-приложением;
  • надежность - за счет устойчивости подсистемы кеширования к выходу из строя отдельных компонентов;
  • неограниченную масштабируемость - за счет добавления новых memcached-серверов.

Внимание! Перед тем как начинать использовать пул серверов memcached в BitrixVM/BitrixEnv нужно предварительно установить продукты «1С-Битрикс: Управление сайтом» или в «Битрикс24 в коробке» с модулем Веб-кластер. Данный модуль входит только в старшие редакции продуктов «1С-Битрикс».


1. Создание memcached сервера (1. Create memcached server)
81 / 253

Для создания memcached сервера нужно:

  • Выбрать пункт меню 4. Configure memcached servers > 1. Create memcached server.
  • Ввести имя хоста в пуле, на котором будет запущен сервер memcached (в данном примере - server1):

  • Подождать, пока задача по запуску cервера memcached будет закончена:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Обновить настроек memcached сервера (2. Update settings on all memcached servers)
82 / 253

Чтобы обновить настройки для всех memcached -серверов, нужно перейти в главном меню 4. Configure memcached servers - 2. Update settings on all memcached servers:

Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 memcached-сервер с помощью меню 4. Configure memcached servers > 1. Create memcached server.

Эта опция запускает проверку текущей конфигурации одного или нескольких memcached -серверов в пуле (если такие имеются).

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Удаление memcached сервера (3. Remove memcached server)
83 / 253

Для удаления memcached сервера необходимо:

  • Выбрать пункт меню 4. Configure memcached servers > 3. Remove memcached server.

    Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 memcached -сервер с помощью меню 4. Configure memcached servers > 1. Create memcached server.

  • Ввести имя хоста удаляемого memcached сервера (например server1):

  • Подождать, пока задача по удалению memcached cервера будет закончена.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


5. Фоновые задачи (5. Background tasks in the pool)
84 / 253

Все изменения в виртуальной машине - настройки, запуск каких-либо служб, синхронизация и др. осуществляются с помощью скриптов - задач.

Просмотреть историю задач, а также выполняемые в данный момент задачи, можно с помощью пункта меню 5. Background tasks in the pool:

Просмотреть запущенную в данный момент задачу можно с помощью пункта меню 5. Background tasks in the pool > 1. View running tasks:

Для остановки запущенной в данный момент задачи нужно перейти в пункт меню 5. Background tasks in the pool > 1. View running tasks > 1. Stop task и ввести идентификатор задачи:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера.

Чтобы очистить историю задач нужно выбрать пункт меню 5. Background tasks in the pool > 2. Clean history:

Далее выбрать количество дней, за которое нужно оставить историю задач, и фильтр, по которому выбирать задачи (к примеру, выберем все задачи с TaskID common):

После этого будут выведены все задачи, удовлетворяющие заданному интервалу и фильтру, и далее запрос на очистку истории:

Внимание! Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


6. Управление сайтами (6. Manage sites in the pool)
85 / 253


1. Создание сайта (1. Create site)
86 / 253

Мастер создания дополнительных сайтов, позволяет развернуть на одной виртуальной машине несколько сайтов, как на независимых установках «1С-Битрикс», так и в рамках многосайтовости.

Внимание! В BitrixVM\BitrixEnv версии 7.х root пароль к MySQL не может быть пустым, он задается для BitrixEnv на этапе установки, а для BitrixVM автоматически при первом старте. Изменить root пароль к MySQL можно в меню 3. Configure MySQL server > 2. Change password for mysql user root . Если root пароль к MySQL будет пустым, то при добавлении нового сайта будет выдана ошибка.

Для добавления дополнительного сайта необходимо:

  • Предварительно настроить DNS-сервер или в случае локальной установки указать доменное имя в /etc/hosts на виртуальной машине, а также на всех машинах, с которых будет осуществляться доступ к данному сайту.
  • Далее из административного меню запустить мастер 6. Manage sites in the pool > 1 Create site:

    и указать:
    1. Enter site name - доменное имя дополнительного сайта без www;

      Внимание! Если у вас домен в национальной кодировке (например, кириллический домен), то в данное поле нужно вводить имя домена в Punycode-формате, воспользовавшись любым Unicode-Punycode конвертером (например этим).

    2. Enter site type - тип установки ядра «1С-Битрикс»:
      • kernel - в случае создания дополнительного сайта в рамках отдельной установки - отдельное ядро продукта «1С-Битрикс» в новой директории сайта.
      • ext_kernel - отдельное ядро продукта «1С-Битрикс» в новой директории сайта для создания линков на это ядро в рамках многосайтовости, ядро будет недоступно напрямую, а только через дополнительные сайты (работает в паре с сайтами типа link).
      • link - в случае создания дополнительного сайта в рамках многосайтовости - общее ядро и данные в общей базе с уже установленным продуктом «1С-Битрикс» (работает в паре с ядром ext_kernel).
    3. Enter full path to the Bitrix installation directory - указать путь до ядра продукта «1С-Битрикс», на которые будут сделаны симлинки (для ядра типа link).
    4. Enter site encoding - указать кодировку будущего сайта: UTF-8 или windows 1251 (для ядра типа kernel и ext_kernel).
    5. Do you want to enable cron task on site - включить ли выполнение заданий на cron для будущего сайта (для ядра типа kernel и ext_kernel).
    6. Do you want to specify them - по умолчанию название, логин и пароль базы данных и root-директория сайта создаются автоматически (в файлах dbconn.php и .settings.php), но с помощью данной опции можно указать свои, выбрав ответ y (для ядра типа kernel и ext_kernel).
  • В процессе работы мастера будет создана директория на сервере: /home/bitrix/ext_www/{название_хоста}, в которой будут:
    • символические ссылки на директорию ядра, которую выбрали ранее (если был выбран вариант link).
    • директории и скрипт BitrixSetup для установки или восстановления продукта (если был выбран вариант kernel).
    • директории и скрипт BitrixSetup для восстановления продукта (если был выбран вариант ext_kernel).
  • После завершения задачи по добавлению сайта он будет готов к использованию.

    Примечание: Количество дополнительных сайтов ограничивается лишь лицензией «1С-Битрикс» данной установки.

Внимание! Если был выбран вариант ядра ext_kernel и установлено ядро в /home/bitrix/ext_www/{название_хоста}, то в списке сайтов виртуальной машины данное ядро не появится до тех пор, пока не будет создан хотя бы один сайт (link) на это ядро.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Удалить сайт (2. Delete site)
87 / 253

Для удаления записи о дополнительном сайте необходимо в административном меню выбрать пункт 6. Manage sites in the pool > 2. Delete site и выбрать директорию удаляемого сайта (Enter site directory):

Внимание! Мастер удаления дополнительного сайта удаляет папку и базу данных дополнительного сайта, поэтому необходимо предварительно сделать бекап важных данных.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Настройка задач cron (3. Change cron tasks on site)
88 / 253

По умолчанию в виртуальной машине cron уже включен. Если по каким-либо причинам нужно отключить службу cron, то для этого необходимо:

  • Перейти в главном меню в 6. Manage sites in the pool > 3. Change cron tasks on site и ввести директорию сайта, для которого нужно отключить службу cron:

  • Согласиться на отключение cron и дождаться пока задача будет закончена:

Аналогичным способом осуществляется включение cron:

Внимание! Информацию о том, как настроить в продуктах «1С-Битрикс» обработку всех агентов на cron, можно прочитать здесь.


4. Настройка почтового сервера (4. Change e-mail settings on site)
89 / 253

Для настройки интегрированного почтового сервера выполните следующее:

  1. Перейти в главном меню в 6. Manage sites in the pool > 4. Change e-mail settings on site и ввести имя хоста, для которого нужно настроить отправку почты:

  2. Далее ввести необходимые данные для почтового сервера:

    • from address - адрес отправителя, от которого будет осуществляться пересылка писем.
    • server address or DNS - ip- или dns-адрес почтового сервера. Если нажать Enter, то будет использован адрес по умолчанию (127.0.0.1)
    • server port - порт сервера. Порт зависит от типа соединения, 25 - для обычного и 465 - для зашифрованного (с использованием SSL). Если нажать Enter, то будет использован порт по умолчанию (25).
    • Если необходима SMTP-авторизация, то в строке SMTP authentication наберите y и введите логин и пароль для доступа к SMTP-серверу, в противном случае - n.
    • Если выбрана опция SMTP-авторизации, то понадобится ввести тип авторизации type of authentication method: auto, plain, scrum-sha-1, scrum-md5, gssapi, external, digest-md5, login, ntlm.
    • Если необходим TLS-протокол защищенной передачи данных, то в строке TLS enabled наберите y, в противном случае - n.

  3. Дождаться пока задача по настройке почтового сервера будет закончена.
  4. Убедиться в правильности введенных данных настройки почтового сервера можно снова в 6. Manage sites in the pool > 4. Change e-mail settings on site:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


5. Настройка https на сайте (5. Change https settings on site)
90 / 253

По умолчанию в виртуальной машине включена поддержка доступа к сайтам через протоколы HTTP и HTTPS.

Если необходимо оставить доступ к сайту только по защищенному протоколу HTTPS, то для этого нужно:

  • Перейти в главном меню в 6. Mange sites in the pool > 5. Change https settings on site и ввести имя хоста, для которого нужно настроить протокол доступа:

  • Согласиться на отключение HTTP доступа и дождаться пока задача будет закончена:

    Внимание! Для доступа к сайту только по протоколу HTTPS необходим SSL-сертификат от доверенного центра сертификации, иначе браузеры будут выдавать ошибку, что сертификат безопасности сайта не является доверенным.

Аналогичным способом осуществляется возврат доступа к сайту по протоколу HTTP:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


6. Настройка резервного копирования сайта (6. Change backup settings on site)
91 / 253

При разворачивании проектов на базе BitrixVM/BitrixEnv, часто встает задача создания резервной копии проекта по расписанию.

В BitrixVM/BitrixEnv есть функционал автоматического резервного копирования сайта и базы данных. Бекап будет создан по расписанию в виде архива .tar.gz и записан в директории /home/bitrix/backup/archive/.

У данного способа есть как преимущества, так и недостатки в сравнении с встроенным в продукты «1С-Битрикс» механизмом создания резервной копии:

  • К преимуществам относятся более высокая скорость создания резервной копии и независимость от работоспособности проекта.
  • Из недостатков стоит отметить то, что при использование данного способа нельзя сделать резервную копию файлов, расположенных в облачных хранилищах.

Для создания расписания автоматического резервного копирования средствами BitrixVM/BitrixEnv необходимо:

  • В меню виртуальной машины выбрать пункт 6. Manage sites in the pool > 6. Change backup settings on site.
  • Выбрать из списка имя хоста и согласиться на изменение настроек расписания автоматического резервного копирования:

  • Выбрать периодичность и час запуска автоматического резервного копирования:

    Если необходимо выполнить более точную настройку бэкапов, можно воспользоваться утилитой командной строки:

    /opt/webdir/bin/bx-sites -a backup -d dbcp --enable --minute=10 --hour=18 --day=any --month=any --weekday=any

    Примечание: Как настроить правильное время в BitrixVM/BitrixEnv см. здесь.

  • На этом работа мастера настройки завершена, и в Cron (/etc/crontab) добавляется задача резервного копирования проекта.

    Бэкап делается для ядра (сайта типа kernel и ext_kernel) и всех его link, если такие существуют. Для этого создается задание в crontab-файле. Например:

    10 22 * * * bitrix /opt/webdir/bin/bx_backup.sh sitemanager0 /home/bitrix/backup/archive

    В качестве первой опции указывается имя БД, второй опцией указывается каталог, в котором будет создан архив.

    В итоге скрипт создаст архив следующего вида: www_backup__DD.MM.YYYY_<random_string>.tar.gz (например - www_backup_dbcp_21.10.2014_1RJKXbMv.tar.gz).

    Внутри архива должны присутствовать следующие файлы:

    1. дамп БД /home/bitrix/mysql_dump__DD.MM.YYYY_.sql
    2. данные сайта ядра
    3. данные сайтов типа ссылок с полным путем

Управление бэкапами через bx-sites

  • -a|--action - действие по управлению сайтами, в данном случае это backup
  • -d|--database - название БД (в бэкапе будут содержаться данные для всех сайтов, которые используют эту БД)
  • --enable|--disable - включение или отключение бэкапа для сайтов
  • --minute - параметры записи в crontab файле (минуты)
  • --hour - параметры записи в crontab файле (часы)
  • --day - параметры записи в crontab файле (день)
  • --month - параметры записи в crontab файле (месяц)
  • --weekday - параметры записи в crontab файле (день недели)

В случае успешного выполнения утилита вернет новые опции для сайта:

/opt/webdir/bin/bx-sites -a backup -d sitemanager0 --enable --minute=10 --hour=23 --day=1 --month=any --weekday=any -o json | python -mjson.tool
...
            "BackupCronFile": "/etc/crontab",
            "BackupDay": "1",
            "BackupFolder": "/home/bitrix/backup/archive",
            "BackupHour": "23",
            "BackupMinute": "10",
            "BackupMonth": "*",
            "BackupTask": "enable",
            "BackupVersion": "v5",
            "BackupWeekDay": "*",
...

Списки исключений

Ряд файлов/каталогов необходимо исключить из резервной копии. Список таких исключений можно найти в файле /opt/webdir/bin/ex.txt.

По умолчанию, в нем находятся следующие подкаталоги:

bitrix/cache
bitrix/managed_cache
bitrix/stack_cache
bitrix/local_cache
bitrix/backup
bitrix/tmp
upload/tmp
upload/resize_cache

Содержимое бэкапа/восстановление

Как уже сказано выше, в бэкап включается:

  • сам каталог сайта ядра (kernel или ext_kernel);
  • файл dump БД (/home/bitrix/mysql_dump_<db>.sql);
  • каталоги сайтов (link), которые используют ядро.

Например команда:

/opt/webdir/bin/bx_backup.sh sitemanager0 /home/bitrix/backup/archive

создает файл www_backup_sitemanager0_30.01.2015_bnnW1NPm.tar.gz в директории /home/bitrix/backup/archive/

Для восстановления, нужно перейти в DocumentRoot ядра, выполнить:

tar xzvvf www_backup_sitemanager0_30.01.2015_zEQkXREd.tar.gz ./
...
-rw-r--r-- bitrix/bitrix    5013 2015-01-30 14:02 ./workgroups/.left.menu_ext.php
-rw-r--r-- bitrix/bitrix     319 2015-01-30 14:01 ./.top_links.menu.php
-rw-r--r-- root/root     5313008 2015-01-30 14:22 home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm.sql
drwxr-xr-x                    Creating directory: home
drwxr-xr-x                    Creating directory: home/bitrix
-rw-r--r-- root/root          44 2015-01-30 14:22 home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm_after_connect.sql

После чего нужно восстановить БД:

mysql sitemanager0 < home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm_after_connect.sql

И данные дополнительных сайтов, если они есть:

rsync -av home/bitrix/ext_www/ /home/bitrix/ext_www/

Примечание: Не забывайте следить за свободным местом на диске и периодически удалять старые резервные копии.


7. Настройка NTLM-авторизации на всех сайтах (7. Configure NTLM auth for all sites)
92 / 253

Внимание! Для поддержки механизма NTLM-авторизации продуктами «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке» необходим модуль AD/LDAP интеграция версии 11.5.0 и выше.

После включения и настройки новый механизм NTLM-авторизации начинает работать следующим образом:

  • неавторизованный посетитель приходит на проект, где обработчиком события он перенаправляется на открытый порт Apache (8890 для http или 8891 для https);
  • Apache выполняет NTLM-авторизацию пользователя и пользователь перенаправляется назад на 80 или 443 порт (для http и https соответственно);
  • следующие переходы по сайту пользователь выполняет в обычном режиме.

Рассмотрим настройку на примере «Битрикс24 в коробке».

Настройка NTLM-авторизации пользователей в «Битрикс24 в коробке»

  • Во время установки, в мастере выбираем Разрешить пользователям Active Directory авторизовываться на портале:

  • Далее вводим настройки подключения к домену AD, проверяем соединение:

  • Указываем соответствия групп в AD группам корпоративного портала:

  • После завершения установки в административном разделе портала открываем страницу Active Directory / LDAP серверы (Настройки > AD/LDAP):

  • редактируем параметры сервера Active Directory, указывая домен для NTLM авторизации:

  • После этого заходим в настройки модуля AD/LDAP и устанавливаем Использовать NTLM авторизацию:

Продукт «1С-Битрикс» готов к использованию NTLM-авторизации, осталось настроить виртуальную машину.

Внимание! Если необходимо для локальной сети компании настроить NTLM-авторизацию, а для сотрудников, работающих с порталом, использовать стандартную авторизацию, то дополнительно в настройках модуля AD/LDAP нужно указать диапазон IP-адресов, для которых необходима NTLM-авторизация - Ограничить NTLM переадресацию следующей подсетью (например, 192.168.0.1/24):

Настройка NTLM-авторизации пользователей в «1С-Битрикс: Виртуальная машина»

Для настройки виртуальной машины необходимо подключитьcя к ней под пользователем root, выбрать пункт меню 6. Manage sites in the pool > 7. Configure NTLM auth for all sites и ввести необходимые данные:

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

Примечание: Проверить, что компьютер успешно введен в домен можно командой:
net ads testjoin

Настройка завершена, для успешной NTLM-авторизации осталось проверить настройки браузеров.

Настройка NTLM-авторизации в браузерах

  • Internet Explorer

    Для успешной NTLM-авторизации нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости нужно добавить):

  • Mozilla Firefox:

    Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris на странице Firefox: about:config)

Примечание: Действия по включению NTLM-авторизации на уже установленном продукте «Битрикс24 в коробке», а также в «1С-Битрикс: Управление сайтом» аналогичны перечисленным выше, за исключением того, что сервер Active Directory добавляется вручную в административном разделе.


8. Настройка xmppd|smtpd сервисов для сайта (8. Configure optional services (xmppd|smtpd) for site)
93 / 253

Мастер позволяет управлять работой сервисов XMPP и SMTP с помощью Cron. Это может понадобится, если необходимо рассылать jabber- и почтовые сообщения в случае, если на сайте нет активности, т.е если все события на сайте работают на хитах.

Для управления необходимо:

  • Из административного меню запустить мастер 6. Manage sites in the pool > 8 Configure optional services (xmppd|smtpd) for site:

  • Далее указать:
    • Enter site-name - имя сайта;
    • Enter service name - имя сервиса xmppd или smtpd.
  • И согласиться на активацию работы сервисов через Cron:

  • После завершения данной задачи jabber-уведомления и почтовые сообщения будут отправляться по cron-расписанию, независимо от активности на сайте.

Аналогичным образом отключается данные опции:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


9. Настройка nginx для работы с композитом (9. Configure nginx for composite)
94 / 253
Внимание! Настройки в виртуальной машине BitrixVM должны производиться после осуществления настроек Композитного сайта в Административном разделе. Если такие настройки выполнены в колонке Composite должно стоять Y.

Конфигурации NGINX для работы с композитом

Примечание: Если сайтов несколько, то для каждого сайта, для которого включается Композитный сайт, нужно осуществить настройки, описанные ниже.

Управление настройками композитного кеша для NGINX находятся в меню виртуальной машины: 6. Manage sites in the pool > 9. Configure nginx for composite:

Эта настройка выполняет следующие действия:

  1. По настройкам, заданным в форме Композитный сайт в Административном разделе, создает конфигурационный файл условий работы композита, персональных для сайта в каталоге /etc/nginx/bx/maps. Например, включен или выключен композит для https-запросов.
  2. Обновляет настройки сайта, добавляет:
    • проверку условий - глобальных (общих для всех сайтов) и персональных,
    • выбранного для композита хранилища (files, memcached), если все условия выполняются.

Включение и обновление настроек NGINX для композита

Для включения или обновления настроек:

  1. Укажите имя сайта.
  2. Подтвердите выбор, запустится фоновое задание, которое выполнит все настройки описанные в предыдущих пунктах.

Примечание. Также можно воспользоваться утилитой командной строки bx-sites (не забудьте указать нужный сайт вместо default в примере).
/opt/webdir/bin/bx-sites -o json -a composite --enable --site=default

Выключение настроек NGINX по работе с композитом

Для отключения настроек:

  1. Укажите имя сайта.
  2. Откажитесь от обновления существующих настроек.
  3. Подтвердите отключение настроек Композита, запустится фоновое задание, которое вернет настройки сайта к значениям по умолчанию.

Примечание Так же можно воспользоваться утилитой командной строки bx-sites. (Не забудьте указать нужный сайт вместо default в примере.)
/opt/webdir/bin/bx-sites -o json -a composite --disable --site=default

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.

PHP или NGINX?

После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.

Заголовки при использовании Композита в BitrixVM могут быть такие:

  • X-Bitrix-Composite:Nginx (file) - отдача страниц - NGINX, хранение - файлы;
  • X-Bitrix-Composite:Nginx (memcached) - отдача страниц - NGINX, хранение - memcached;
  • X-Bitrix-Composite:Cache (200) - отдача страниц - PHP, хранение - файлы.


Условия работы композитного кеша
95 / 253

Примечание: Указанные в этом уроке настройки производить не нужно. Здесь дано описание того, что происходит при включении настроек NGINX на технологию Композитный сайт в BitrixVM только для ознакомления.

Условия разделены на две группы:

  • глобальные условия, общие для всех сайтов
  • персональные условия, условия, которые зависят от настроек выбранных в настройках Композитный сайт:

Глобальные условия

Настройки определяются в файле: /etc/nginx/bx/maps/composite_settings.conf. NGINX не использует технологию Композитный сайт, если соблюдается хотя бы одно условие:

  1. есть заголовок BX_ACTION_TYPE,
  2. есть заголовок BX_AJAX,
  3. это не GET-запрос,
  4. в query_string есть параметр ncc,
  5. в query_string есть параметр bxajaxid,
  6. в query_string есть параметр sessid,
  7. запрос сделан из IE ранее 10 версии,
  8. запрос по адресу /bitrix/,
  9. запрос по адресу /index_controller.php,
  10. есть кука NCC,
  11. есть куки LOGIN, UIDH и при этом нет куки CC.

Определение условий сделано через http_ngx_map_module:

  • По каждому из условий создано свое отображение. Например, в случае если переменная $http_bx_action_type содержит данные, то композитный ключ $not_bx_action_type будет содержать 0.
    map $http_bx_action_type $not_bx_action_type {
  default "0";
  ''      "1";
}
  • Все условия используются для финальной проверки:
    # test all global conditions
map "${not_bx_action_type}${not_bx_ajax}${is_get}${non_arg_ncc}${non_arg_bxajaxid}${non_arg_sessid}${is_modern}${is_good_uri}${non_cookie_ncc}${is_storedAuth}" $is_global_composite {
  default     "1";
  ~0          "0";
}

    Если хоть одно из условий содержало 0, то итоговое значение переменной $is_global_composite будет равно 0.

Персональные условия для сайта

Персональные проверки NGINX для сайта, определяются в момент включения или обновления композита из консольного меню. Для таких настроек создается и обновляется файл в каталоге: /etc/nginx/bx/maps/. Имя файла имеет специальный формат: <ID>.cache_<SITE_NAME>.conf, где:

  • ID - уникальный идентификатор сайта для кеша (инкрементное значение от 1),
  • SITE_NAME - имя сайта в системе (example.org).

NGINX не будет использовать композитный кеш, если выполняется хотя бы одно из условий:

  1. в query_string есть параметр из конфига (ключ ~EXCLUDE_PARAMS в .config.php),
  2. запрос по протоколу HTTPS (по галочке в настройках),
  3. запрос на домен, не указанный в списке доменов (ключ DOMAINS в .config.php),
  4. запрос по адресу, не указанному в "маске включения" ( ключ ~INCLUDE_MASK в .config.php),
  5. запрос по адресу, указанному в списке "маска исключений" ( ключ ~EXCLUDE_MASK в .config.php).

Определение условий сделано через http_ngx_map_module:

  • По каждому из условий, найденных в .config.php, создается свое отображение. Например, если задано условие INCLUDE_MASK для запроса, будет создана следующая структура:
    # test include uri for site
map $uri $is_include_uri_02 {
  default  "0";
  "~*^.*?\.php$"  "1";
  "~*^.*?/$"  "1";

}

    Если переменная $uri содержит одно из следующих регулярных выражений, то $is_include_uri_02 будет содержать 1, в остальных случая переменная будет равна 0.

    Примечание: Обратите внимание, что в переменной используется идентификатор сайта, это сделано для того, чтобы разграничить условия разных сайтов.

  • Все найденные условия, используются для финальной проверки:
    # variable $is_site_composite_02 used in site config
map "${config_domain_02}${is_include_uri_02}${not_exclude_uri_02}${not_https_schema_02}" $is_site_composite_02 {
  default   "1";
  ~0        "0";
}
    Если хоть одна из переменных получит значение 0, переменная $is_site_composite_02 будет содержать 0, в остальных случаях 1.

Ключ поиска в композите

Ключ - это файл, который NGINX будет искать в композитном кеше (ключ для mecached хранилища, файл в случае хранения на файлах). Он нужен для того, чтобы привести запрос на сайт (uri) к универсальному виду.

Данный ключ определяется в глобальных настройках в файле /etc/nginx/bx/maps/composite_settings.conf. Так же, как для условий, используется модуль nginx ngx_map_module:

map $uri $composite_key {
  default                         $uri;
  ~^(?P.+)/$           $non_slash;
  ~^(?P.+)/index.php$  $non_index;
  ~^(?P.+)/index.html$ $non_index;
}

Действуют следующие правила:

  • Если запрос заканчивается на слеш, то вырезается финальный слеш из запроса.
  • Если запрос содержит index.php или index.html, то они вырезаются из запроса.


Конфигурационный файл сайта
96 / 253

Примечание: Указанные в этом уроке настройки производить не нужно. Здесь для ознакомления дано описание того, что происходит при включении настроек NGINX на технологию Композитный сайт в BitrixVM.

Проверки для включения технологии на стороне NGINX используются в конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled. В случае стандартной конфигурации, файл обычно содержит следующие настройки:

    # Include parameters common to all websites
    include bx/conf/bitrix.conf;

При включенной технологии Композитный сайт, настройки зависят от выбранного хранилища.

Хранение в файлах

  1. В файле /bitrix/html_pages/.config.php опция STORAGE содержит значение files.
  2. В конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled, должно быть прописано:
      # определяем ключ композита и файл на диске
  set $composite_cache    "bitrix/html_pages/${host}${composite_key}/index@${args}.html";
  set $composite_file     "${docroot}/${composite_cache}";

  # файл, который определяет включен ли композит на сайте или нет
  set $composite_enabled  "${docroot}/bitrix/html_pages/.enabled";

  # переменная, которая используется для композитной проверки
  set $use_composite_cache "";
  # если переменная глобальных условий содержит 1, добавляем признак в  use_composite_cache
  if ($is_global_composite  = 1) {set $use_composite_cache "A";}
  # если переменная персональных условий сайта содержит 1, добавляем признак use_composite_cache
  if ($is_site_composite_02 = 1) {set $use_composite_cache "${use_composite_cache}B";}

  # Подключаем конфиг, который содержит наши стандартные настройки, без  location по умолчанию
  include bx/conf/bitrix_general.conf;

  # Основной location
  location / {

    # если файл включения композита существует, добавляем признак в use_composite_cache
    if (-f $composite_enabled)     { set $use_composite_cache "${use_composite_cache}C"; }

    # если файл кеша существует, добавляем признак в use_composite_cache
    if (-f $composite_file)  { set $use_composite_cache "${use_composite_cache}D"; }

    # если все четыре условия выполняются, отправляем запрос в location c кешем
    if ($use_composite_cache = "ABCD") { rewrite .* /$composite_cache last; }

     # по дефолту отправляем в apache
    proxy_pass $proxyserver;
  }

Хранение в memcached

  1. В файле /bitrix/html_pages/.config.php опция STORAGE содержит значение memcached или memcached_cluster.

  2. В конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled, должно быть прописано:
    # устанавливаем параметры подключения для memcached
  memcached_connect_timeout 1s;
  memcached_read_timeout 1s;
  memcached_send_timeout 1s;
  # ключ поиска
  set $memcached_key "/${host}${composite_key}/index@${args}.html";

  # включен ли композитный кеш
  set $composite_enabled  "${docroot}/bitrix/html_pages/.enabled";
  # переменная, которая используется для проверки работы с композитом при запросе пользователя
  set $use_composite_cache "";
  # учитываем глобальные условия
  if ($is_global_composite  = 1) {set $use_composite_cache "A";}
  # учитываем персональные условия
  if ($is_site_composite_02 = 1) {set $use_composite_cache "${use_composite_cache}B";}

  # подключаем общие параметры для bitrix окружения, без использования  default location
  include bx/conf/bitrix_general.conf;

  # основной location
  location / {
     # если данные не найдены в кеше проксируем запрос на apache
    error_page 404 405 412 502 504 = @apache;

    # учитываем наличие .enabled файла
    if (-f $composite_enabled)     { set $use_composite_cache "${use_composite_cache}C"; }

    default_type text/html;
    # если все совпало, отправляем запрос вmecached
    if ($use_composite_cache = "ABC") {
      add_header Content-Encoding deflate;
      add_header X-Bitrix-Composite "Nginx (memcached)";
      memcached_pass localhost:11211;
    }
    proxy_pass $proxyserver;
  }

  location @apache {
    proxy_pass $proxyserver;
  }

PHP или NGINX?

После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.

Заголовки при использовании Композита в BitrixVM могут быть такие:

  • X-Bitrix-Composite:Nginx (file) - отдача страниц - NGINX, хранение - файлы;
  • X-Bitrix-Composite:Nginx (memcached) - отдача страниц - NGINX, хранение - memcached;
  • X-Bitrix-Composite:Cache (200) - отдача страниц - PHP, хранение - файлы.


10. Настроить опции сайта (10. Configure site options)
97 / 253


1. Настроить параметр proxy_ignore_client_abort (1. Configure proxy_ignore_client_abort for site)
98 / 253

Внимание! Включение глобально параметра nginx proxy_ignore_client_abort нужно делать в крайних случаях, обычно это делать не требуется. Лучше это делать вручную и для конкретных location, а не глобально на весь сервер. В следующих версиях BitrixVM/BitrixEnv этот пункт меню будет переработан.

Включение параметра nginx proxy_ignore_client_abort может быть полезным при неполадках в работе Телефонии, Открытых линиях. Данный параметр определяет, закрывать ли соединение с проксированным сервером в случае, если клиент закрыл соединение, не дождавшись ответа.

Для управления необходимо:

  • Из меню запустить мастер 10. Configure site options > 1. Configure proxy_ignore_client_abort for site, ввести имя сайта и согласиться на включение параметра proxy_ignore_client_abort:

  • Дождаться завершения данной задачи.

Аналогичным образом отключается данный параметр:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


11. Сайты с ошибками (11. Show sites with errors)
99 / 253

Если по каким-либо причинам на сайтах появились серьезные ошибки: отсутствие модулей на сайте или нет подключения к БД (не получается подключиться с данными настроек сайта), то в меню виртуальной машины появляется пункт меню 6. Manage sites in the pool > 11. Show sites with errors:

Выбрав этот пункт меню, отобразится список сайтов с кратким описанием ошибки (в данном примере - нет соединения с базой данных mysql):

Примечание: Пункт меню 6. Manage sites in the pool > 11. Show sites with errors является скрытым и появляется только тогда, когда есть ошибки на сайтах под управлением виртуальной машиной BitrixVM или linux-окружением BitrixEnv. Как только ошибки будут исправлены, данный пункт снова скроется.


7. Управление sphinx (7. Manage sphinx in the pool)
100 / 253

Использование Sphinx в качестве поискового механизма позволит значительно увеличить скорость поиска и снизит нагрузку на сервер.


1. Создать инстанс sphinx на сервере (1. Create sphinx instance on server)
101 / 253

Для установки Sphinx на сервер необходимо:

  • Установить и обновить проект до последней актуальной версии;
  • В меню виртуальной машины выбрать пункт 7. Manage sphinx in the pool > 1. Create sphinx instance on server:

  • Далее ввести имя хоста, где будет запущен сервер поиска Sphinx (в данном примере server1):

  • Выбрать базу данных ядра системы сайта из списка:

  • Дать согласие на запуск полной переиндексации после установки сервера Sphinx:

  • Подождать, пока задача по установке Sphinx и переиндексации будет закончена:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.

Примечание: Ручная настройка поискового механизма Sphinx описана в данном уроке.


2. Обновить настройки sphinx (создать индекс) (2. Update sphinx instance on server (add index))
102 / 253

Чтобы обновить настройки для всех Sphinx-инстансов, нужно перейти в главном меню 7. Manage sphinx in the pool - 2. Update sphinx instance on server (add index):

  • Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 Sphinx-инстанс с помощью меню 7. Manage sphinx in the pool > 1. Create sphinx instance on server.

  • Далее ввести имя хоста, где будет запущен сервер поиска Sphinx (в данном примере server1):

  • Выбрать базу данных ядра системы сайта из списка:

  • Дать согласие на запуск полной переиндексации после установки сервера Sphinx:

  • Подождать, пока задача по установке Sphinx и переиндексации будет закончена.

Эта опция запускает проверку текущей конфигурации одного или нескольких Sphinx-инстансов в пуле (если такие имеются) и запускает принудительную переиндексацию.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.

Примечание: Ручная настройка поискового механизма Sphinx описана в данном уроке.


3. Удалить sphinx на сервере (3. Remove sphinx instance on server)
103 / 253

Для удаления Sphinx-инстанса с сервера необходимо:

  • Выбрать пункт меню 7. Manage sphinx in the pool > 3. Remove sphinx instance on server.

    Примечание: Данный пункт меню появится только тогда, когда будет создан хотя бы 1 Sphinx-инстанс с помощью меню 7. Manage sphinx in the pool > 1. Create sphinx instance on server.

  • Ввести имя хоста удаляемого Sphinx-инстанса (например server1):

  • Выбрать базу данных ядра системы сайта из списка:

  • Подождать, пока задача по удалению Sphinx-инстанса будет закончена.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


8. Управление веб-серверами (8. Manage web nodes in the pool)
104 / 253

В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластеризацию веб-сервера в «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».

При разделении проекта на несколько веб-серверов необходимо решить две задачи:

  • синхронизация данных (файлов) между серверами
  • балансировка нагрузки между серверами

Внимание! Перед тем как начинать использовать кластеризацию веб-сервера в BitrixVM/BitrixEnv нужно предварительно установить «1С-Битрикс: Управление сайтом» или в «Битрикс24 в коробке» с модулем Веб-кластер. Данный модуль входит только в старшие редакции продуктов «1С-Битрикс».


1. Создание веб-сервера (1. Create web instance on server)
105 / 253

Для создания роли веб-сервера нужно:

  • Выбрать пункт меню 8. Manage web nodes in the pool > 1. Create web instance on server и ввести имя хоста в пуле, на котором будет создан веб-сервер (в данном примере - server3):

  • Выбрать вариант создания роли:
    1. one step - все действия по созданию web-роли будут произведены за 1 шаг. Данный вариант рекомендуется на простых проектах, где не так много данных.
    2. two steps - действия по созданию web-роли будут произведены за 2 шага для уменьшения ошибок в процессе создания роли. Данный вариант рекомендуется на крупных проектах, где очень много данных.

      Внимание! Если вы выбрали вариант two steps, после выполнения задачи 1-го шага нужно запустить 2-й шаг таким же образом на этом же сервере.

  • Подождать, пока задачи по созданию веб-сервера будут закончены. И мы увидим, что у нас 2 сервера с ролью web в пуле: server1 и server3:

  • Добавим еще одному серверу в пуле web-роль (server2) аналогичным способом. Мы видим, что у сервера с балансировщиком web-роль имеет тип main, а у дополнительных серверов пула - spare:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Настроить модули PHP (2. Manage PHP extensions)
106 / 253

В разделе 8. Manage web nodes in the pool > 2. Manage PHP extensions можно включить дополнительные модули PHP, которые могут понадобится в продуктах «1C-Битрикс».

На данный момент можно включить модуль SSH2 для PHP - он понадобится для интеграции Ebay в решении «1С-Битрикс» - Интернет магазин:

Выключается данный модуль аналогично:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Удаление роли web c сервера (3. Remove web instance on server)
107 / 253

Для удаления веб-сервера необходимо:

  • Выбрать пункт меню 8. Manage web nodes in the pool > 3. Remove web instance on server:

  • Ввести имя хоста сервера, у которого удаляется роль web (например server3):

    Внимание! Удалять web-роль можно только типа spare, тип main (сервер с балансировщиком) удалять нельзя.

  • Подождать, пока задача по удалению роли будет закончена.
  • В итоге из 3 веб-серверов только на двух останется web-роль (main - server1, spare - server2):

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


9. Мониторинг (9. Monitoring in pool)
108 / 253

При разворачивании проектов на базе BitrixVM/BitrixEnv необходимо следить за состоянием сервера и отдельных его компонентов.

В составе BitrixVM/BitrixEnv уже имеются системы мониторинга - Munin и Nagios, которые имеют большое количество различных компонентов по отслеживанию функционирования всех систем сервера или нескольких серверов в составе кластера.


1. Настроить сервисы мониторинга (1. Configure monitoring services)
109 / 253

Для начала работы систем мониторинга необходимо:

  1. В главном меню виртуальной машины выбрать пункт 9. Monitoring in pool > 1. Configure monitoring services:

  2. Затем мастер предложит изменить логин и пароль для сервисов мониторинга сервера Nagios и Munin:

  3. Далее будет предложено указать e-mail для системных уведомлений Nagios (по умолчанию используется e-mail root пользователя) и данные почтового сервера для отправки e-mail:

    • from address - адрес отправителя, от которого будет осуществляться пересылка писем. В данном случае этот email будет использоваться также как и получатель уведомлений от Nagios.
    • server address or DNS - ip- или dns-адрес почтового сервера. Если нажать Enter, то будет использован адрес по умолчанию (127.0.0.1)
    • server port - порт сервера. Порт зависит от типа соединения, 25 - для обычного и 465 - для зашифрованного (с использованием SSL). Если нажать Enter, то будет использован порт по умолчанию (25).
    • Если необходима SMTP-авторизация, то в строке SMTP authentication наберите y и введите логин и пароль для доступа к SMTP-серверу, в противном случае - n.
    • Если выбрана опция SMTP-авторизации, то понадобится ввести тип авторизации type of authentication method: auto, plain, scrum-sha-1, scrum-md5, gssapi, external, digest-md5, login, ntlm.
    • Если необходим TLS-протокол защищенной передачи данных, то в строке TLS enabled наберите y, в противном случае - n.
  4. Затем мастер сделает необходимые настройки и запустит сервисы мониторинга сервера.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.

Мониторинг

Для мониторинга сервера из браузера нужно зайти по адресам и авторизоваться под учетными записями мониторинга:

  • Munin - http://адрес_сервера/munin/:

  • Nagios - http://адрес_сервера/nagios/:

Примечание: Сменить пароли для систем мониторинга можно с помощью повторного запуска пункта меню 9. Monitoring in pool > 1. Configure monitoring services.

Как проверить e-mail уведомления от Nagios

Проверить работу нотификаций можно легко:

  • Например, остановим сервис МySQL:

    CentOS 6:

    service mysqld stop

    CentOS 7:

    systemctl stop mysqld.service

  • По умолчанию Nagios будет записывать в лог 3 сообщения со статусом CRITICAL;SOFT каждую минуту, а 4-му сообщению даст статус CRITICAL;HARD:

    В итоге сообщение примерно такого содержания должно прийти на почту, указанную в п.3 настройки уведомлений для админа (поле from address):

    Subject: ** PROBLEM Service Alert: server2/MySQL: connection to 3306 is CRITICAL **

***** Nagios *****

Notification Type: PROBLEM

Service: MySQL: connection to 3306
Host: server2
Address: 192.168.1.246
State: CRITICAL

Date/Time: Wed Jul 5 14:12:46 MSK 2017

Additional Info:

connect to address 192.168.1.246 and port 3306: Connection refused

  • После запуска службы MySQL командой # service mysqld start (CentOS 6) или # systemctl start mysqld.service (CentOS 7) в логе Nagios-а появится запись со статусом OK;HARD:

    И должно прийти сообщение на почту:

    Subject: ** RECOVERY Service Alert: server2/MySQL: connection to 3306 is OK **

***** Nagios *****

Notification Type: RECOVERY

Service: MySQL: connection to 3306
Host: server2
Address: 192.168.1.246
State: OK

Date/Time: Wed Jul 5 14:22:46 MSK 2017

Additional Info:

TCP OK - 0.001 second response time on 192.168.1.246 port 3306
  • Как видим, все работает - при возникновении неполадок на каком-либо сервере Nagios отправит уведомление админу на почту с указанием проблемы.

Примечание: Подробнее о email уведомлениях можно прочитать в в документации Nagios.


2. Выключить сервисы мониторинга (2. Disable monitoring services)
110 / 253

Для выключения сервисов мониторинга Nagios и Munin необходимо:

  • Выбрать пункт меню 9. Monitoring in pool > 2. Disable monitoring services:

  • Согласиться на действие:

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

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


3. Добавить хосты для мониторинга (3. Add new host(s) on monitoring)
111 / 253

Если запущены системы мониторинга серверов и был добавлен новый хост в кластер, то система сама отследит новую машину и запустит задачу на добавление этой машины в мониторинг.

Пункт меню 9. Monitoring in pool > 3. Add new host(s) on monitoring позволяет вручную запустить добавление нового хоста в систему мониторинга, если по каким-либо причинам он не добавился в мониторинг:

Примечание: При выборе 9. Monitoring in pool > 3. Add new host(s) on monitoring) задача на автоматическое добавление нового хоста в мониторинг запустится сразу, без каких-либо запросов.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


10. Настроить сервис Push/RTC (10. Configure Push/RTC service)
112 / 253

Внимание! Данный пункт меню доступен в BitrixVM/BitrixEnv с версии 7.1.0.

Push-сервер (pulling-сервер, сервер мгновенных сообщений) предназначен для быстрого обмена сообщениями между пользователями, которые заходят на портал через браузер или подключаются с помощью настольного или мобильного приложений.

По умолчанию в BitrixVM/BitrixEnv для Push&Pull сервера используется модуль Nginx-PushStreamModule. Главный его недостаток - если сервис падает по какой-либо причине, то недоставленные сообщения теряются, что порождает высокую нагрузку на PHP-бэкенд из-за особенностей работы модуля nginx. Новый модуль на NodeJS лишен этих недостатков.


1. Настроить NodeJS RTC сервис (1. Configure NodeJS RTC Service)
113 / 253

Чтобы перейти на новый модуль NodeJS RTC вместо Nginx-PushStreamModule, нужно:

  1. В главном меню виртуальной машины выбрать пункт 10. Configure Push/RTC service > 1. Configure NodeJS RTC Service:

  2. Ввести имя хоста, где нужно запустить NodeJS RTC сервис (в примере мы выбрали server1 c запущенным сервисом Nginx-PushStreamModule), согласиться на смену модуля Nginx-PushStreamModule на NodeJS RTC:

  3. Подождать, пока задачи по запуску NodeJS RTC Push&Pull сервера будут закончены:

Примечание В пуле может быть только один сервис Push&Pull. Если у вас запущен Push&Pull сервис на одном сервере, и вы выбираете в качестве сервера другую машину, то мастер остановит Push&Pull сервис на первой машине и запустит его на другой.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


2. Удалить NodeJS RTC сервис (2. Remove NodeJS RTC Service)
114 / 253

Чтобы перейти с NodeJS RTC обратно на модуль Nginx-PushStreamModule, нужно:

  1. В главном меню виртуальной машины выбрать пункт 10. Configure Push/RTC service > 2. Remove NodeJS RTC Service:

  2. Ввести имя хоста, где нужно перейти обратно на Nginx-PushStreamModule (в примере мы выбрали server1 c запущенным сервисом NodeJS RTC), согласиться на удаление NodeJS RTC:

  3. Подождать, пока задачи по запуску Nginx-PushStreamModule Push&Pull сервера будут закончены:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks. Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


Дополнительные настройки BitrixVM/BitrixEnv
115 / 253

Внимание! Для операций, описанных в данной главе, необходимы начальные знания администрирования. Перед началом проведения данных операций рекомендуется сделать полный бэкап «Виртуальной машины».


Изменение стандартных настроек BitrixVM без отключения автоподстройки
116 / 253

При запуске виртуальной машины BitrixVM или физического сервера с установленным пакетом BitrixEnv сервисом bvat автоматически настраиваются основные параметры Apache, PHP, MySQL и nginx в зависимости от количества доступной памяти. Это позволяет обеспечивать оптимальные настройки сервера.

Но в ряде случаев возникает необходимость изменения некоторых параметров без отключения сервиса bvat. Для внесения таких изменений в настройки сервера предусмотрены специальные конфигурационные файлы, позволяющие переопределять параметры, устанавливаемые сервисом bvat. Они хранятся в директориях:

  • MySQL - /etc/mysql/conf.d/z_bx_custom.cnf
  • Apache - /etc/httpd/bx/custom/z_bx_custom.conf
  • nginx - /etc/nginx/bx/settings/z_bx_custom.conf
  • PHP - /etc/php.d/z_bx_custom.ini

В случае, если в этих директориях нет конфигурационных файлов, то их можно создать самостоятельно.

Внимание! Все изменения стандартных конфигурационных файлов Apache, PHP, MySQL и nginx могут быть утрачены во время обновления виртуальной машины BitrixVM/BitrixEnv. Что бы этого не произошло, все переопределяемые параметры должны быть только в файлах z_bx_custom.*, указанных выше для каждого сервиса.


Добавление ssl-сертификатов в BitrixVM/BitrixEnv
117 / 253

Внимание!: Данное решение является временным, в новых версиях BitrixVM/BitrixEnv будет более удобная поддержка пользовательских SSL-сертификатов.

Предположим у нас есть сайт http://site1.bx, и нам нужно переключить работу сайта на защищенный протокол https.

Наши действия будут такими:

  1. Сначала вы должны получить SSL-сертификат от центра сертификации, который вы выбираете сами. У вас должны быть файлы:
    • site1.bx.key - приватный ключ домена (созданный вами на этапе отправки заявки на получение сертификата или присланный центром сертификации)
    • site1.bx.crt - публичный сертификат домена (присланный центром сертификации)
    Внимание! Если в BitrixVM/BitrixEnv меняется ssl-сертификат с установленного по умолчанию на свой, а сертификат запаролен, то это вызовет проблему в работе мастеров и при перезапуске сервисов. Будет постоянно запрашиваться ввод пароля. Чтобы избежать подобных проблем, нужно удалить пароль из сертификата:
    /path/to/openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key
  2. Далее загружаем полученные сертификаты от центра сертификации, например, в директорию /etc/nginx/ssl/ с помощью любого менеджера файлов по протоколу sftp (например WinSCP).

  3. Дальнейшие команды выполняются в консоли виртуальной машины BitrixVM/BitrixEnv (0. Exit в главном меню) либо аналогичные действия в менеджере файлов, как удобнее.

  4. При обновлении виртуальной машины BitrixVM/BitrixEnv возможна автоматическая перезапись стандартных файлов nginx, поэтому скопируем файл конфигурации ssl.conf в новый файл site1.bx_ssl.conf (название файла может быть любым). Для удобства, это делается для каждого сайта, если их у вас несколько:
    cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/site1.bx_ssl.conf
  5. Затем редактируем файл /etc/nginx/bx/conf/site1.bx_ssl.conf и указываем расположение site1.bx.key (приватный ключ домена) и site1.bx.crt (публичный сертификат домена) в директивах nginx ssl_certificate_key и ssl_certificate соответственно.
    ssl_certificate /etc/nginx/ssl/site1.bx.crt;		# публичный сертификат домена
ssl_certificate_key /etc/nginx/ssl/site1.bx.key;	# приватный ключ домена
  6. Открываем файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_site1.bx.conf и ищем в нем строку:
    include bx/conf/ssl.conf;
    и меняем на:
    include bx/conf/site1.bx_ssl.conf;

    Примечание: Для сайта по умолчанию s1 (который находится в директории /home/bitrix/www) файл будет называться /etc/nginx/bx/site_avaliable/s1.ssl.conf, а для дополнительных сайтов (которые создаются в директории /home/bitrix/ext_www/название_хоста) - /etc/nginx/bx/site_avaliable/bx_ext_ssl_название_хоста.conf.

  7. Проверяем, что конфигурационные файлы nginx без ошибок:
    nginx -t
  8. И если все в порядке, перезапускаем nginx:

    CentOS 6:

    service nginx restart

    CentOS 7:

    systemctl restart nginx.service
  9. Далее, по желанию, можно переключить работу сайта только по протоколу https в меню 6. Mange sites in the pool > 5. Change https settings on site. Как это сделать написано здесь.

  10. И в административном интерфейсе произвести необходимые настройки для контента сайта. Рекомендации прочитать можно здесь.

Теперь даже после обновления виртуальной машины BitrixVM/BitrixEnv, если стандартные файлы конфигурации nginx будут изменены, то сайт продолжит работать по протоколу https.


Увеличение дискового пространства BitrixVM
118 / 253

Внимание! Для операций, описанных в данной главе, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

При использование виртуальной машины BitrixVM или ami-образа BitrixVM, со временем может возникнуть проблема нехватки свободного места.

Решить эту проблему можно двумя способами:

  1. добавить в виртуальную машину еще один жесткий диск, смонтировать его в системе и перенести на него часть контента (наиболее оптимальный способ);
  2. увеличить размер существующего виртуального жесткого диска.


Добавление дополнительного жесткого диска BitrixVM
119 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Так как основной объем дискового пространства потребляется контентом сайтов и их резервными копиями, расположенными в /home/bitrix, а также БД, расположенной в /var/lib/mysql, то на отдельные диски следует выносить именно эти разделы.

Рассмотрим данную задачу на примере переноса на отдельный диск папки /home с контентом сайтов и их резервными копиями.

  • Для этого в настройках виртуальной машины в список оборудования, добавляем новый диск необходимого размера. Все указанные ниже действия необходимо осуществлять под учетной записью администратора root:

  • После добавления диска, для его инициализации, возможно, потребуется перезагрузить сервер. Увидеть новый диск и присвоенное ему буквенное обозначение можно, выполнив команду:
    fdisk -l

  • Запускаем утилиту fdisk для работы с диском /dev/sdb:
    fdisk /dev/sdb

    И командой n создаем новый раздел:

    • основной (primary partition) - команда p и Partition number (1-4): 1;
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске:

    • Для сохранения изменений на диск и выхода из fdisk введите команду w.

  • После сохранения таблицы разделов, форматируем новый раздел и переносим на него информацию из /home:

    CentOS 6
    mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt
service httpd stop
service nginx stop
mv -f /home/* /mnt
umount /mnt
    CentOS 7
    mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt
systemctl stop httpd.service
systemctl stop nginx.service
mv -f /home/* /mnt
umount /mnt
  • Следующим шагом определяем UUID нового диска:
    blkid
/dev/sda1: UUID="99066558-ba04-465c-9962-e827aa2928ec" TYPE="ext4"
/dev/sda2: UUID="8ea38ef9-1ee5-423b-a013-15fd603a678e" TYPE="swap"
/dev/sda3: UUID="08ec5c65-8fd8-47ac-a998-d81195c8f964" TYPE="ext4"
/dev/sdb1: UUID="b2e58731-b621-4bd5-909a-afe3bb5dd8a1" TYPE="ext4"

    и добавляем запись (в данном примере: UUID=b2e58731-b621-4bd5-909a-afe3bb5dd8a1) о нем в /etc/fstab (вместо UUID можно также использовать имя устройства /dev/sdb):

  • Остается только примонтировать новый диск и запустить остановленные ранее службы:

    CentOS 6
    mount /home
service httpd start
service nginx start
    CentOS 7
    mount /home
systemctl start httpd.service
systemctl start nginx.service

Добавление дисков в других средах виртуализации или непосредственно на физическом сервере проходит аналогично.


Увеличение размера существующего жесткого диска BitrixVM
120 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Вторым способом увеличения дискового пространства в BitrixVM является увеличение размера уже существующего жесткого диска виртуальной машины.

В данном примере воспользуемся виртуальной машиной BitrixVM для VMWare и покажем, как увеличить размер системного диска до 100Гб.

  1. Для этого необходимо запустить VMWare Player, в списке виртуальных машин выбрать виртуальную машину BitrixVM и нажать Edit virtual machine settings:

  2. В окне устройств выбрать Hard Disk, размер которого нужно увеличить, и активировать в меню Utilities пункт Expand:

  3. В открывшемся окне Expand Disk Capacity в поле Maximum disk size (GB) указать необходимый объем виртуального диска в гигабайтах (в данном примере - 100Гб):

  4. Далее необходимо запустить виртуальную машину BitrixVM, авторизоваться под root и перейти в режим командной строки (консоль), выбрав пункт меню 0. Exit в виртуальной машине.
  5. Смотрим диск и присвоенное ему буквенное обозначение консольной командой:
    fdisk -c -u -l

    где для диска /dev/sda:

    • sda1 - загрузочный сектор диска;
    • sda2 - файл подкачки (swap);
    • sda3 - раздел, в котором установлена операционная система и который как раз и нужно увеличить.

  6. Запускаем утилиту fdisk для работы с диском /dev/sda:
    fdisk -c -u /dev/sda
  7. Командой d удаляем раздел sda3, выбрав Partition number (1-4): 3:

    Внимание! Данные с диска при этом никуда не удаляются, в данном случае удаляется лишь запись о разделе из таблицы разделов диска.

  8. Далее командой n создаем новый раздел:
    • основной (primary partition) - команда p и Partition number (1-4): 3;
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске.

  9. Для сохранения обновленной таблицы разделов и выхода из fdisk введите команду w:

  10. Чтобы система подгрузила новую таблицу разделов, необходима перезагрузка виртуальной машины:
    reboot
  11. После перезагрузки с помощью утилиты resize2fs увеличиваем размер файловой системы раздела /dev/sda3:
    resize2fs /dev/sda3

Проверить, что раздел увеличен можно с помощью команды df:

Изменение размера дисков в других средах виртуализации проходит аналогично.


Увеличение размера LVM-раздела BitrixVM
121 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Внимание! По умолчанию в CentOS 7 устанавливается менеджер логических томов LVM2 при автоматической разбивке диска на этапе установки системы (в случае установки BitrixEnv c помощью скрипта bitrix_env.sh на готовый CentOS 7). В таком случае изменение размера LVM-раздела будет отличаться от предыдущих способов.

Пусть размер системного диска был увеличен с 20 ГБ до 100Гб, как было сделано ранее в VMWare Player.

Тогда действия по изменению размера LVM-раздела будут такими:

  1. Смотрим, что в системе на данный момент есть из устройств/разделов командой:
    fdisk -l

  2. Убеждаемся, что место в системе автоматически не увеличилось при помощи команды:
    df -h

    Здесь мы также видим и запоминаем имя группы томов и имя тома (у вас они будут другие):

    • cl - имя группы томов;
    • root - имя тома.

  3. Создаем новый раздел sda3 - тип раздела: Linux LVM (код типа 8e) на неразмеченной области. Для этого начинаем работу с устройством sda c помощью команды:
    fdisk /dev/sda
  4. Далее командой n создаем новый раздел:
    • основной (primary partition) - команда p и Partition number (1-3, default 3): 3 (так как у нас было 2 логических раздела sda1 и sda2 - п.1);
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске;
    • укажем тип раздела - команда t и Partition number (1-3, default 3): 3;
    • вводим код типа раздела, соответствующий Linux LVM - 8e;
    • смотрим таблицу разделов - команда p и убеждаемся, что все верно;
    • Раздел sda3 создан. Для сохранения обновленной таблицы разделов и выхода из fdisk - команда w.

  5. Чтобы система подгрузила новую таблицу разделов, необходима перезагрузка виртуальной машины:
    reboot
  6. После перезагрузки необходимо создать физический том sda3:
    pvcreate /dev/sda3
  7. Далее расширяем группу томов на новое пространство, используя имя группы томов cl (которое мы запомнили ранее в п.2):
    vgextend /dev/cl /dev/sda3
  8. Теперь расширим логический том, используя имя тома root (которое мы запомнили ранее в п.2):
    lvextend -l+100%FREE /dev/cl/root
  9. Сканируем диски на предмет наличия групп томов и активируем все найденные группы томов:
    vgscan
vgchange -ay

  10. Узнаем тип файловой системы:
    file -s /dev/sda1

    Видим, что файловая система XFS.

  11. И наконец, расширяем файловую систему XFS (может потребоваться время):
    xfs_growfs /dev/cl/root

    Внимание! Если файловая система не XFS, а, например, ext4 или reiserfs, то команды будут такие (с учетом cl - имя группы томов и root - имя тома из п.2):
    • resize2fs /dev/cl/root - для ext4;
    • resize_reiserfs /dev/cl/root - для reiserfs;

  12. Проверяем итоговый результат:
    df -h


Подключение Swap-раздела
122 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Виртуальная машина BitrixVM поставляется с swap-разделом 256 МБ, а в образе ami он по умолчанию не подключен. Поэтому в процессе эксплуатации может возникнуть необходимость в расширении раздела подкачки.

Как и в случае с увеличением свободного места, наиболее простой способ - добавить дополнительный диск и разместить раздел подкачки на нем, либо создать файл подкачки.

Для этого:

  • подключаем к виртуальной машине диск или создаем файл подкачки:
    dd if=/dev/zero of=/swapfile bs=1M count=1024
  • создаем на диске:
    mkswap /dev/sdb1
    или в файле swap-раздел:
    mkswap /swapfile
  • подключаем раздел подкачки:
    swapon /dev/sdb1
    или файл подкачки:
    swapon /swapfile
  • и наконец, добавляем запись о новом разделе подкачки в /ets/fstab, чтобы не включать после каждой перезагрузки вручную:
    /dev/sdb1 none swap sw 0 0
    или о файле подкачки:
    /swapfile none swap sw 0 0


Корректное монтирование Windows-ресурсов
123 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

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

mount -t cifs -o -fstype=cifs,iocharset=utf8,username=XXXX,password=XXXX,uid=500,gid=501,fmode=0777,noserverino //xxx.xxx.xxx.xxx/folder /home/bitrix/www/docs/folder/smb
где:
  • uid - идентификатор пользователя bitrix;
  • gid - идентификатор группы bitrix;
  • //xxx.xxx.xxx.xxx/folder - путь к сетевому ресурсу;
  • /home/bitrix/www/docs/folder/smb - папка, куда будет смонтирован диск.

Примечание: Использование опции noserverino является обязательным, так как в PHP есть уязвимость.


Настройка Postfix для отправки почты
124 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

По умолчанию в BitrixEnv и BitrixVM используется msmtp для отправки почтовых сообщений.

Преимуществом данного решения является простота его настройки. К недостатком можно отнести медленную отправку почтовых сообщений через внешние сервисы (Google, Yandex).

В большинстве случаев, это не приводит к каким-либо проблемам, так как почтовые события отрабатывают из-под cron-a, но в ряде случаев может создать проблему - например, если почтовые события исполняются на хите (задан параметр немедленной доставки) или разработчик напрямую использует функцию mail().

Рассмотрим настройку отправки почтовых сообщений postfix-ом через Яндекс:

  1. Устанавливаем дополнительные пакеты:
    yum install cyrus-sasl-plain
  2. Добавляем в файл /etc/postfix/main.cf:
    smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
  3. В /etc/postfix/mailpasswd указываем логин и пароль:
    [smtp.yandex.ru]      www@some.ru:password
  4. В /etc/postfix/sender_relay указываем привязку доменов и конкретных отправителей к внешним службам:
    @some.ru [smtp.yandex.ru]
www@some.ru [smtp.yandex.ru]
  5. В /etc/postfix/canonical добавляем для домена указание через какой аккаунт отправлять почту:
    @some.ru   www@some.ru
  6. В /etc/postfix/generic добавляем отправку почты админу на внешний ящик:
    root@localhost admin@mail.xx
bitrix@localhost admin@mail.xx
  7. И выполняем команду postmap для /etc/postfix/generic, /etc/postfix/canonical, /etc/postfix/sender_relay, /etc/postfix/mailpasswd:
    postmap /etc/postfix/generic
postmap /etc/postfix/canonical
postmap /etc/postfix/sender_relay
postmap /etc/postfix/mailpasswd
  8. Изменяем настройки в /etc/php.d/bitrixenv.ini:
    sendmail_path = sendmail -t -i -f www@some.ru          ;bitrix-env
  9. Запускаем все необходимые службы:
    chkconfig saslauthd on
service saslauthd restart
chkconfig postfix on
service postfix restart

Скорость отправки сообщений php-скриптами значительно возрастет, а всю работу по доставке писем до внешнего сервера возьмет на себя postfix. При этом не нужно настраивать полноценный почтовый сервер.


Выполнение всех агентов на Cron
125 / 253

На больших и не очень проектах часто возникает вопрос с переносом исполнения некоторых особо тяжелых агентов на Cron.

  • Для начала полностью отключим выполнение агентов на хите. Для этого необходимо выполнить команду в php-консоли административного меню продукта «1С-Битрикс» /bitrix/admin/php_command_line.php?lang=ru:
    COption::SetOptionString("main", "agents_use_crontab", "N");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

COption::SetOptionString("main", "check_agents", "N");
echo COption::GetOptionString("main", "check_agents", "Y");

    В результате выполнения должно быть NN.

  • Убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:
    define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);

    И добавляем:

    if(!(defined("CHK_EVENT") && CHK_EVENT===true))
   define("BX_CRONTAB_SUPPORT", true);
  • Далее создаем файл проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php:
    <?
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

CAgent::CheckAgents();
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
CEvent::CheckEvents();
?>
  • И добавляем данный скрипт в Cron:
     */5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php

После этого все агенты и отправка системных событий будут обрабатывается из-под cron, раз в 5 минут.

Чтобы не увеличивалась очередь отправки почтовых сообщений, нужно изменить параметр, отвечающий за количество почтовых обрабатываемых за раз событий. Для этого выполняем в php-консоли следующую команду:

COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");


Опции монтирования
126 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Для обеспечения более высокой производительности файловой системы рекомендуем отключать изменение метки времени при чтении файлов и директорий: noatime, nodiratime.

Для этого в /etc/fstab нужно отредактировать (добавить в текущую строку) параметры в строке со своим UUID:

UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 /    ext4    defaults,noatime,nodiratime    1 1
где UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 - уникальный идентификатор диска, который можно узнать в консоли по команде blkid.

Примечание: Вместо UUID можно также использовать имя устройства: /dev/sda1, /dev/sda2, /dev/sda3. Или метку тома если она задана, например: LABEL=root.

После перезагрузки новые настройки начнут действовать.

Чтобы применить новые настройки, не перезагружая сервер, можно выполнить перемонтирование разделов командой:

mount -o remount,noatime,nodiratime /

Примечание: К решению проблемы производительности файловой системы нужно подходить творчески. Если, например, на диске есть еще кеш некоторых приложений, то от предложенных мер производительность может снизиться, так как многие приложения очищают кеш по метке доступа, которые в примере предлагается отключить. В некоторых случаях увеличение времени коммита может дать лучший результат, особенно если много оперативной памяти. Время коммита задается параметром commit. Для установки его в 120 секунд, например, необходимо добавить commit=120. То есть набор опций монтирования будет defaults,noatime,commit=120.

По умолчанию сброс данных и метаданных на диск происходит каждые 5 сек. Откладывание времени сброса, так же может уменьшить фрагментацию файлов на диске, если есть файлы, в которые часто происходит дописывание данных. Например логи.


Подключение IDE
127 / 253

Для упрощения работы с Bitrix Framework в виртуальную машину включён Xdebug. Работает он по схеме:

Перед изменением настроек надо переименовать файл xdebug.ini.disabled в xdebug.ini и перезапустить httpd.

Для настройки машины воспользуйтесь следующим примером:

$ cat /etc/php.d/xdebug.ini
; Enable xdebug extension module
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=192.168.205.1
xdebug.remote_port=9000

Примечание: Xdebug требует использовать proxy при работе через Network Address Translation (NAT), необходимо открыть порт 9000.


BitrixVM API для провайдеров
128 / 253

В главе описывается API, помощью которого можно подключить процедуру заказа/создание машины в управлением пулом в продуктах «1С-Битрикс».


Провайдеры
129 / 253

Все работа с провайдерами осуществляется с помощью плагинов, расположенные в определенном каталоге (на текущий момент все управлением сделано на файлах): /opt/webdir/providers.

Для каждого провайдера предусмотрены:

  • обязательные параметры командной строки для универсализации доступа к их возможностям;
  • стандартизированный вывод по завершению обработки результатов.

Скрипт плагина, который будет использован в web-интерфейсе продуктов «1С-Битрикс», должен быть раcположен по адресу:

/opt/webdir/providers/{provider_name}/bin/{provider_name}

Для подключения в пул плагин провайдера должен поддерживать следующие аргументы командной строки:

  • help - отображает поддерживаемые аргументы командной строки:
    {
  "options": [
    "help",
    "configs",
    "order",
    "order_status"
  ],
  "status": "enabled"
}

    Массив options должен содержать список поддерживаемых опций (например, в данном случае отсутствует опция init, которая позволяет подключиться на этапе создания мастер сервера).

    Опция status может содержать следующие значения: disabled или enabled, что позволяет определить включен или выключен провайдер на конкретном сервере.

  • configs - отображает список поддерживаемых конфигураций:
    {
  "configurations": [
    {
      "id": "1",
      "descr": "Bitrix-env, 1 month, Centos-6 x86_64, CPU 2x1.0 Ghz, Memory 1Gb, HDD 20Gb"
    }
  ],
  "status": "enabled"
}

    configurations - содержит список сервисов/конфигураций, которые может заказать пользователь, используя web интерфейс «1С-Битрикс».

    На текущий момент поддерживается два параметра по каждой конфигурации:

    • id - идентификатор конфигурации, который будет использован в заказе,
    • descr - описание для пользователя.
  • order - позволяет заказать сервер/VPS выбранной конфигурации, вторым параметром в данном случае будет передан номер конфигурации:
    {"task_id":"24"}

    task_id должен содержать номер задания, который используется для дальнейшего опроса и старта добавления машины по завершению.

  • order_status - позволяет получить информацию по заказу:
    {
  "server_password": "XXXXXXXXXXXXXX",
  "status": "finished",
  "server": "xxx.xxx.xxx.xxx",
  "task_id": "24"
}
    где:
    • status - содержит информацию по заказу, может содержать следующие значения:
      • in_progress - находится на обработке со стороны провайдера/хостера;
      • finished - обработка завершена, можно добавлять машину в пул;
      • error - во время выполнения произошла ошибка.
    • server - содержит ip address или имя машины;
    • server_password - содержит пароль пользователя root для копирования ssh-ключей при подключение сервера в пул.

    Любое из действий может сообщить об ошибке с помощью значений в полях error и error_message. Например:

    {
  "error_message": "get_task error N102, No task found",
  "error": 1
}

Внимание! Информацию о работе скрипта, который использует возможности провайдеров и позволяет подключить их в web- интерфейс, см Скрипт работы с провайдерами.


Скрипт работы с провайдерами
130 / 253

Данный скрипт нужен для встраивания плагинов провайдеров в web- интерфейс продуктов «1C-Битрикс».

На текущий момент реализованы следующие методы:

  • list - отображает список всех провайдеров, для которых существуют подкаталоги в директории /opt/webdir/providers на машине:
    {
  "params": {
    "providers": {
      "superprovider": {
        "status": "enabled"
      },
      "amazon": {
        "error": 1,
        "message": "bxProvider::optionsProvider: Provider amazon not exist on the host"
      }
    }
  }
}

    В данном случае, это только включено или выключено, а так же ошибки, который возникли при запросе статуса.

    В случае если провайдеров нет на хосте, список будет пустым:

    {
  "params": {
    "providers": {

    }
  }
}
  • status - покажет статус для провайдера:
    /opt/webdir/bin/bx-provider -a status --provider superprovider -o json
{
  "params": {
    "provider_options": {
      "superprovider": {
        "options": {
          "order_status": 1,
          "order": 1,
          "help": 1,
          "configs": 1,
          "init": 0
        },
        "status": "enabled",
        "files": {
          "execute": "/opt/webdir/providers/superprovider/bin/superprovider",
          "holder": "/opt/webdir/providers/superprovider",
          "config": "/opt/webdir/providers/superprovider/etc/superprovider.conf"
        },
        "name": "superprovider",
        "config": "exists"
      }
    }
  }
}

    В данном случае печатает внутреннюю информацию (используется как есть внутри обработчика), по сути, такой статус больше подходит для отладки работы провайдера, чем для использования в web-интерфейсе.

  • install и uninstall - создает/удаляет данные для провайдера (на текущий момент больше для отладки, возможно, в дальнейшем с помощью этих методов хостеры смогут установить свой плагин на сервер и удалить его):
    /opt/webdir/bin/bx-provider -a install --provider amazon --archive /tmp/amazon-v01.tar.gz
  • configs - отображает список всех конфигураций провайдера:
    /opt/webdir/bin/bx-provider -a configs --provider superprovider -o json
{
  "params": {
    "provider_configs": {
      "superprovider": {
        "configurations": [
          {
            "id": "1",
            "descr": "Bitrix-env, 1 month, Centos-6 x86_64, CPU 2x1.0 Ghz, Memory 1Gb, HDD 20Gb"
          }
        ],
        "status": "enabled"
      }
    }
  }
}
  • order - заказывает виртуальный сервер или VPS:
    /opt/webdir/bin/bx-provider -a order --provider superprovider --config_id 1 -o json
{
  "params": {
    "provider_order": {
      "superprovider": {
        "task_id": "25"
      }
    }
  }
}
  • order_status - отображает статус заказа:
    /opt/webdir/bin/bx-provider -a order_status --provider superprovider --task_id 25 -o json
{
  "params": {
    "provider_order": {
      "superprovider": {
        "server_password": "XXXXXXXXXXXXXXX",
        "status": "complete",
        "server": "xxx.xxx.xxx.xxx"
        "task_id": "25"
      }
    }
  }
}
  • orders_list - список всех заказов, сделанных на хосте:
    /opt/webdir/bin/bx-provider -a orders_list --provider superprovider -o json
{
  "params": {
    "provider_order_list": {
      "superprovider": {
        "25": {
          "status": "finished",
          "mtime": 1403445981,
          "error": 0,
          "message": ""
        },
        "22": {
          "status": "error",
          "mtime": 1403441000,
          "error": 1,
          "message": "cannot add ssh key to the server"
        },
        "21": {
          "status": "complete",
          "mtime": 1403440979,
          "error": 0,
          "message": ""
        },
        "23": {
          "status": "finished",
          "mtime": 1403441229,
          "error": 0,
          "message": ""
        }
      }
    }
  }
}

    Тут добавлен еще один статус по задаче: complete - это значит, что сервер из данного задания был добавлен в пул.

  • order_to_host - запускает процедуру добавления сервера в пул с параметрами, переданными в статусе заказа:
    /opt/webdir/bin/bx-provider -a order_to_host --provider superprovider --task_id 25 -o json


Виртуальная машина BitrixVM v5.x
131 / 253

«1C-Битрикс: Виртуальная машина» - бесплатный программный продукт, готовый к немедленному использованию виртуальный сервер, полностью настроенный, протестированный и адаптированный для оптимальной работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями.

Виртуальная машина сэкономит время и силы на правильное развертывание и администрирование сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».

С помощью специальных ВМ-решений вы можете быстро получить оптимально сконфигурированный сервер, не уступающий по производительности BitrixVM, а по масштабируемости - превосходящий виртуальную машину «1С-Битрикс». Пакеты подготовлены специалистами «1С-Битрикс» и доступны для скачивания и использования.

Решения для оптимизации установки продуктов «1С-Битрикс»:

  1. «1C-Битрикс: Виртуальная машина 5.x»

    «1C-Битрикс: Виртуальная машина 5.x» специально сконфигурирована для быстрого исполнения программных продуктов «1С-Битрикс»: разворачивается за минуты и сразу же готова к работе! На виртуальную машину можно не только установить ознакомительные версии продуктов «1С-Битрикс», но и перенести свои, уже готовые проекты.

    Дистрибутивы BitrixVM доступны для:

    • VMWare;
    • VirtualBox;
    • HyperV.

  2. «1С-Битрикс: Веб-окружение» - Linux

    «1С-Битрикс»: Веб-окружение» - Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах Fedora 12-15 (i386, x86_64), CentOS 5/6 (i386, x86_64), Red Hat Enterprise Linux 5/6 (i386, x86_64).

  3. Virtuozzo Application Template для запуска оптимизированного VPS «Битрикс»

    Пакет Virtuozzo VZ Application Template для «Битрикс» с использованием решения «1С-Битрикс: Веб-окружение» - Linux 2.0. Шаблон предназначен для установки (создания) Virtuozzo контейнеров на основе Fedora 8-12 32-bit и CentOS 5 32-bit / x86_64 packaged as a Virtuozzo EZ Template.

  4. Amazon Elastic Compute Cloud (Amazon EC2)

    Amazon EC2 - это веб-сервис, предоставляющий масштабируемые вычислительные мощности и созданный для быстрого и простого разворачивания веб-приложений на площадках (в облаках) Amazon. Специалистами «1С-Битрикс» подготовлены предконфигурированные образы BitrixVM (AMI-образы) для быстрого запуска приложений «1С-Битрикс» в Amazon EC2, которые включают:

    • CentOS 6.7;
    • NGINX + Apache2;
    • PHP 5.6+;
    • MySQL5 with InnoDB support;
    • Mail server agent;
    • UNIX-like Control Menu with common tasks;
    • IP address via DHCP, or configured by Amazon Elastic IP;
    • HTTPS support.

    Список ami-образов по регионам можно посмотреть на странице BitrixVM.

Внимание!«1C-Битрикс: Виртуальная машина» версии 5.x также позволяет управлять масштабированием серверов пула в простом визуальном режиме в административном интерфейсе с помощью модуля Управление масштабированием.

Глава предназначена для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину BitrixVM. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В документе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине BitrixVM.

Описание установки ПО виртуализации не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации соответствующего ПО.

Если у вас возникнут вопросы по процессу установки продуктов компании «1С-Битрикс», вы можете обратиться в службу Технической поддержки. Обсуждение работы BitrixVM доступно на специализированном форуме или в группе Виртуальные машины Битрикс социальной сети компании «1С-Битрикс».

Внимание! Информацию по «1C-Битрикс: Виртуальная машина» версии 4.3 можно прочитать здесь.

Внимание! Все названия хостов, адреса e-mail, серверов, ip-адреса и т.п информация в учебном курсе указываются в качестве примера. Поэтому при настройке виртуальной машины необходимо использовать свои данные.

Внимание! Если на BitrixVM или в «1С-Битрикс: Веб-окружение» - Linux меняется ssl сертификат с установленного по умолчанию на свой, и сертификат запаролен, то это вызовет проблему в работе мастеров и при перезапуске сервисов. Будет постоянно запрашиваться ввод пароля. Чтобы избежать подобных проблем можно удалить пароль из сертификата: /path/to/openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key.


Установка «1С-Битрикс: Веб-окружение» - Linux 5.x
132 / 253

«1С-Битрикс: Веб-окружение» - Linux будет полезно:

  • Для пользователей и разработчиков, которые использовали продукт «1С-Битрикс: Виртуальная машина» в процессе подготовки сайта и столкнулись с проблемой переноса конфигурации на хостинг или на невиртуальное оборудование и потерей производительности.
  • Для специалистов хостинг-партнеров, планирующих создать шаблоны различных VPS для продуктов «1С-Битрикс».
  • Для системных администраторов, которым требуется быстро подготовить производительную платформу для установки или миграции сайтов на основе «1С-Битрикс».
  • Для программистов и системных администраторов, которым требуется быстро развернуть кластер для проектов на основе «1С-Битрикс».

«1С-Битрикс: Веб-окружение» - Linux позволяет быстро и с минимальными затратами развернуть оптимальное окружение для работы продуктов и решений «1С-Битрикс» на Linux-платформе CentOS 5/6 (i386, x86_64):

  • mysql-server 5.*
  • web-server (Apache 2.2.*)
  • php 5.6.*
  • nginx 1.6.2
  • memcached
  • stunnel
  • catdoc
  • xpdf
  • munin
  • nagios
  • sphinx

Рассмотрим установку «1С-Битрикс: Веб-окружение» - Linux на оборудовании с уже установленной CentOS 6 (i386, x86_64).

  • Авторизуемся на сервер под административным аккаунтом.
  • Загружаем скрипт «1С-Битрикс: Веб-окружение» - Linux и запускаем его командами:
    wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh
chmod +x bitrix-env.sh
./bitrix-env.sh

    Примечание: Если на сервере нет утилиты для загрузки файлов wget, то ее можно установить командой yum install wget

  • В процессе установки будет задан вопрос, какую версию «Веб-окружения» нужно установить (выбираем версию 5) и ждем окончания установки:

  • Далее после завершения установки нужно открыть порты, которые необходимы для нормальной работы продуктов «1С-Битрикс» в Веб-окружении:
    iptables -I INPUT -p tcp --dport 25 -j ACCEPT
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 5222 -j ACCEPT
iptables -I INPUT -p tcp --dport 5223 -j ACCEPT
iptables -I INPUT -p tcp --dport 8890 -j ACCEPT
iptables -I INPUT -p tcp --dport 8891 -j ACCEPT
iptables -I INPUT -p tcp --dport 8893 -j ACCEPT
iptables -I INPUT -p tcp --dport 8894 -j ACCEPT
    где порты обозначают и используются для следующих сервисов:
    • 25 - smtp сервер;
    • 80 - http ;
    • 443 - https;
    • 5222 - bitrix xmpp сервер;
    • 5223 - bitrix xmpp сервер по ssl;
    • 8890 - ntlm авторизация;
    • 8891 - ntlm авторизация по ssl;
    • 8893 - http сервер мгновенных сообщений;
    • 8894 - https сервер мгновенных сообщений.
  • Порты прописаны, необходимо сохранить таблицу командой:
    service iptables save

    Внимание! При установке «1С-Битрикс: Веб-окружение» - Linux версии 7.x+ нужно только сменить пароли при первой авторизации (см. ниже) и создать пул (1. Create Management pool of server). Мастер создания пула откроет все необходимые порты.

  • Установка закончена.
  • Перезагружаем сервер командой reboot, чтобы посмотреть, что все установилось корректно, на экране будет отображено, что запущена машина и ее текущая версия.

  • При первом входе на сервер с логином root будет предложено сменить пароль у пользователя bitrix:

Можно приступать к работе.


Запуск виртуальной машины BitrixVM
133 / 253
  • Загрузите дистрибутив настроенной виртуальной машины BitrixVM.
  • Загруженный архив распакуйте в любую папку, например, С:\BitrixVM\ и запустите виртуальную машину с помощью подходящего ПО:

  • Начнется процесс загрузки операционной системы, установленной на виртуальной машине. В конце загрузки откроется окно:

  • Примечание: Для суперпользователя root по умолчанию задан пароль bitrix.

    При первом запуске виртуальной машины будет предложено сменить пароли суперпользователя root и пользователя bitrix:

    • В строках localhost login укажите текущий логин (root), а в поле Password пароль (по умолчанию bitrix).
    • В строке (current) UNIX password укажите текущий пароль (bitrix) и нажмите Enter.
    • Введите новый пароль в строке Enter new UNIX password и нажмите Enter.
    • Повторите ввод нового пароля в строке Retype new UNIX password и нажмите Enter.

    Аналогично происходит смена пароля пользователя bitrix:

    Примечание: Сменить пароль пользователя bitrix можно позднее в панели управления виртуальным сервером с помощью пункта меню 1. Create Management pool of server - Change bitrix password.

В результате виртуальный сервер готов для использования. Первоначальное меню BitrixVM Available actions выглядит так:

  • 1. Create Management pool of server - создает пул управления сервером;
  • 2. Manage localhost - управление локальным виртуальным сервером;
  • 0. Exit - выход в консоль операционной системы.

Для перехода к выполнению любого действия введите число (от 0 до 2) и нажмите Enter. Например, для настройки локального виртуального сервера в строке наберите 2 (Manage localhost) и нажмите Enter.

Чтобы вернуться в вашу ОС, нажмите Ctrl+Alt.

Чтобы вернуться из shell в меню виртуальной машины, введите команду:

/root/menu.sh

Примечание: При возникновении проблем с сетевым адаптером VMWare Player необходимо перейти в настройки сетевого адаптера (Virtual Machine > Removable Devices > Network Adapter > Settings...), выбрать один из режимов (Bridged, NAT, Host-only):

и перезапустить виртуальный сервер, выбрав пункт меню 2. Manage localhost > 4. Reboot server.

Примечание: При клонировании виртуальной машины BitrixVM или в другом случае при смене MAC-адреса сетевого интерфейса eth0 может возникнуть ошибка IP4: undefined. В таком случае необходимо открыть файл /etc/udev/rules.d/70-persistent-net.rules и в нем удалить (или закомментировать) все строчки для интерфейса eth0 и eth1, сохранить файл и перезагрузить машину командой reboot.

Далее необходимо набрать IP-адрес (полученный в виртуальной машине - IP4) в браузере (в нашем примере это http://192.168.2.15 или https://192.168.2.15). Откроется страница с выбором варианта работы:

Для продолжения необходимо выбрать один из вариантов:

  1. Новая установка - в этом случае будет запущен мастер, который позволяет скачать, установить и создать новый сайт средствами продуктов компании «1C-Битрикс». Шаги этого варианта аналогичны шагам, рассмотренным в главе Установка продукта с помощью BitrixSetup.
  2. Восстановить проект - в этом случае будет запущен мастер, с помощью которого можно будет перенести существующий проект (восстановить проект из резервной копии). Шаги этого варианта аналогичны шагам, рассмотренным в главе Перенос продукта.


Перенос продукта «1C-Битрикс» на виртуальную среду BitrixVM/BitrixEnv
134 / 253

Для переноса сайта с хостинга или локального сервера на виртуальную среду BitrixVM или BitrixEnv необходимы: архив сайта и настроенная виртуальная среда BitrixVM или BitrixEnv. Этот процесс состоит из двух этапов:

  • Создание архива сайта.
  • Копирование сайта в виртуальную среду BitrixVM/BitrixEnv.

Создание архива сайта

  1. Перейти на страницу Резервное копирование (Настройки > Инструменты > Резервное копирование) :

    • архив сайта может быть сохранен в облаке «1С-Битрикс»;

      Примечание: Опция копирования в облако «1С-Битрикс» доступна пользователям с активной лицензией. Также, в целях безопасности, все резервные копии сайта отправляются в облако «1С-Битрикс» всегда зашифрованными. Компания «1С-Битрикс» не может восстановить или поменять пароль! Будьте внимательны, без знания этого пароля восстановить архив не удастся!

    • либо в папке сайта (архив сайта будет сохранен в папке /bitrix/backup/ хостинга с уникальным именем файла).
  2. На вкладке Параметры можно выбрать экспертные настройки создания резервной копии:

    Примечание: Для безопасности данных рекомендуется включить опцию Шифровать данные резервной копии и ввести пароль для архива сайта.

  3. После успешного создания архива сайта он будет доступен на странице Список резервных копий (Настройки > Инструменты > Список резервных копий) . Здесь будут показаны все резервные копии:

  4. Далее понадобится Получить ссылку для переноса с помощью одноименного меню действий:

    и в появившемся окне скопировать ее в буфер обмена:

  5. Также можно скачать архив сайта на локальный компьютер с помощью пункта меню Скачать.

Копирование сайта в виртуальную среду BitrixVM/BitrixEnv

  1. Запустить предварительно настроенную виртуальную среду BitrixVM или BitrixEnv.
  2. В адресной строке браузера ввести http://адрес_виртуальной_машины/ (можно указать домен или ip-адрес).
  3. Откроется мастер установки продукта «1С-Битрикс», где нужно выбрать Восстановить проект:

  4. На этапе загрузки резервной копии выбрать нужный способ хранения архива сайта (в данном случае - ввести ссылку из буфера обмена, полученную на странице со списком резервных копий сайта):

    Примечание: Также есть возможность загрузить архив из облака «1С-Битрикс» (понадобится лицензионный ключ с действующей лицензией) или с локального компьютера, если эти способы были выбраны на этапе создания архива сайта.

  5. После скачивания архива, если архив был зашифрован, то будет предложено ввести пароль:

  6. Далее необходимо настроить подключение к базе данных:

    Настройки подключения к MySQL по умолчанию в виртуальной машине BitrixVM:

    • Сервер: localhost
    • Пользователь БД: bitrix0
    • Пароль: <подставляется автоматически>
    • Имя БД: sitemanager0

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

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

  8. Перенос продукта «1C-Битрикс» на виртуальную среду BitrixVM/BitrixEnv закончен:


Управление хостами (Manage Hosts in the pool)
135 / 253

Для начала работы с сервисами нужно создать и настроить пул сервера или нескольких серверов. Для этого нужно выбрать пункт главного меню 1. Create Management pool of server и ввести название сервера в данном пуле.

После создания пула в основном меню добавятся новые пункты как в главном меню:

Так и в меню Manage Hosts in the pool:


Добавление нового хоста в пул (Add new host in the pool)
136 / 253

Добавление нового хоста в пул (кластер) осуществляется с помощью меню 1. Manage Hosts in the pool > 1. Add new host in the pool.

Для этого необходимо задать ip-адрес или DNS-имя хоста и выбрать короткое имя для подключаемого сервера:

Таким образом, можно добавлять любое количество серверов в пул:

Теперь можно управлять любым сервером пула с одной машины.

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


Удаление хоста из пула (Delete host from pool)
137 / 253

Удаления хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage Hosts in the pool > 2. Delete host from pool .

Для этого необходимо задать ip-адрес или DNS-имя хоста удаляемого из пула сервера:

После подтверждения сервер будет удален из пула:


Перезапуск хоста (Reboot host)
138 / 253

Перезагрузка хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage Hosts in the pool > 3. Reboot host.

Для этого необходимо задать имя хоста (в данном примере - server4) и согласиться на перезапуск сервера:


Обновление BitrixEnv на хосте (Update BitrixEnv on host)
139 / 253

С помощью менеджера пула можно удаленно обновлять Веб-окружение и компоненты системы на любом хосте, входящем в пул.

Например, в пул добавлена виртуальная машина версии 5.0.37, нам нужно обновить ее до 5.0.44.

  • Выбираем пункт меню 1. Manage Hosts in the pool > 4. Update BitrixEnv on host, система спросит имя хоста для обновления и подтверждение действия:

  • Менеджер пула запустит задачу обновления Веб-окружения на удаленном хосте:

  • Через некоторое время система на удаленном хосте обновится до последней версии (в данном примере - 5.0.44)

Таким же образом можно обновлять включенные в пул виртуальные машины версии 4.3.


Смена пароля пользователя bitrix (Change password for bitrix user on host)
140 / 253

Смена пароля для пользователя bitrix осуществляется через пункт меню 1. Manage Hosts in the pool > 5. Change password for bitrix user on host.

Будет выдан запрос имени хоста, на котором нужно сменить пароль пользователя bitrix, и согласие на это действие:

Внимание! Сменить пароль пользователя root через меню виртуальной машины нельзя. Для этого необходимо воспользоваться системными командами ОС. Например, для Centos 6.х консольная команда смены пароля пользователя root: passwd.


Настройка таймзоны в пуле (Configure timezone in the pool)
141 / 253

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

Дата и время на сервере - это не одна конкретная дата и время, это фактически три различных даты и три различных времени со своими часовыми поясами:

  • Время сервера
  • Время PHP
  • Время MySQL

Смена таймзоны происходит через пункт меню веб-окружения 1. Manage Hosts in the pool > 6. Configure timezone in the pool, и меняет дату и время, в трех местах сразу, т.к это очень важный момент, что все три места работают с одинаковыми параметрами времени и даты.

  • После выбора континента, страны и города будет выведен запрос на согласие применения данной таймзоны:

  • После этого будет предложено также изменить таймзону для PHP:

  • И в заключение нужно подтвердить изменение таймзоны для всех серверов, входящих в пул:

Примечание: Корректность установки времени у PHP и MySQL можно проверить также через административный веб интерфейс продуктов «1C-битрикс»: Настройки > Инструменты > Проверка системы.


Обновление PHP и MySQL (Upgrade php and mysql versions)
142 / 253

В процессе обновления BitrixVM до версии 5.1.х и выше PHP и MySQL автоматически не обновляются. Обновить их можно в ручном режиме с помощью пункта меню виртуальной машины 1. Manage hosts in the pool - 8. Upgrade php and mysql versions.

Примечание: Пункт меню 1. Manage hosts in the pool - 8. Upgrade php and mysql versions появится только при обновлении BitrixVM с предыдущих версий до версии 5.1.х и выше.

Внимание! Для того, чтобы воспользоваться обновлением PHP до версии 5.6, необходимо предварительно обновить версию PHP до 5.4 и MySQL до 5.5 с помощью пункта меню 1. Manage hosts in the pool - 8. Upgrade php and mysql versions и далее уже повторно с помощью этого же пункта меню обновить до версии PHP 5.6.

После выбора пункта 8. Upgrade php and mysql versions, подождав пока выполнится фоновая задача обновления, в итоге будут обновлены PHP и MySQL до своих актуальных версий.


Управление локальным сервером (Manage localhost)
143 / 253

  • 1. Configure hostname - задается название хоста виртуального сервера;
  • 2. Configure network interface via DHCP - получение нового IP-адреса автоматически с помощью DHCP-сервера;
  • 3. Configure network interface manually - настройка IP-адреса сервера вручную;
  • 4. Reboot server - перезагрузка виртуального сервера;
  • 5. Shutdown server - выключение виртуального сервера;
  • 6. Update server - обновление компонентов операционной системы виртуальной машины.
  • 0. Previous screen or exit - возвращение к главному меню.


Изменение названия хоста
144 / 253

Чтобы задать имя хоста локального сервера, нужно перейти в главном меню 2. Manage localhost - Configure hostname:

Далее согласиться на изменение имени хоста и ввести название Input hostname - например server1 (по умолчанию имя хоста - localhost.localdomain):

После чего системе будет присвоено новое имя:


Настройка IP-адреса сервера
145 / 253

При первом старте BitrixVM получение IP-адреса сервером происходит автоматически, если в сети есть настроенный DHCP-сервер.

Если по каким-либо причинам необходимо сменить IP-адрес сервера, можно сделать это в двух режимах: автоматическом и ручном.

Автоматическое получение IP-адреса через DHCP-сервер

  • Чтобы сменить IP-адрес локального сервера с помощью DHCP-сервера, нужно перейти в главном меню 2. Manage localhost - 2. Configure network interface via DHCP.
  • Выбрать сетевой интерфейс (в данном примере - eth0) и автоматически будет получен IP-адрес от DHCP-сервера:

Ручное изменение IP-адреса

  • Для задания IP-адреса в ручном режиме необходимо перейти в главном меню 2. Manage localhost - 3. Configure network interface manually.
  • Выбрать сетевой интерфейс (в данном примере - eth0).
  • Ввести данные:

    • Type IP address - новый IP-адрес сервера;
    • Type broadcast - широковещательный адрес сети;
    • Type network mask - маска подсети;
    • Type default gateway - шлюз по умолчанию;
    • Type DNS server - адрес DNS-сервера.
  • Проверить введенные данные и дать согласие на изменение параметров сети сервера:


Обновление локального сервера
146 / 253

Внимание! Обновление продукта «1C-Битрикс: Виртуальная машина» - сложная операция, в процессе которой происходит обновление системных файлов операционной системы виртуальной машины, и для этого необходимы соответствующие знания администрирования *nix-систем. Перед запуском обновления рекомендуется сделать полный бекап «Виртуальной машины».

Для обновления локальной виртуальной машины необходимо выбрать в административном меню пункт 2. Manage localhost - 6. Update server.

Скрипт автоматически проверит обновления компонентов, выдаст общий объем для загрузки и запрос на установку.

Внимание! Этот пункт меню запускает обновление компонентов лишь текущей виртуальной машины. Если у вас несколько серверов в пуле (кластер), то целесообразно производить обновление для всех виртуальных машин, входящих в этот пул.

Примечания:
  • Если после обновления, что-то перестанет работать, то можно вернуть полностью или частично старые файлы настроек соответствующей службы, т.к. конфигурационные файлы при обновлении не перезаписываются, а сохраняются в файлах *.ori.(метка времени).
  • Также в процессе обновления могут отключиться некоторые модули php. Для их включения необходимо выполнить следующие команды:
    mv -f /etc/php.d/(имя модуля).ini.disabled /etc/php.d/(имя модуля).ini
service httpd restart


Настройка MySQL (Configure MySQL servers)
147 / 253

В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластерную конфигурацию master-slave «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».

Ключевые особенности:

  • гибкая балансировка нагрузки SQL
  • простота администрирования
  • дешевое и быстрое неограниченное масштабирование
  • он-лайн бэкап
  • не требуется доработка логики веб-приложения

Схема «master - slave» реализуется средствами MySQL. Платформа «1С-Битрикс» позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.

Внимание! Для создания конфигурации MySQL master-slave необходим модуль Веб-кластер, который входит не во все редакции продуктов «1С-Битрикс».

  • Создание slave сервера MySQL (Create slave MySQL server)
  • Смена master сервера MySQL (Change master MySQL server)
  • Удаление slave сервера MySQL (Remove slave MySQL server)
    •

    Создание slave сервера MySQL (Create slave MySQL server)

    Для создания slave сервера MySQL нужно:

    • Выбрать пункт меню 3. Configure MySQL servers > 2. Create slave MySQL server, придумать и ввести пароли репликации и кластера:

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

    • Ввести имя хоста в пуле, на котором будет создан slave сервер MySQL (в данном примере - server3):

    • Подождать, пока задача по добавлению slave cервера MySQL будет закончена.
    • Создадим аналогичным образом еще один slave сервер MySQL (server4). В итоге получим три сервера MySQL: master (server1) и два slave (server3 и server4):

    Смена master сервера MySQL (Change master MySQL server)

    Для переноса master сервера MySQL на другую машину необходимо:

    • Выбрать пункт меню 3. Configure MySQL servers > 3. Change master MySQL server.
    • Ввести имя хоста для будущего master сервера MySQL из списка доступных slave (например server3):

    • Подождать, пока задача по смене master cервера MySQL будет закончена.
    • В итоге серверы MySQL станут: master (server3) и два slave (server1 и server4):

    Удаление slave сервера MySQL (Remove slave MySQL server)

    Для удаления slave сервера MySQL необходимо:

    • Выбрать пункт меню 3. Configure MySQL servers > 4. Remove slave MySQL server.
    • Ввести имя хоста удаляемого slave сервера MySQL (например server1):

    • Подождать, пока задача по удалению slave cервера MySQL будет закончена.
    • В итоге серверы MySQL станут: master (server3) и один slave (server4):

    Таким образом, мы перенесли master сервер MySQL с машины server1 на server3, создали дополнительный slave сервер MySQL на машине server4 и освободили ресурсы машины server1 под другие роли.

    Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Настройка memcached (Configure memcached servers)
148 / 253

Продукты «1С-Битрикс» позволяет использовать пул серверов memcached для работы с кешем данных.

Это обеспечивает:

  • высокую эффективность - за счет централизованного использования кеша веб-приложением;
  • надежность - за счет устойчивости подсистемы кеширования к выходу из строя отдельных компонентов;
  • неограниченную масштабируемость - за счет добавления новых memcached-серверов.

Внимание! Для использования пула серверов memcached необходим модуль Веб-кластер, который входит не во все редакции продуктов «1С-Битрикс».

  • Создание memcached сервера (Create memcached server)
  • Удаление memcached сервера (Remove memcached server)
    •

    Создание memcached сервера (Create memcached server)

    Для создания memcached сервера нужно:

    • Выбрать пункт меню 4. Configure memcached servers > 1. Create memcached server.
    • Ввести имя хоста в пуле, на котором будет запущен сервер memcached (в данном примере - server2):

    • Подождать, пока задача по запуску cервера memcached будет закончена:

    Удаление memcached сервера (Remove memcached server)

    Для удаления memcached сервера необходимо:

    • Выбрать пункт меню 4. Configure memcached servers > 3. Remove memcached server:
    • Ввести имя хоста удаляемого memcached сервера (например server5):

    • Подождать, пока задача по удалению memcached cервера будет закончена.

    Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Фоновые задачи (Background tasks in the pool)
149 / 253

Все изменения в виртуальной машине - настройки, запуск каких-либо служб, синхронизация и др. осуществляются с помощью скриптов - задач.

Просмотреть историю задач, а также выполняемые в данный момент задачи, можно с помощью пункта меню 5. Background tasks in the pool:

Просмотреть запущенную в данный момент задачу можно с помощью пункта меню 5. Background tasks in the pool > 1. View running tasks:

Для остановки запущенной в данный момент задачи нужно перейти в пункт меню 5. Background tasks in the pool > 1. View running tasks > 1. Stop task и ввести идентификатор задачи:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера.

Чтобы очистить историю задач нужно выбрать пункт меню 5. Background tasks in the pool > 2. Clean history:

Далее выбрать количество дней, за которое нужно оставить историю задач, и фильтр, по которому выбирать задачи (к примеру, выберем все задачи с TaskID common):

После этого будут выведены все задачи, удовлетворяющие заданному интервалу и фильтру, и далее запрос на очистку истории:

Внимание! Если по каким-либо причинам нужно посмотреть лог-файлы выполнения задач, то они находятся в директории /opt/webdir/temp.


Управление сайтами (Manage sites in the pool)
150 / 253

Примечание: При создании сайта через BitrixVM, в Базе данных создается пользователь с двумя записями. Одна запись используется для хоста localhost, вторая - для %. Вторая запись используется для создания кластерной конфигурации или переноса mysql сервера на отдельный хост.


Создание и удаление сайта (Create\Delete site)
151 / 253

Мастер создания дополнительных сайтов, позволяет развернуть на одной виртуальной машине несколько сайтов, как на независимых установках «1С-Битрикс», так и в рамках многосайтовости.

Внимание! В BitrixVM\BitrixEnv версии 5.1.х перед добавлением сайта убедитесь, что у вас используется пустой root пароль к MySQL. При необходимости перед добавлением сайта можно сделать его пустым, а потом вернуть обратно.

В BitrixVM\BitrixEnv версии 7.х root пароль к MySQL не может быть пустым, он устанавливается для BitrixEnv на этапе установки, а для BitrixVM автоматически при первом старте. Изменить его можно в меню 3. Configure MySQL server > 2. Change password for mysql user root.

Добавление дополнительного сайта

Для добавления дополнительного сайта необходимо:

  • Предварительно настроить DNS-сервер или в случае локальной установки указать доменное имя в /etc/hosts на виртуальной машине, а также на всех машинах, с которых будет осуществляться доступ к данному сайту.
  • Далее из административного меню запустить мастер 6. Manage sites in the pool > 1 Create site:

    и указать:
    1. Enter site name - доменное имя дополнительного сайта без www;

      Внимание! Если у вас домен в национальной кодировке (например, кириллический домен), то в данное поле нужно вводить имя домена в Punycode-формате, воспользовавшись любым Unicode-Punycode конвертером (например этим).

    2. Enter site type - тип установки ядра «1С-Битрикс»:
      • kernel - в случае создания дополнительного сайта в рамках отдельной установки - отдельное ядро продукта «1С-Битрикс» в новой директории сайта.
      • ext_kernel - отдельное ядро продукта «1С-Битрикс» в новой директории сайта для создания линков на это ядро в рамках многосайтовости, ядро будет недоступно напрямую, а только через дополнительные сайты (работает в паре с сайтами типа link).
      • link - в случае создания дополнительного сайта в рамках многосайтовости - общее ядро и данные в общей базе с уже установленным продуктом «1С-Битрикс» (работает в паре с ядром ext_kernel).
    3. Enter full path to the Bitrix installation directory - указать путь до ядра продукта «1С-Битрикс», на которые будут сделаны симлинки (для ядра типа link).
    4. Enter site encoding - указать кодировку будущего сайта: UTF-8 или windows 1251 (для ядра типа kernel и ext_kernel).
    5. Do you want to enable cron task on site - включить ли выполнение заданий на cron для будущего сайта (для ядра типа kernel и ext_kernel).
    6. Do you want to specify them - по умолчанию название, логин и пароль базы данных и root-директория сайта создаются автоматически (в файлах dbconn.php и .settings.php), но с помощью данной опции можно указать свои, выбрав ответ y (для ядра типа kernel и ext_kernel).
  • В процессе работы мастера будет создана директория на сервере: /home/bitrix/ext_www/{название_хоста}, в которой будут:
    • символические ссылки на директорию ядра, которую выбрали ранее (если был выбран вариант link).
    • директории и скрипт BitrixSetup для установки или восстановления продукта (если был выбран вариант kernel).
    • директории и скрипт BitrixSetup для восстановления продукта (если был выбран вариант ext_kernel).
  • После завершения задачи по добавлению сайта он будет готов к использованию.

    Примечание: Количество дополнительных сайтов ограничивается лишь лицензией «1С-Битрикс» данной установки.

Внимание! Если был выбран вариант ядра ext_kernel и установлено ядро в /home/bitrix/ext_www/{название_хоста}, то в списке сайтов виртуальной машины данное ядро не появится до тех пор, пока не будет создан хотя бы один сайт (link) на это ядро.

Удаление дополнительного сайта

Для удаления записи о дополнительном сайте необходимо в административном меню «1C-Битрикс: Виртуальная машина» выбрать пункт 6. Manage sites in the pool > 2. Delete site и выбрать директорию удаляемого сайта (Enter site directory):

Внимание! Мастер удаления дополнительного сайта удаляет папку и базу данных дополнительного сайта, поэтому необходимо предварительно сделать бекап важных данных.

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Настройка задач cron (Change cron tasks on site)
152 / 253

По умолчанию в виртуальной машине cron уже включен. Если по каким-либо причинам нужно отключить службу cron, то для этого необходимо:

  • Перейти в главном меню в 6. Manage sites in the pool > 3. Change cron tasks on site и ввести директорию сайта, для которого нужно отключить службу cron:

  • Согласиться на отключение cron и дождаться пока задача будет закончена:

Аналогичным способом осуществляется включение cron:

Внимание! Информацию о том, как настроить в продуктах «1С-Битрикс» обработку всех агентов на cron, можно прочитать здесь.


Настройка почтового сервера (Change e-mail settings on site)
153 / 253

Для настройки интегрированного почтового сервера выполните следующее:

  1. Перейти в главном меню в 6. Manage sites in the pool > 4. Change e-mail settings on site и ввести имя хоста, для которого нужно настроить отправку почты:

  2. Далее ввести необходимые данные для почтового сервера:

    • from address - адрес отправителя, от которого будет осуществляться пересылка писем.
    • server address or DNS - ip- или dns-адрес почтового сервера. Если нажать Enter, то будет использован адрес по умолчанию (127.0.0.1)
    • server port - порт сервера. Порт зависит от типа соединения, 25 - для обычного и 465 - для зашифрованного (с использованием SSL). Если нажать Enter, то будет использован порт по умолчанию (25).
    • Если необходима SMTP-авторизация, то в строке SMTP authentication наберите y и введите логин и пароль для доступа к SMTP-серверу, в противном случае - n.
    • Если выбрана опция SMTP-авторизации, то понадобится ввести тип авторизации type of authentication method: auto, plain, scrum-sha-1, scrum-md5, gssapi, external, digest-md5, login, ntlm.
    • Если необходим TLS-протокол защищенной передачи данных, то в строке TLS enabled наберите y, в противном случае - n.

  3. Дождаться пока задача по настройке почтового сервера будет закончена.
  4. Убедиться в правильности введенных данных настройки почтового сервера можно снова в 6. Manage sites in the pool > 4. Change e-mail settings on site:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Настройка https на сайте (Change https settings on site)
154 / 253

По умолчанию в виртуальной машине включена поддержка доступа к сайтам через протоколы HTTP и HTTPS.

Если необходимо оставить доступ к сайту только по защищенному протоколу HTTPS, то для этого нужно:

  • Перейти в главном меню в 6. Mange sites in the pool > 5. Change https settings on site и ввести имя хоста, для которого нужно настроить протокол доступа:

  • Согласиться на отключение HTTP доступа и дождаться пока задача будет закончена:

    Внимание! Для доступа к сайту только по протоколу HTTPS необходим SSL-сертификат от доверенного центра сертификации, иначе браузеры будут выдавать ошибку, что сертификат безопасности сайта не является доверенным.

Аналогичным способом осуществляется возврат доступа к сайту по протоколу HTTP:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Настройка резервного копирования сайта (Change backup settings on site)
155 / 253

При разворачивании проектов на базе BitrixVM, часто встает задача создания резервной копии проекта по расписанию.

В «1C-Битрикс: Виртуальная машина» версии 4.х появился функционал автоматического резервного копирования сайта, находящегося в директории /bitrix/home/www/, и базы данных. Бекап будет создан по расписанию в виде архива .tar.gz и записан в директории /home/bitrix/backup/archive/.

У данного способа есть как преимущества, так и недостатки в сравнении с встроенным в продукты «1С-Битрикс» механизмом создания резервной копии:

  • К преимуществам относятся более высокая скорость создания резервной копии и независимость от работоспособности проекта.
  • Из недостатков стоит отметить то, что при использование данного способа нельзя сделать резервную копию файлов, расположенных в облачных хранилищах.

Для создания расписания автоматического резервного копирования средствами BitrixVM необходимо:

  • В меню виртуальной машины выбрать пункт 6. Manage sites in the pool > 6. Change backup settings on site.
  • Выбрать из списка имя хоста и согласиться на изменение настроек расписания автоматического резервного копирования:

  • Выбрать периодичность и час запуска автоматического резервного копирования:

    Если необходимо выполнить более точную настройку бэкапов, можно воспользоваться утилитой командной строки:

    /opt/webdir/bin/bx-sites -a backup -d dbcp --enable --minute=10 --hour=18 --day=any --month=any --weekday=any

    Примечание: Как настроить правильное время в «1C-Битрикс: Виртуальная машина» см. здесь.

  • На этом работа мастера настройки завершена, и в Cron (/etc/crontab) добавляется задача резервного копирования проекта:

    Бэкап делается для ядра (сайта типа kernel и ext_kernel) и всех его link, если такие существуют. Для этого создается задание в crontab-файле:

    10 22 * * * bitrix /opt/webdir/bin/bx_backup.sh sitemanager0 /home/bitrix/backup/archive

    В качестве первой опции указывается имя БД, второй опцией указывается каталог, в котором будет создан архив.

    В итоге скрипт создаст архив следующего вида: www_backup__DD.MM.YYYY_<random_string>.tar.gz (например - www_backup_dbcp_21.10.2014_1RJKXbMv.tar.gz).

    Внутри архива должны присутствовать следующие файлы:

    1. дамп БД /home/bitrix/mysql_dump__DD.MM.YYYY_.sql
    2. данные сайта ядра
    3. данные сайтов типа ссылок с полным путем

Управление бэкапами через bx-sites

  • -a|--action - действие по управлению сайтами, в данном случае это backup
  • -d|--database - название БД (в бэкапе будут содержаться данные для всех сайтов, которые используют эту БД)
  • --enable|--disable - включение или отключение бэкапа для сайтов
  • --minute - параметры записи в crontab файле (минуты)
  • --hour - параметры записи в crontab файле (часы)
  • --day - параметры записи в crontab файле (день)
  • --month - параметры записи в crontab файле (месяц)
  • --weekday - параметры записи в crontab файле (день недели)

В случае успешного выполнения утилита вернет новые опции для сайта:

/opt/webdir/bin/bx-sites -a backup -d sitemanager0 --enable --minute=10 --hour=23 --day=1 --month=any --weekday=any -o json | python -mjson.tool
...
            "BackupCronFile": "/etc/crontab",
            "BackupDay": "1",
            "BackupFolder": "/home/bitrix/backup/archive",
            "BackupHour": "23",
            "BackupMinute": "10",
            "BackupMonth": "*",
            "BackupTask": "enable",
            "BackupVersion": "v5",
            "BackupWeekDay": "*",
...

Списки исключений

Ряд файлов/каталогов необходимо исключить из резервной копии. Список таких исключений можно найти в файле /opt/webdir/bin/ex.txt.

По умолчанию, в нем находятся следующие подкаталоги:

bitrix/cache
bitrix/managed_cache
bitrix/stack_cache
bitrix/local_cache
bitrix/backup
bitrix/tmp
upload/tmp
upload/resize_cache

Содержимое бэкапа/восстановление

Как уже сказано выше, в бэкап включается:

  • сам каталог сайта ядра (kernel или ext_kernel);
  • файл dump БД (/home/bitrix/mysql_dump_<db>.sql);
  • каталоги сайтов (link), которые используют ядро.

Например команда:

/opt/webdir/bin/bx_backup.sh sitemanager0 /home/bitrix/backup/archive

создает файл www_backup_sitemanager0_30.01.2015_bnnW1NPm.tar.gz в директории /home/bitrix/backup/archive/

Для восстановления, нужно перейти в DocumentRoot ядра, выполнить:

tar xzvvf www_backup_sitemanager0_30.01.2015_zEQkXREd.tar.gz ./
...
-rw-r--r-- bitrix/bitrix    5013 2015-01-30 14:02 ./workgroups/.left.menu_ext.php
-rw-r--r-- bitrix/bitrix     319 2015-01-30 14:01 ./.top_links.menu.php
-rw-r--r-- root/root     5313008 2015-01-30 14:22 home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm.sql
drwxr-xr-x                    Creating directory: home
drwxr-xr-x                    Creating directory: home/bitrix
-rw-r--r-- root/root          44 2015-01-30 14:22 home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm_after_connect.sql

После чего нужно восстановить БД:

mysql sitemanager0 < home/bitrix/mysql_dump_sitemanager0_30.01.2015_bnnW1NPm_after_connect.sql

И данные дополнительных сайтов, если они есть:

rsync -av home/bitrix/ext_www/ /home/bitrix/ext_www/

Примечание: Не забывайте следить за свободным местом на диске и периодически удалять старые резервные копии.


Настройка NTLM-авторизации на всех сайтах (Configure NTLM auth for all sites)
156 / 253

Для поддержки механизма NTLM-авторизации продуктами «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке» необходим модуль AD/LDAP интеграция версии 11.5.0 и выше.

После включения и настройки новый механизм NTLM-авторизации начинает работать следующим образом:

  • неавторизованный посетитель приходит на проект, где обработчиком события он перенаправляется на открытый порт Apache (8890 для http или 8891 для https);
  • Apache выполняет NTLM-авторизацию пользователя и пользователь перенаправляется назад на 80 или 443 порт (для http и https соответственно);
  • следующие переходы по сайту пользователь выполняет в обычном режиме.

Рассмотрим настройку на примере «Битрикс24 в коробке».

Настройка NTLM-авторизации пользователей в «Битрикс24 в коробке»

  • Во время установки, в мастере выбираем Разрешить пользователям Active Directory авторизовываться на портале:

  • Далее вводим настройки подключения к домену AD, проверяем соединение:

  • Указываем соответствия групп в AD группам корпоративного портала:

  • После завершения установки в административном разделе портала открываем страницу Active Directory / LDAP серверы (Настройки > AD/LDAP):

  • редактируем параметры сервера Active Directory, указывая домен для NTLM авторизации:

  • После этого заходим в настройки модуля AD/LDAP и устанавливаем Использовать NTLM авторизацию:

Продукт «1С-Битрикс» готов к использованию NTLM-авторизации, осталось настроить виртуальную машину.

Внимание! Если необходимо для локальной сети компании настроить NTLM-авторизацию, а для сотрудников, работающих с порталом, использовать стандартную авторизацию, то дополнительно в настройках модуля AD/LDAP нужно указать диапазон IP-адресов, для которых необходима NTLM-авторизация - Ограничить NTLM переадресацию следующей подсетью (например, 192.168.0.1/24):

Настройка NTLM-авторизации пользователей в «1С-Битрикс: Виртуальная машина»

Для настройки виртуальной машины необходимо подключитьcя к ней под пользователем root, выбрать пункт меню 6. Manage sites in the pool > 7. Configure NTLM auth for all sites и ввести необходимые данные:

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

Примечание: Проверить, что компьютер успешно введен в домен можно командой:
net ads testjoin

Настройка завершена, для успешной NTLM-авторизации осталось проверить настройки браузеров.

Настройка NTLM-авторизации в браузерах

  • Internet Explorer

    Для успешной NTLM-авторизации нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости нужно добавить):

  • Mozilla Firefox:

    Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris на странице Firefox: about:config)

Примечание: Действия по включению NTLM-авторизации на уже установленном продукте «Битрикс24 в коробке», а также в «1С-Битрикс: Управление сайтом» аналогичны перечисленным выше, за исключением того, что сервер Active Directory добавляется вручную в административном разделе.


Настройка xmppd|smtpd сервисов для сайта (Configure optional services (xmppd|smtpd) for site)
157 / 253

Мастер позволяет управлять работой сервисов XMPP и SMTP с помощью Cron. Это может понадобится, если необходимо рассылать jabber- и почтовые сообщения в случае, если на сайте нет активности, т.е если все события на сайте работают на хитах.

Для управления необходимо:

  • Из административного меню запустить мастер 6. Manage sites in the pool > 8 Configure optional services (xmppd|smtpd) for site:

  • Далее указать:
    • Enter site-name - имя сайта;
    • Enter service name - имя сервиса xmppd или smtpd.
  • И согласиться на активацию работы сервисов через Cron:

  • После завершения данной задачи jabber-уведомления и почтовые сообщения будут отправляться по cron-расписанию, независимо от активности на сайте.

Аналогичным образом отключается данные опции:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Настройки NGINX в BitrixVM для работы с композитом
158 / 253
Внимание! Настройки в виртуальной машине BitrixVM должны производиться после осуществления настроек Композитного сайта в Административном разделе. Если такие настройки выполнены в колонке Composite должно стоять Y.

Конфигурации NGINX для работы с композитом

Примечание: Если сайтов несколько, то для каждого сайта, для которого включается Композитный сайт, нужно осуществить настройки, описанные ниже.

Управление настройками композитного кеша для NGINX находятся в меню виртуальной машины: 6. Manage sites in the pool > 9. Configure nginx for composite:

Эта настройка выполняет следующие действия:

  1. По настройкам, заданным в форме Композитный сайт в Административном разделе, создает конфигурационный файл условий работы композита, персональных для сайта, в каталоге /etc/nginx/bx/maps. Например, включен или выключен композит для https запросов.
  2. Обновляет настройки сайта, добавляет:
    • проверку условий, глобальных (общих для всех сайтов) и персональных,
    • выбранного для композита хранилища (files, memcached), если все условия выполняются.

Включение и обновление настроек NGINX для композита

Для включения или обновления настроек:

  1. Укажите имя сайта.
  2. Подтвердите выбор, запустится фоновое задание, которое выполнит все настройки описанные в предыдущих пунктах.

Примечание. Так же можно воспользоваться утилитой командной строки bx-sites. (Не забудьте указать нужный сайт вместо default в примере.)
/opt/webdir/bin/bx-sites -o json -a composite --enable --site=default

Выключение настроек NGINX по работе с композитом

Для отключения настроек:

  1. Укажите имя сайта.
  2. Откажитесь от обновления существующих настроек.
  3. Подтвердите отключение настроек Композита, запустится фоновое задание, которое вернет настройки сайта к значениям по умолчанию.

Примечание Так же можно воспользоваться утилитой командной строки bx-sites. (Не забудьте указать нужный сайт вместо default в примере.)
/opt/webdir/bin/bx-sites -o json -a composite --disable --site=default

PHP или NGINX?

После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.

Заголовки при использовании Композита в BitrixVM могут быть такие:

  • X-Bitrix-Composite:Nginx (file) - отдача страниц - NGINX, хранение - файлы;
  • X-Bitrix-Composite:Nginx (memcached) - отдача страниц - NGINX, хранение - memcached;
  • X-Bitrix-Composite:Cache (200) - отдача страниц - PHP, хранение - файлы.


Условия работы композитного кеша
159 / 253

Примечание: Указанные в этом уроке настройки производить не нужно. Здесь дано описание того, что происходит при включении настроек NGINX на технологию Композитный сайт в BitrixVM только для ознакомления.

Условия разделены на две группы:

  • глобальные условия, общие для всех сайтов
  • персональные условия, условия, которые зависят от настроек выбранных в настройках Композитный сайт:

Глобальные условия

Настройки определяются в файле: /etc/nginx/bx/maps/composite_settings.conf. NGINX не использует технологию Композитный сайт, если соблюдается хотя бы одно условие:

  1. есть заголовок BX_ACTION_TYPE,
  2. есть заголовок BX_AJAX,
  3. это не GET-запрос,
  4. в query_string есть параметр ncc,
  5. в query_string есть параметр bxajaxid,
  6. в query_string есть параметр sessid,
  7. запрос сделан из IE ранее 10 версии,
  8. запрос по адресу /bitrix/,
  9. запрос по адресу /index_controller.php,
  10. есть кука NCC,
  11. есть куки LOGIN, UIDH и при этом нет куки CC.

Определение условий сделано через http_ngx_map_module:

  • По каждому из условий создано свое отображение. Например, в случае если переменная $http_bx_action_type содержит данные, то композитный ключ $not_bx_action_type будет содержать 0.
    map $http_bx_action_type $not_bx_action_type {
  default "0";
  ''      "1";
}
  • Все условия используются для финальной проверки:
    # test all global conditions
map "${not_bx_action_type}${not_bx_ajax}${is_get}${non_arg_ncc}${non_arg_bxajaxid}${non_arg_sessid}${is_modern}${is_good_uri}${non_cookie_ncc}${is_storedAuth}" $is_global_composite {
  default     "1";
  ~0          "0";
}

    Если хоть одно из условий содержало 0, то итоговое значение переменной $is_global_composite будет равно 0.

Персональные условия для сайта

Персональные проверки NGINX для сайта, определяются в момент включения или обновления композита из консольного меню. Для таких настроек создается и обновляется файл в каталоге: /etc/nginx/bx/maps/. Имя файла имеет специальный формат: <ID>.cache_<SITE_NAME>.conf, где:

  • ID - уникальный идентификатор сайта для кеша (инкрементное значение от 1),
  • SITE_NAME - имя сайта в системе (example.org).

NGINX не будет использовать композитный кеш, если выполняется хотя бы одно из условий:

  1. в query_string есть параметр из конфига (ключ ~EXCLUDE_PARAMS в .config.php),
  2. запрос по протоколу HTTPS (по галочке в настройках),
  3. запрос на домен, не указанный в списке доменов (ключ DOMAINS в .config.php),
  4. запрос по адресу, не указанному в "маске включения" ( ключ ~INCLUDE_MASK в .config.php),
  5. запрос по адресу, указанному в списке "маска исключений" ( ключ ~EXCLUDE_MASK в .config.php).

Определение условий сделано через http_ngx_map_module:

  • По каждому из условий, найденных в .config.php, создается свое отображение. Например, если задано условие INCLUDE_MASK для запроса, будет создана следующая структура:
    # test include uri for site
map $uri $is_include_uri_02 {
  default  "0";
  "~*^.*?\.php$"  "1";
  "~*^.*?/$"  "1";

}

    Если переменная $uri содержит одно из следующих регулярных выражений, то $is_include_uri_02 будет содержать 1, в остальных случая переменная будет равна 0.

    Примечание: Обратите внимание, что в переменной используется идентификатор сайта, это сделано для того, чтобы разграничить условия разных сайтов.

  • Все найденные условия, используются для финальной проверки:
    # variable $is_site_composite_02 used in site config
map "${config_domain_02}${is_include_uri_02}${not_exclude_uri_02}${not_https_schema_02}" $is_site_composite_02 {
  default   "1";
  ~0        "0";
}
    Если хоть одна из переменных получит значение 0, переменная $is_site_composite_02 будет содержать 0, в остальных случаях 1.

Ключ поиска в композите

Ключ - это файл, который NGINX будет искать в композитном кеше (ключ для mecached хранилища, файл в случае хранения на файлах). Он нужен для того, чтобы привести запрос на сайт (uri) к универсальному виду.

Данный ключ определяется в глобальных настройках в файле /etc/nginx/bx/maps/composite_settings.conf. Так же, как для условий, используется модуль nginx ngx_map_module:

map $uri $composite_key {
  default                         $uri;
  ~^(?P.+)/$           $non_slash;
  ~^(?P.+)/index.php$  $non_index;
  ~^(?P.+)/index.html$ $non_index;
}

Действуют следующие правила:

  • Если запрос заканчивается на слеш, то вырезается финальный слеш из запроса.
  • Если запрос содержит index.php или index.html, то они вырезаются из запроса.


Конфигурационный файл сайта
160 / 253

Примечание: Указанные в этом уроке настройки производить не нужно. Здесь для ознакомления дано описание того, что происходит при включении настроек NGINX на технологию Композитный сайт в BitrixVM.

Проверки для включения технологии на стороне NGINX используются в конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled. В случае стандартной конфигурации, файл обычно содержит следующие настройки:

    # Include parameters common to all websites
    include bx/conf/bitrix.conf;

При включенной технологии Композитный сайт, настройки зависят от выбранного хранилища.

Хранение в файлах

  1. В файле /bitrix/html_pages/.config.php опция STORAGE содержит значение files.
  2. В конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled, должно быть прописано:
      # определяем ключ композита и файл на диске
  set $composite_cache    "bitrix/html_pages/${host}${composite_key}/index@${args}.html";
  set $composite_file     "${docroot}/${composite_cache}";

  # файл, который определяет включен ли композит на сайте или нет
  set $composite_enabled  "${docroot}/bitrix/html_pages/.enabled";

  # переменная, которая используется для композитной проверки
  set $use_composite_cache "";
  # если переменная глобальных условий содержит 1, добавляем признак в  use_composite_cache
  if ($is_global_composite  = 1) {set $use_composite_cache "A";}
  # если переменная персональных условий сайта содержит 1, добавляем признак use_composite_cache
  if ($is_site_composite_02 = 1) {set $use_composite_cache "${use_composite_cache}B";}

  # Подключаем конфиг, который содержит наши стандартные настройки, без  location по умолчанию
  include bx/conf/bitrix_general.conf;

  # Основной location
  location / {

    # если файл включения композита существует, добавляем признак в use_composite_cache
    if (-f $composite_enabled)     { set $use_composite_cache "${use_composite_cache}C"; }

    # если файл кеша существует, добавляем признак в use_composite_cache
    if (-f $composite_file)  { set $use_composite_cache "${use_composite_cache}D"; }

    # если все четыре условия выполняются, отправляем запрос в location c кешем
    if ($use_composite_cache = "ABCD") { rewrite .* /$composite_cache last; }

     # по дефолту отправляем в apache
    proxy_pass $proxyserver;
  }

Хранение в memcached

  1. В файле /bitrix/html_pages/.config.php опция STORAGE содержит значение memcached или memcached_cluster.

  2. В конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled, должно быть прописано:
    # устанавливаем параметры подключения для memcached
  memcached_connect_timeout 1s;
  memcached_read_timeout 1s;
  memcached_send_timeout 1s;
  # ключ поиска
  set $memcached_key "/${host}${composite_key}/index@${args}.html";

  # включен ли композитный кеш
  set $composite_enabled  "${docroot}/bitrix/html_pages/.enabled";
  # переменная, которая используется для проверки работы с композитом при запросе пользователя
  set $use_composite_cache "";
  # учитываем глобальные условия
  if ($is_global_composite  = 1) {set $use_composite_cache "A";}
  # учитываем персональные условия
  if ($is_site_composite_02 = 1) {set $use_composite_cache "${use_composite_cache}B";}

  # подключаем общие параметры для bitrix окружения, без использования  default location
  include bx/conf/bitrix_general.conf;

  # основной location
  location / {
     # если данные не найдены в кеше проксируем запрос на apache
    error_page 404 405 412 502 504 = @apache;

    # учитываем наличие .enabled файла
    if (-f $composite_enabled)     { set $use_composite_cache "${use_composite_cache}C"; }

    default_type text/html;
    # если все совпало, отправляем запрос вmecached
    if ($use_composite_cache = "ABC") {
      add_header Content-Encoding deflate;
      add_header X-Bitrix-Composite "Nginx (memcached)";
      memcached_pass localhost:11211;
    }
    proxy_pass $proxyserver;
  }

  location @apache {
    proxy_pass $proxyserver;
  }

PHP или NGINX?

После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.

Заголовки при использовании Композита в BitrixVM могут быть такие:

  • X-Bitrix-Composite:Nginx (file) - отдача страниц - NGINX, хранение - файлы;
  • X-Bitrix-Composite:Nginx (memcached) - отдача страниц - NGINX, хранение - memcached;
  • X-Bitrix-Composite:Cache (200) - отдача страниц - PHP, хранение - файлы.


Сайты с ошибками (Show sites with errors)
161 / 253

Если по каким-либо причинам на сайтах появились серьезные ошибки: отсутствие модулей на сайте или нет подключения к БД (не получается подключиться с данными настроек сайта), то в меню виртуальной машины появляется пункт меню 6. Manage sites in the pool > 10. Show sites with errors:

Выбрав этот пункт меню, отобразится список сайтов с кратким описанием ошибки (в данном примере - нет соединения с базой данных mysql):

Примечание: Пункт меню 6. Manage sites in the pool > 10. Show sites with errors является скрытым и появляется только тогда, когда есть ошибки на сайтах под управлением виртуальной машиной BitrixVM или linux-окружением BitrixEnv. Как только ошибки будут исправлены, данный пункт снова скроется.


Управление sphinx (Manage sphinx in the pool)
162 / 253

Использование Sphinx в качестве поискового механизма позволит значительно увеличить скорость поиска и снизит нагрузку на сервер.

Для его установки необходимо:

  • Установить и обновить проект до последней актуальной версии;
  • В меню виртуальной машины выбрать пункт 7. Manage sphinx in the pool > 1. Create sphinx instance on server:

  • Далее ввести имя хоста, где будет запущен сервер поиска Sphinx (в данном примере server2):

  • Выбрать базу данных ядра системы сайта из списка:

  • Дать согласие на запуск полной переиндексации после установки сервера Sphinx:

  • Подождать, пока задача по установке Sphinx и переиндексации будет закончена:

Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.

Примечание: Ручная настройка поискового механизма Sphinx описана в данном уроке.


Управление веб-серверами (Manage web nodes in the pool)
163 / 253

В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластеризацию веб-сервера в «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».

При разделении проекта на несколько веб-серверов необходимо решить две задачи:

  • синхронизация данных (файлов) между серверами
  • балансировка нагрузки между серверами

Внимание! Для кластеризации веб-сервера необходим модуль Веб-кластер, который входит не во все редакции продуктов «1С-Битрикс».

  • Создание веб-сервера (Create web instance on server)
  • Удаление веб-сервера (Remove web instance on server)
    •

    Создание веб-сервера (Create web instance on server)

    Для создания веб-сервера нужно:

    • Выбрать пункт меню 8. Manage web nodes in the pool > 1. Create web instance on server, :

    • Ввести имя хоста в пуле, на котором будет создан веб-сервер (в данном примере - server5):

    • Подождать, пока задача по созданию веб-сервера будет закончена.

    Удаление веб-сервера (Remove web instance on server)

    Для удаления веб-сервера необходимо:

    • Выбрать пункт меню 8. Manage web nodes in the pool > 2. Remove web instance on server.
    • Ввести имя хоста удаляемого веб-сервера (например server1):

    • Подождать, пока задача по удалению веб-cервера будет закончена.
    • В итоге из двух веб-серверов останется один на машине server5:

    Таким образом, мы перенесли веб-сервер с машины server1 на server5, освободив ресурсы машины server1 под другие роли.

    Внимание! Задачи могут выполняться довольно длительное время (до 2-3 часов и более) в зависимости от сложности задачи, объема данных, используемых в этих задачах, мощности и загруженности сервера. Проверить текущие выполняемые задачи можно с помощью меню 5. Background tasks in the pool > 1. View running tasks.


Мониторинг (Monitoring in pool)
164 / 253

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

В составе «1C-Битрикс: Виртуальная машина» версии 5.х уже имеются системы мониторинга такие как Munin и Nagios, которые имеют большое количество различных компонентов по отслеживанию функционирования всех систем сервера.

Для начала работы систем мониторинга необходимо:

  • В главном меню виртуальной машины выбрать пункт 9. Monitoring in pool > 1. Enable monitoring in the pool:

  • Затем мастер сделает необходимые настройки и запустит сервисы мониторинга сервера:

Для мониторинга сервера из браузера нужно зайти по адресам и авторизоваться под учетными записями мониторинга:

  • Munin - http://адрес_сервера/munin/:
    логин: admin
    пароль: muninBitrixMon

  • Nagios - http://адрес_сервера/nagios/:
    логин: nagiosadmin
    пароль: nagiosBitrixMon

Примечание: Сменить пароли для систем мониторинга можно с помощью консольных команд:
  • для Munin: htpasswd /etc/munin/passwd admin
  • для Nagios: htpasswd /etc/nagios/passwd nagiosadmin


Дополнительные настройки BitrixVM
165 / 253

Внимание! Для операций, описанных в данной главе, необходимы начальные знания администрирования. Перед началом проведения данных операций рекомендуется сделать полный бэкап «Виртуальной машины».


Изменение стандартных настроек BitrixVM без отключения автоподстройки
166 / 253

При запуске виртуальной машины BitrixVM или физического сервера с установленным пакетом BitrixEnv сервисом bvat автоматически настраиваются основные параметры Apache, PHP, MySQL в зависимости от количества доступной памяти. Это позволяет обеспечивать оптимальные настройки сервера.

Но в ряде случаев возникает необходимость изменения некоторых параметров без отключения сервиса bvat. Для внесения таких изменений в настройки сервера предусмотрены специальные конфигурационные файлы, позволяющие переопределять параметры, устанавливаемые сервисом bvat. Они хранятся в директориях:

  • MySQL - /etc/mysql/conf.d/z_bx_custom.cnf
  • Apache - /etc/httpd/bx/custom/z_bx_custom.conf
  • nginx - /etc/nginx/bx/conf/z_bx_custom.conf
  • PHP - /etc/php.d/z_bx_custom.ini

В случае, если в этих директориях нет конфигурационных файлов, то их можно создать самостоятельно.

Внимание! Все изменения стандартных конфигурационных файлов Apache, PHP, MySQL и nginx могут быть утрачены во время обновления виртуальной машины BitrixVM/BitrixEnv. Что бы этого не произошло, все переопределяемые параметры должны быть только в файлах z_bx_custom.*, указанных выше для каждого сервиса.


Увеличение дискового пространства BitrixVM
167 / 253

Внимание! Для операций, описанных в данной главе, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

При использование виртуальной машины BitrixVM или ami-образа BitrixVM, со временем может возникнуть проблема нехватки свободного места.

Решить эту проблему можно двумя способами:

  1. добавить в виртуальную машину еще один жесткий диск, смонтировать его в системе и перенести на него часть контента (наиболее оптимальный способ);
  2. увеличить размер существующего виртуального жесткого диска.


Добавление дополнительного жесткого диска BitrixVM
168 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Так как основной объем дискового пространства потребляется контентом сайтов и их резервными копиями, расположенными в /home/bitrix, а также БД, расположенной в /var/lib/mysql, то на отдельные диски следует выносить именно эти разделы.

Рассмотрим данную задачу на примере переноса на отдельный диск папки /home с контентом сайтов и их резервными копиями.

  • Для этого, в настройках виртуальной машины в список оборудования, добавляем новый диск необходимого размера. Все указанные ниже действия необходимо осуществлять под учетной записью администратора root:

  • После добавления диска, для его инициализации, возможно, потребуется перезагрузить сервер. Увидеть новый диск и присвоенное ему буквенное обозначение можно, выполнив команду:
    fdisk -l

  • Запускаем утилиту fdisk для работы с диском /dev/sdb:
    fdisk /dev/sdb

    И командой n создаем новый раздел:

    • основной (primary partition) - команда p и Partition number (1-4): 1;
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске:

    • Для сохранения изменений на диск и выхода из fdisk введите команду w.

  • После сохранения таблицы разделов, форматируем новый раздел и переносим на него информацию из /home:
    mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt
service httpd stop
service nginx stop
mv -f /home/* /mnt
umount /mnt
  • Следующим шагом определяем UUID нового диска:
    blkid
/dev/sda1: UUID="99066558-ba04-465c-9962-e827aa2928ec" TYPE="ext4"
/dev/sda2: UUID="8ea38ef9-1ee5-423b-a013-15fd603a678e" TYPE="swap"
/dev/sda3: UUID="08ec5c65-8fd8-47ac-a998-d81195c8f964" TYPE="ext4"
/dev/sdb1: UUID="b2e58731-b621-4bd5-909a-afe3bb5dd8a1" TYPE="ext4"

    и добавляем запись (в данном примере: UUID=b2e58731-b621-4bd5-909a-afe3bb5dd8a1) о нем в /etc/fstab (вместо UUID можно также использовать имя устройства /dev/sdb):

  • Остается только примонтировать новый диск и запустить остановленные ранее службы:
    mount /home
service httpd start
service nginx start

Добавление дисков в других средах виртуализации или непосредственно на физическом сервере проходит аналогично.


Увеличение размера существующего жесткого диска BitrixVM
169 / 253

Вторым способом увеличения дискового пространства в BitrixVM является увеличение размера уже существующего жесткого диска виртуальной машины.

В данном примере воспользуемся виртуальной машиной BitrixVM для VMWare и покажем, как увеличить размер системного диска до 100Гб.

  1. Для этого необходимо запустить VMWare Player, в списке виртуальных машин выбрать виртуальную машину BitrixVM и нажать Edit virtual machine settings:

  2. В окне устройств выбрать Hard Disk, размер которого нужно увеличить, и активировать в меню Utilities пункт Expand:

  3. В открывшемся окне Expand Disk Capacity в поле Maximum disk size (GB) указать необходимый объем виртуального диска в гигабайтах (в данном примере - 100Гб):

  4. Далее необходимо запустить виртуальную машину BitrixVM, авторизоваться под root и перейти в режим командной строки (консоль), выбрав пункт меню 0. Exit в виртуальной машине.
  5. Смотрим диск и присвоенное ему буквенное обозначение консольной командой:
    fdisk -c -u -l

    где для диска /dev/sda:

    • sda1 - загрузочный сектор диска;
    • sda2 - файл подкачки (swap);
    • sda3 - раздел, в котором установлена операционная система и который как раз и нужно увеличить.

  6. Запускаем утилиту fdisk для работы с диском /dev/sda:
    fdisk -c -u /dev/sda
  7. Командой d удаляем раздел sda3, выбрав Partition number (1-4): 3:

    Внимание! Данные с диска при этом никуда не удаляются, в данном случае удаляется лишь запись о разделе из таблицы разделов диска.

  8. Далее командой n создаем новый раздел:
    • основной (primary partition) - команда p и Partition number (1-4): 3;
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске.

  9. Для сохранения обновленной таблицы разделов и выхода из fdisk введите команду w:

  10. Чтобы система подгрузила новую таблицу разделов, необходима перезагрузка виртуальный машины:
    reboot
  11. После перезагрузки с помощью утилиты resize2fs увеличиваем размер файловой системы раздела /dev/sda3:
    resize2fs /dev/sda3

Проверить, что раздел увеличен можно с помощью команды df:

Изменение размера дисков в других средах виртуализации проходит аналогично.


Увеличение размера LVM-раздела BitrixVM
170 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Внимание! По умолчанию в CentOS 7 устанавливается менеджер логических томов LVM2 при автоматической разбивке диска на этапе установки системы (в случае установки BitrixEnv c помощью скрипта bitrix_env.sh на готовый CentOS 7). В таком случае изменение размера LVM-раздела будет отличаться от предыдущих способов.

Пусть размер системного диска был увеличен с 20 ГБ до 100Гб, как было сделано ранее в VMWare Player.

Тогда действия по изменению размера LVM-раздела будут такими:

  1. Смотрим, что в системе на данный момент есть из устройств/разделов командой:
    fdisk -l

  2. Убеждаемся, что место в системе автоматически не увеличилось при помощи команды:
    df -h

    Здесь мы также видим и запоминаем имя группы томов и имя тома (у вас они будут другие):

    • cl - имя группы томов;
    • root - имя тома.

  3. Создаем новый раздел sda3 - тип раздела: Linux LVM (код типа 8e) на неразмеченной области. Для этого начинаем работу с устройством sda c помощью команды:
    fdisk /dev/sda
  4. Далее командой n создаем новый раздел:
    • основной (primary partition) - команда p и Partition number (1-3, default 3): 3 (так как у нас было 2 логических раздела sda1 и sda2 - п.1);
    • первый и последний сектора при этом выбираем по умолчанию - таким образом, будет создан раздел, используя все свободное пространство на диске;
    • укажем тип раздела - команда t и Partition number (1-3, default 3): 3;
    • вводим код типа раздела, соответствующий Linux LVM - 8e;
    • смотрим таблицу разделов - команда p и убеждаемся, что все верно;
    • Раздел sda3 создан. Для сохранения обновленной таблицы разделов и выхода из fdisk - команда w.

  5. Чтобы система подгрузила новую таблицу разделов, необходима перезагрузка виртуальной машины:
    reboot
  6. После перезагрузки необходимо создать физический том sda3:
    pvcreate /dev/sda3
  7. Далее расширяем группу томов на новое пространство, используя имя группы томов cl (которое мы запомнили ранее в п.2):
    vgextend /dev/cl /dev/sda3
  8. Теперь расширим логический том, используя имя тома root (которое мы запомнили ранее в п.2):
    lvextend -l+100%FREE /dev/cl/root
  9. Сканируем диски на предмет наличия групп томов и активируем все найденные группы томов:
    vgscan
vgchange -ay

  10. Узнаем тип файловой системы:
    file -s /dev/sda1

    Видим, что файловая система XFS.

  11. И наконец, расширяем файловую систему XFS (может потребоваться время):
    xfs_growfs /dev/cl/root

    Внимание! Если файловая система не XFS, а, например, ext4 или reiserfs, то команды будут такие (с учетом cl - имя группы томов и root - имя тома из п.2):
    • resize2fs /dev/cl/root - для ext4;
    • resize_reiserfs /dev/cl/root - для reiserfs;

  12. Проверяем итоговый результат:
    df -h


Добавление ssl-сертификатов в BitrixVM
171 / 253

Внимание! Данное решение является временным, в новых версиях BitrixVM/BitrixEnv будет более удобная поддержка пользовательских SSL-сертификатов.

Предположим у нас есть сайт http://site1.bx, и нам нужно переключить работу сайта на защищенный протокол https.

Наши действия будут такими:

  1. Сначала вы должны получить SSL-сертификат от центра сертификации, который вы выбираете сами. У вас должны быть файлы:
    • site1.bx.key - приватный ключ домена (созданный вами на этапе отправки заявки на получение сертификата или присланный центром сертификации)
    • site1.bx.crt - публичный сертификат домена (присланный центром сертификации)

  2. Далее загружаем полученные сертификаты от центра сертификации, например, в директорию /etc/nginx/ssl/ с помощью любого менеджера файлов по протоколу sftp (например WinSCP).

  3. Дальнейшие команды выполняются в консоли виртуальной машины BitrixVM/BitrixEnv (0. Exit в главном меню) либо аналогичные действия в менеджере файлов, как удобнее.

  4. При обновлении виртуальной машины BitrixVM/BitrixEnv возможна автоматическая перезапись стандартных файлов nginx, поэтому скопируем файл конфигурации ssl.conf в новый файл site1.bx_ssl.conf (название файла может быть любым). Для удобства, это делается для каждого сайта, если их у вас несколько:
    cp /etc/nginx/bx/conf/ssl.conf /etc/nginx/bx/conf/site1.bx_ssl.conf
  5. Затем редактируем файл /etc/nginx/bx/conf/site1.bx_ssl.conf и указываем расположение site1.bx.key (приватный ключ домена) и site1.bx.crt (публичный сертификат домена) в директивах nginx ssl_certificate_key и ssl_certificate соответственно.
    ssl_certificate /etc/nginx/ssl/site1.bx.crt;	# публичный сертификат домена
ssl_certificate_key /etc/nginx/ssl/site1.bx.key;# приватный ключ домена
  6. Открываем файл /etc/nginx/bx/site_avaliable/bx_ext_ssl_site1.bx.conf и ищем в нем строку:
    include bx/conf/ssl.conf;
    и меняем на:
    include bx/conf/site1.bx_ssl.conf;

    Примечание: Для сайта по умолчанию s1 (который находится в директории /home/bitrix/www) файл будет называться /etc/nginx/bx/site_avaliable/s1.ssl.conf, а для дополнительных сайтов (которые создаются в директории /home/bitrix/ext_www/название_хоста) - /etc/nginx/bx/site_avaliable/bx_ext_ssl_название_хоста.conf.

  7. Проверяем, что конфигурационные файлы nginx без ошибок:
    nginx -t
  8. И если все в порядке, перезапускаем nginx:

    CentOS 6:

    service nginx restart

    CentOS 7:

    systemctl restart nginx.service
  9. Далее можно переключить работу сайта только по протоколу https в меню 6. Mange sites in the pool > 5. Change https settings on site. Как это сделать написано здесь.

  10. И в административном интерфейсе произвести необходимые настройки для контента сайта. Рекомендации прочитать можно здесь.

Внимание! В случае использования NTLM-авторизации по протоколу https нужно еще также указать пути до SSL-сертификата в файле /etc/httpd/bx/conf/ntlm_bitrix.conf.

Теперь даже после обновления виртуальной машины BitrixVM/BitrixEnv, если стандартные файлы конфигурации nginx будут изменены, то сайт продолжит работать по протоколу https.


Подключение Swap-раздела
172 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Виртуальная машина BitrixVM поставляется с swap-разделом 256 МБ, а в образе ami он по умолчанию не подключен. Поэтому в процессе эксплуатации может возникнуть необходимость в расширении раздела подкачки.

Как и в случае с увеличением свободного места, наиболее простой способ - добавить дополнительный диск и разместить раздел подкачки на нем, либо создать файл подкачки.

Для этого:

  • подключаем к виртуальной машине диск или создаем файл подкачки:
    dd if=/dev/zero of=/swapfile bs=1M count=1024
  • создаем на диске:
    mkswap /dev/sdb1
    или в файле swap-раздел:
    mkswap /swapfile
  • подключаем раздел подкачки:
    swapon /dev/sdb1
    или файл подкачки:
    swapon /swapfile
  • и наконец, добавляем запись о новом разделе подкачки в /etс/fstab, чтобы не включать после каждой перезагрузки вручную:
    /dev/sdb1 none swap sw 0 0
    или о файле подкачки:
    /swapfile none swap sw 0 0


Дополнительные настройки и отладка msmtp
173 / 253

Данная информация пригодится для ручной настройки и диагностики ошибок с почтой в Виртуальная машина BitrixVM/BitrixEnv v.5.x.

Примечание: Для Виртуальная машины BitrixVM/BitrixEnv v7.x никакой ручной настройки, как правило, не требуется. Нужно только создать пул и настроить почту с помощью мастера настройки почты в меню виртуальной машины.

Изменения в конфигурационных файлах

В настройке используется пакет msmtp (он идет в стандартных зависимостях для пакета bitrix-env). Из пакета приходят настройки php-модуля в файле /etc/php.d/bitrixenv.ini:

sendmail_path = msmtp -t -i

При конфигурации из веб-интерфейса или из консольного меню:

  1. создается или обновляется конфигурационный файл /home/bitrix/.msmtprc:
    # smtp account configuration for default
account default
logfile /home/bitrix/msmtp_default.log
host 192.168.0.25
port 25
from name@site.ru
keepbcc on
auth on
user name@site.ru
password XXXXXXXXXXXXXX
tls on
tls_certcheck off
  2. Аккаунт с именем default используется по умолчанию для всех сайтов. Если настраивается почтовый ящик для сайта, отличного от default, то вносятся изменения в конфигурационный файл apache (конфигурационный файл сайта):
      <Directory /home/bitrix/www/>
        ...
        php_admin_value sendmail_path "msmtp -t -i -a <ИМЯ_САЙТА>"
 </Directory>
  3. создается символическая ссылка с /home/bitrix/.msmtprc на /etc/msmtprc (данное действие необходимо для заданий отправки почты, которые выполняются через crontab).

Используемые скрипты

Данные рекомендации будут полезны для автоматизации тестирования.

Для создания из web или консоли используется скрипт /opt/webdir/bin/bx-sites.

При настройке почты он принимает следующие параметры:

 bx-sites -o json -a email --smtphost=smtp.yandex.ru \
  --smtpuser='ivan@yandex.ru' --password=XXXXXXXXXX \
  --email='ivan@yandex.ru' --smtptls -s alice
где:
  • -a email - тип действия, которое мы выполняем для сайта (-h позволит получить весь доступный список);
  • --smtphost - IP адрес или DNS имя хоста, через который будет отправляться почта;
  • --smtpuser - логин пользователя (в случае, если не используется данный параметр, можно опустить);
  • --password - пароль для авторизации на почтовом сервере;
  • --email - поле from в письме;
  • --smtptls - включает TLS при отправке почты;
  • -s|--site - название сайта (по умолчанию будет использован default).

Проблемы и их решение

В разделе описаны найденные и решенные проблемы, а также способы отладки почтовых проблем.

  1. msmtp ведет лог отправки уведомлений. Например, в логе можно найти информацию, почему письмо не ушло:

    Сен 04 14:41:11 host=smtp.yandex.ru tls=on auth=on user=bx@ya.ru from=bx@ya.ru recipients=3458@gmail.com smtpstatus=554
smtpmsg='554 5.7.1 Message rejected under suspicion of SPAM adxPcTaXWc-fB4SvmKU' errormsg='the server did not accept the mail' exitcode=EX_UNAVAILABLE
  2. msmtp не пишет информацию, если не смог запустится или конфигурация некорректна. Запускаем отправку из консоли (меняем адрес получателя на свой):
    echo -e "test message" | /usr/bin/msmtp --debug -t -i name@site.ru
    тут может быть ошибка, например, загрузки конфигурации:
    ignoring system configuration file /etc/msmtprc: Нет такого файла или каталога
ignoring user configuration file /.msmtprc: Нет такого файла или каталога
falling back to default account

    В данном случае, ни один из файлов конфигурации не был найден, поэтому отправка не удалась.

  3. если в п.2 все хорошо и письма все еще не ходят:
    • Поместить данный скрипт test_email.sh в каталог /usr/bin/ и выставить права на исполнение:
      #!/bin/bash
export HOME=/home/bitrix

tmp_dir=/tmp/mail

args=$@
if [[ ! -d $tmp_dir ]]; then
        mkdir $tmp_dir
        chmod 777 $tmp_dir
fi

message_body=""
while read line; do
  message_body="$message_body$line\n"
done < /dev/stdin

tmp_file=$(mktemp $tmp_dir/$(date +%Y%m%d_%H%M%S)_XXXXXXXXX)

echo "=========================================" > $tmp_file
echo "ARGV: /usr/bin/msmtp --debug -t -i $args" >> $tmp_file
echo "=========================================" >> $tmp_file
echo -e "BODY: $message_body" >> $tmp_file
echo "=========================================" >> $tmp_file

# send message
echo -e "$message_body" | /usr/bin/msmtp --debug -t -i $args >> $tmp_file && 2>&1
    • В конфигурации /etc/php.d/bitrixenv.ini изменить настройки почты:
      sendmail_path = /usr/bin/test_mail.sh
    • Перезапустить apache.
    • Данный скрипт запускает msmtp с опцией debug и по каждому отправленному письму сохранит информацию о параметрах отправки, о теле письма, а также о результатах запуска команды.

      При создании письма из web-интерфейса вся информация сохраняется в каталоге /tmp/mail, каждое письмо будет сохранено в отдельном файле.

Проблема:
Не отправляются письма уведомлений о заказах с сайта, статистика за день в BitrixVM v5.0.44-5.0.45.

Решение:
Причина в том, что домашний каталог скриптов выставлен в HOME=/, поэтому письма, отправка которых происходит из задания в Cron, не отправляются.
Для решения необходимо:
  • либо создать символическую ссылку с /home/bitrix/.msmtprc на /etc/msmtprc - конфигурационный файл /etc/msmtprc является системным файлом для утилиты и позволяет решить нахождение конфигурационного файла при таком параметре HOME.
  • либо обновить BitrixVM до версии 5.0.46 и выше.


Корректное монтирование Windows-ресурсов
174 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

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

mount -t cifs -o -fstype=cifs,iocharset=utf8,username=XXXX,password=XXXX,uid=500,gid=501,fmode=0777,noserverino //xxx.xxx.xxx.xxx/folder /home/bitrix/www/docs/folder/smb
где:
  • uid - идентификатор пользователя bitrix;
  • gid - идентификатор группы bitrix;
  • //xxx.xxx.xxx.xxx/folder - путь к сетевому ресурсу;
  • /home/bitrix/www/docs/folder/smb - папка, куда будет смонтирован диск.

Примечание: Использование опции noserverino является обязательным, так как в PHP есть уязвимость.


Настройка memcached
175 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

В случае, если в проекте планируется использовать memcached, необходимо произвести его настройку в соответствии с предполагаемой нагрузкой.

Для этого необходимо:

  • в файле /etc/sysconfig/memcached задать следующие параметры:
    • MAXCONN = "1024" - количество одновременных подключений (по умолчанию 1024);
    • CACHESIZE="1024" - объем выделяемой памяти для кеша (по умолчанию 64MB);
    • OPTIONS="t 8" - количество потоков memcached (по умолчанию 4).

    • Примечание: Параметры MAXCONN, CACHESIZE и OPTIONS подбираются экспериментальным путем в зависимости от характера нагрузки и от имеющихся ресурсов.

    Оценить объем памяти, необходимой для кеширования (параметр CACHESIZE), можно по размеру вашего файлового кеша. Если у вас на проекте файловый кеш занимает 3 GB, то использование memcache c 256МБ памяти не будет эффективным за счет частого вытеснения.

  • После настройки memcaсhe необходимо перезапустить командой:
    service memcached restart
  • Далее подключить его в bitrix/php_intarface/dbconn.php:

    define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");

В случае, если используется один сервер, то для улучшения производительности можно настроить работу с memcache через сокет:

  • USER="bitrix" - пользователь, от которого будет запущен memcache;
  • OPTIONS="-t 8 -s /tmp/memcached.sock" - количество потоков и путь к сокету.

После этого необходимо изменить настройки в bitrix/php_interface/dbconn.php:

define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "unix:///tmp/memcached.sock");
define("BX_MEMCACHE_PORT", "0");


Настройка отправки Nagios-уведомлений в BitrixVM 5.1.3
176 / 253

Внимание! Данный способ актуален для BitrixVM до версии 5.1.3. В версии BitrixVM 5.1.4 и выше была добавлена возможность настроить email-уведомления для системы мониторинга Nagios. Данная настройка осуществляется в меню настройки мониторинга.

Внимание! Для отправки уведомлений Nagios-ом на email необходимо предварительно включить в меню BitrixVM Мониторинг (Monitoring in pool).

Итак, чтобы получать уведомления Nagios-а о различных событиях сервера, нужно настроить контакты и шаблон уведомлений:

  1. В /etc/nagios/objects/contacts.cfg указываем параметр email - email пользователя, кому будет отправляться нотификация:
    define contact{
    contact_name	nagiosadmin		; Short name of user
    use			generic-contact		; Inherit default values from generic-contact template (defined above)
    alias		Nagios Admin		; Full name of user
    email		email@myaddress.com	; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
    }

    Примечание: Можно создать новый контакт, но не забудьте прописать его в секции CONTACT GROUPS в этом же файле. Как это сделать см. в документации Nagios.

  2. Далее в /etc/nagios/objects/commands.cfg меняем строки в секции SAMPLE NOTIFICATION COMMANDS запуска MTA на:
    # 'notify-host-by-email' command definition
define command{
   command_name   notify-host-by-email
   command_line   /usr/bin/printf "%b" "Subject: ** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **\n\n ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/msmtp --host=hostname --port=number --user=username --passwordeval=eval --from=mailfrom@email.com $CONTACTEMAIL$
   }

# 'notify-service-by-email' command definition
define command{
   command_name   notify-service-by-email
   command_line   /usr/bin/printf "%b" "Subject: ** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **\n\n ***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/msmtp --host=hostname --port=number --user=username --passwordeval=eval --from=mailfrom@email.com $CONTACTEMAIL$
   }
    где:
    • --host=hostname - адрес smtp-сервера;
    • --port=number - порт smtp-сервера;
    • --user=username - логин для авторизации на smtp-сервере;
    • --passwordeval=eval - пароль для авторизации на smtp-сервере;
    • --from=mailfrom@email.com - от кого будет уходить письмо.

    Примечание: Также можно настроить дополнительные ключи msmtp (TLS-опции и др.), список всех ключей msmtp можно посмотреть консольной командой: msmtp --help.

  3. Обязательно сделать рестарт Nagios для применения настроек:
    service nagios restart

Т.е, по сути, в конфигурационном файле Nagios мы меняем MTA с mail на msmtp c ключами и немного модифицируем текст сообщения: т.к у msmtp нет ключа Subject: (Тема сообщения), то мы его включаем в тело письма, и оно при получении почтовым клиентом обработается корректно.

Проверить работу нотификаций можно, например, остановив МySQL:

service mysqld stop

По умолчанию Nagios будет записывать в лог 3 сообщения со статусом CRITICAL\SOFT каждую минуту, а 4-му сообщению даст статус CRITICAL\HARD. Далее будет инициирована команда notify-service-by-email, которая отправит текст сообщения через msmtp c ключами, настроенными выше. В итоге, в течение 4-5 минут сообщение примерно такого содержания должно уйти на почту:

Subject: ** PROBLEM Service Alert: test1/MySQL: connection to 3306 is CRITICAL **

 ***** Nagios *****

Notification Type: PROBLEM

Service: MySQL: connection to 3306
Host: server1
Address: 192.168.2.130
State: CRITICAL

Date/Time: Tue Jan 27 20:15:15 MSK 2015

Additional Info:

Connection refused

После запуска службы MySQL командой # service mysqld start должно прийти сообщение на почту:

Subject: ** RECOVERY Service Alert: server1/MySQL: connection to 3306 is OK **

 ***** Nagios *****

Notification Type: RECOVERY

Service: MySQL: connection to 3306
Host: server1
Address: 192.168.2.130
State: OK

Date/Time: Wed Jan 28 12:30:50 MSK 2015

Additional Info:

TCP OK - 0.001 second response time on port 3306

Примечание: Подробнее о email уведомлениях можно прочитать в в документации Nagios.


Настройка Postfix для отправки почты
177 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

По умолчанию в BitrixEnv и BitrixVM используется msmtp для отправки почтовых сообщений.

Преимуществом данного решения является простота его настройки. К недостатком можно отнести медленную отправку почтовых сообщений через внешние сервисы (Google, Yandex).

В большинстве случаев, это не приводит к каким-либо проблемам, так как почтовые события отрабатывают из-под cron-a, но в ряде случаев может создать проблему - например, если почтовые события исполняются на хите (задан параметр немедленной доставки) или разработчик напрямую использует функцию mail().

Рассмотрим настройку отправки почтовых сообщений postfix-ом через Яндекс:

  1. Устанавливаем дополнительные пакеты:
    yum install cyrus-sasl-plain
  2. Добавляем в файл /etc/postfix/main.cf:
    smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic
smtp_use_tls = yes
  3. В /etc/postfix/mailpasswd указываем логин и пароль:
    [smtp.yandex.ru]      www@some.ru:password
  4. В /etc/postfix/sender_relay указываем привязку доменов и конкретных отправителей к внешним службам:
    @some.ru [smtp.yandex.ru]
www@some.ru [smtp.yandex.ru]
  5. В /etc/postfix/canonical добавляем для домена указание через какой аккаунт отправлять почту:
    @some.ru   www@some.ru
  6. В /etc/postfix/generic добавляем отправку почты админу на внешний ящик:
    root@localhost admin@mail.xx
bitrix@localhost admin@mail.xx
  7. И выполняем команду postmap для /etc/postfix/generic, /etc/postfix/canonical, /etc/postfix/sender_relay, /etc/postfix/mailpasswd:
    postmap /etc/postfix/generic
postmap /etc/postfix/canonical
postmap /etc/postfix/sender_relay
postmap /etc/postfix/mailpasswd
  8. Изменяем настройки в /etc/php.d/bitrixenv.ini:
    sendmail_path = sendmail -t -i -f www@some.ru          ;bitrix-env
  9. Запускаем все необходимые службы:
    chkconfig saslauthd on
service saslauthd restart
chkconfig postfix on
service postfix restart

Скорость отправки сообщений php-скриптами значительно возрастет, а всю работу по доставке писем до внешнего сервера возьмет на себя postfix. При этом не нужно настраивать полноценный почтовый сервер.


Выполнение всех агентов на Cron
178 / 253

На больших и не очень проектах часто возникает вопрос с переносом исполнения некоторых особо тяжелых агентов на Cron.

  • Для начала полностью отключим выполнение агентов на хите. Для этого необходимо выполнить команду в php-консоли административного меню продукта «1С-Битрикс» /bitrix/admin/php_command_line.php?lang=ru:
    COption::SetOptionString("main", "agents_use_crontab", "N");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

COption::SetOptionString("main", "check_agents", "N");
echo COption::GetOptionString("main", "check_agents", "Y");

    В результате выполнения должно быть NN.

  • Убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:
    define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);

    И добавляем:

    if(!(defined("CHK_EVENT") && CHK_EVENT===true))
   define("BX_CRONTAB_SUPPORT", true);
  • Далее создаем файл проверки агентов и рассылки системных сообщений /bitrix/php_interface/cron_events.php:
    <?
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

CAgent::CheckAgents();
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
CEvent::CheckEvents();
?>
  • И добавляем данный скрипт в Cron:
     */5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php

После этого все агенты и отправка системных событий будут обрабатывается из-под cron, раз в 5 минут.

Чтобы не увеличивалась очередь отправки почтовых сообщений, нужно изменить параметр, отвечающий за количество почтовых обрабатываемых за раз событий. Для этого выполняем в php-консоли следующую команду:

COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");


Опции монтирования
179 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

Для обеспечения более высокой производительности файловой системы рекомендуем отключать изменение метки времени при чтении файлов и директорий: noatime, nodiratime.

Для этого в /etc/fstab нужно отредактировать (добавить в текущую строку) параметры в строке со своим UUID:

UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 /    ext4    defaults,noatime,nodiratime    1 1
где UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 - уникальный идентификатор диска, который можно узнать в консоли по команде blkid.

Примечание: Вместо UUID можно также использовать имя устройства: /dev/sda1, /dev/sda2, /dev/sda3. Или метку тома если она задана, например: LABEL=root.

После перезагрузки новые настройки начнут действовать.

Чтобы их применить, не перезагружая сервер, можно выполнить перемонтирование разделов командой:

mount -o remount,noatime,nodiratime /

Примечание: К решению проблемы производительности файловой системы нужно подходить творчески. Если, например, на диске есть еще кеш некоторых приложений, то от предложенных мер производительность может снизиться, так как многие приложения очищают кеш по метке доступа, которые в примере предлагается отключить. В некоторых случаях увеличение времени коммита может дать лучший результат, особенно если много оперативной памяти. Время коммита задается параметром commit. Для установки его в 120 секунд, например, необходимо добавить commit=120. То есть набор опций монтирования будет defaults,noatime,commit=120.

По умолчанию сброс данных и метаданных на диск происходит каждые 5 сек. Откладывание времени сброса, так же может уменьшить фрагментацию файлов на диске, если есть файлы, в которые часто происходит дописывание данных. Например логи.


Настройка NTLM-авторизации
180 / 253

Для поддержки механизма NTLM-авторизации продуктами «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке» необходим модуль AD/LDAP интеграция версии 11.5.0 и выше.

После включении и настройки новый механизм NTLM-авторизации начинает работать следующим образом:

  • неавторизованный посетитель приходит на проект, где обработчиком события он перенаправляется на открытый порт Apache (8890 для http или 8891 для https);
  • Apache выполняет NTLM-авторизацию пользователя и пользователь перенаправляется назад на 80 или 443 порт (для http и https соответственно);
  • следующие хиты пользователь выполняет в обычном режиме.

Рассмотрим настройку на примере «Битрикс24 в коробке».

Настройка NTLM-авторизации пользователей в «Битрикс24 в коробке»

  • Во время установки, в мастере выбираем Разрешить пользователям Active Directory авторизовываться на портале:

  • Далее вводим настройки подключения к домену AD, проверяем соединение:

  • Указываем соответствия групп в AD группам корпоративного портала:

  • После завершения установки в административном разделе портала открываем страницу Active Directory / LDAP серверы (Настройки > AD/LDAP):

  • редактируем параметры сервера Active Directory (для этого нужно открыть запись на редактирование), указывая домен для NTLM авторизации:

  • После этого заходим в настройки модуля AD/LDAP (Настройки > Настройки продукта> Настройки модулей> AD/LDAP интеграция) и устанавливаем Использовать NTLM авторизацию:

Продукт «1С-Битрикс» готов к использованию NTLM-авторизации, осталось настроить виртуальную машину.

Внимание! Если необходимо для локальной сети компании настроить NTLM-авторизацию, а для сотрудников, работающих с порталом, использовать стандартную авторизацию, то дополнительно в настройках модуля AD/LDAP нужно указать диапазон IP-адресов, для которых необходима NTLM-авторизация - Ограничить NTLM переадресацию следующей подсетью (например, 192.168.0.1/24):

Настройка NTLM-авторизации пользователей в «1С-Битрикс: Виртуальная машина»

Для настройки виртуальной машины необходимо подключитьcя к ней под пользователем root, выбрать пункт меню NTLM autentification и ввести необходимые данные:

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

Примечание: Проверить, что компьютер успешно введен в домен можно командой:
net ads testjoin

Настройка завершена, для успешной NTLM-авторизации осталось проверить настройки браузеров.

Настройка NTLM-авторизации в браузерах

  • Internet Explorer

    Для успешной NTLM-авторизации нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости нужно добавить):

    NTLM-авторизация в Internet Explorer

  • Mozilla Firefox:

    Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris на странице Firefox: about:config)

    NTLM-авторизация в Mozilla Firefox

Примечание: Действия по включению NTLM-авторизации на уже установленном продукте «Битрикс24 в коробке», а также в «1С-Битрикс: Управление сайтом» аналогичны перечисленным выше, за исключением того, что сервер Active Directory добавляется вручную в административном разделе.


Подключение IDE
181 / 253

Для упрощения работы с Bitrix Framework в виртуальную машину включён Xdebug. Работает он по схеме:

Перед изменением настроек надо переименовать файл xdebug.ini.disabled в xdebug.ini и перезапустить httpd.

Для настройки машины воспользуйтесь следующим примером:

$ cat /etc/php.d/xdebug.ini
; Enable xdebug extension module
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=192.168.205.1
xdebug.remote_port=9000

Примечание: Xdebug требует использовать proxy при работе через Network Address Translation, необходимо открыть порт 9000.


BitrixVM API для провайдеров
182 / 253

В главе описывается API, с помощью которого можно подключить процедуру заказа/создания машины управления пулом в продуктах «1С-Битрикс».


Провайдеры
183 / 253

Вся работа с провайдерами осуществляется с помощью плагинов, расположенных в определенном каталоге (на текущий момент все управление сделано на файлах): /opt/webdir/providers.

Для каждого провайдера предусмотрены:

  • обязательные параметры командной строки для универсализации доступа к их возможностям;
  • стандартизированный вывод по завершению обработки результатов.

Скрипт плагина, который будет использован в web-интерфейсе продуктов «1С-Битрикс», должен быть раcположен по адресу:

/opt/webdir/providers/{provider_name}/bin/{provider_name}

Для подключения в пул плагин провайдера должен поддерживать следующие аргументы командной строки:

  • help - отображает поддерживаемые аргументы командной строки:
    {
  "options": [
    "help",
    "configs",
    "order",
    "order_status"
  ],
  "status": "enabled"
}

    Массив options должен содержать список поддерживаемых опций (например, в данном случае отсутствует опция init, которая позволяет подключиться на этапе создания мастер сервера).

    Опция status может содержать следующие значения: disabled или enabled, что позволяет определить включен или выключен провайдер на конкретном сервере.

  • configs - отображает список поддерживаемых конфигураций:
    {
  "configurations": [
    {
      "id": "1",
      "descr": "Bitrix-env, 1 month, Centos-6 x86_64, CPU 2x1.0 Ghz, Memory 1Gb, HDD 20Gb"
    }
  ],
  "status": "enabled"
}

    configurations - содержит список сервисов/конфигураций, которые может заказать пользователь, используя web интерфейс «1С-Битрикс».

    На текущий момент поддерживается два параметра по каждой конфигурации:

    • id - идентификатор конфигурации, который будет использован в заказе,
    • descr - описание для пользователя.
  • order - позволяет заказать сервер/VPS выбранной конфигурации, вторым параметром в данном случае будет передан номер конфигурации:
    {"task_id":"24"}

    task_id должен содержать номер задания, который используется для дальнейшего опроса и старта добавления машины по завершению.

  • order_status - позволяет получить информацию по заказу:
    {
  "server_password": "XXXXXXXXXXXXXX",
  "status": "finished",
  "server": "xxx.xxx.xxx.xxx",
  "task_id": "24"
}
    где:
    • status - содержит информацию по заказу, может содержать следующие значения:
      • in_progress - находится на обработке со стороны провайдера/хостера;
      • finished - обработка завершена, можно добавлять машину в пул;
      • error - во время выполнения произошла ошибка.
    • server - содержит ip address или имя машины;
    • server_password - содержит пароль пользователя root для копирования ssh-ключей при подключение сервера в пул.

    Любое из действий может сообщить об ошибке с помощью значений в полях error и error_message. Например:

    {
  "error_message": "get_task error N102, No task found",
  "error": 1
}

Внимание! Информацию о работе скрипта, который использует возможности провайдеров и позволяет подключить их в web- интерфейс, см Скрипт работы с провайдерами.


Скрипт работы с провайдерами
184 / 253

Данный скрипт нужен для встраивания плагинов провайдеров в web- интерфейс продуктов «1C-Битрикс».

На текущий момент реализованы следующие методы:

  • list - отображает список всех провайдеров, для которых существуют подкаталоги в директории /opt/webdir/providers на машине:
    {
  "params": {
    "providers": {
      "superprovider": {
        "status": "enabled"
      },
      "amazon": {
        "error": 1,
        "message": "bxProvider::optionsProvider: Provider amazon not exist on the host"
      }
    }
  }
}

    В данном случае, это только включено или выключено, а так же ошибки, который возникли при запросе статуса.

    В случае если провайдеров нет на хосте, список будет пустым:

    {
  "params": {
    "providers": {

    }
  }
}
  • status - покажет статус для провайдера:
    /opt/webdir/bin/bx-provider -a status --provider superprovider -o json
{
  "params": {
    "provider_options": {
      "superprovider": {
        "options": {
          "order_status": 1,
          "order": 1,
          "help": 1,
          "configs": 1,
          "init": 0
        },
        "status": "enabled",
        "files": {
          "execute": "/opt/webdir/providers/superprovider/bin/superprovider",
          "holder": "/opt/webdir/providers/superprovider",
          "config": "/opt/webdir/providers/superprovider/etc/superprovider.conf"
        },
        "name": "superprovider",
        "config": "exists"
      }
    }
  }
}

    В данном случае печатает внутреннюю информацию (используется как есть внутри обработчика), по сути, такой статус больше подходит для отладки работы провайдера, чем для использования в web-интерфейсе.

  • install и uninstall - создает/удаляет данные для провайдера (на текущий момент больше для отладки, возможно, в дальнейшем с помощью этих методов хостеры смогут установить свой плагин на сервер и удалить его):
    /opt/webdir/bin/bx-provider -a install --provider amazon --archive /tmp/amazon-v01.tar.gz
  • configs - отображает список всех конфигураций провайдера:
    /opt/webdir/bin/bx-provider -a configs --provider superprovider -o json
{
  "params": {
    "provider_configs": {
      "superprovider": {
        "configurations": [
          {
            "id": "1",
            "descr": "Bitrix-env, 1 month, Centos-6 x86_64, CPU 2x1.0 Ghz, Memory 1Gb, HDD 20Gb"
          }
        ],
        "status": "enabled"
      }
    }
  }
}
  • order - заказывает виртуальный сервер или VPS:
    /opt/webdir/bin/bx-provider -a order --provider superprovider --config_id 1 -o json
{
  "params": {
    "provider_order": {
      "superprovider": {
        "task_id": "25"
      }
    }
  }
}
  • order_status - отображает статус заказа:
    /opt/webdir/bin/bx-provider -a order_status --provider superprovider --task_id 25 -o json
{
  "params": {
    "provider_order": {
      "superprovider": {
        "server_password": "XXXXXXXXXXXXXXX",
        "status": "complete",
        "server": "xxx.xxx.xxx.xxx"
        "task_id": "25"
      }
    }
  }
}
  • orders_list - список всех заказов, сделанных на хосте:
    /opt/webdir/bin/bx-provider -a orders_list --provider superprovider -o json
{
  "params": {
    "provider_order_list": {
      "superprovider": {
        "25": {
          "status": "finished",
          "mtime": 1403445981,
          "error": 0,
          "message": ""
        },
        "22": {
          "status": "error",
          "mtime": 1403441000,
          "error": 1,
          "message": "cannot add ssh key to the server"
        },
        "21": {
          "status": "complete",
          "mtime": 1403440979,
          "error": 0,
          "message": ""
        },
        "23": {
          "status": "finished",
          "mtime": 1403441229,
          "error": 0,
          "message": ""
        }
      }
    }
  }
}

    Тут добавлен еще один статус по задаче: complete - это значит, что сервер из данного задания был добавлен в пул.

  • order_to_host - запускает процедуру добавления сервера в пул с параметрами, переданными в статусе заказа:
    /opt/webdir/bin/bx-provider -a order_to_host --provider superprovider --task_id 25 -o json


Виртуальная машина BitrixVM v4.3
185 / 253

Внимание! BitrixVM версии 4.x устарела и не поддерживается. Актуальная версия BitrixVM - 5.х, информацию о которой можно найти здесь.

«1C-Битрикс: Виртуальная машина» - бесплатный программный продукт, готовый к немедленному использованию виртуальный сервер, полностью настроенный, протестированный и адаптированный для оптимальной работы как с продуктами «1С-Битрикс», так и с любыми PHP-приложениями. Имеется в версии для Windows и для Unix систем.

Виртуальная машина сэкономит вам время и силы на правильное развертывание и администрирование вашего сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».

Глава предназначена для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину BitrixVM. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В документе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине BitrixVM.

Описание установки VMWare Player не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации VMWare.

Если у вас возникнут вопросы по процессу установки продуктов компании «1С-Битрикс», вы можете обратиться в службу Технической поддержки. Обсуждение работы BitrixVM доступно на специализированном форуме или в группе Виртуальные машины Битрикс социальной сети компании «1С-Битрикс».

Внимание! Все названия хостов, адреса e-mail, серверов, ip-адреса и т.п информация в учебном курсе указываются в качестве примера. Поэтому при настройке виртуальной машины необходимо использовать свои данные.


Введение
186 / 253

«1C-Битрикс: Виртуальная машина» разворачивается за минуты и сразу же готова к работе. На неё можно не только установить ознакомительные версии продуктов «1С-Битрикс», но и перенести свои, уже готовые проекты. Перенос сайта возможен напрямую с сервера на машину.

«1C-Битрикс: Виртуальная машина» эмулирует работу реального компьютера. Продукт включает в себя сконфигурированную операционную систему, веб-сервер, базу данных, firewall, почтовый сервер, а также большое число настроек, от которых зависит надежность, производительность и безопасность веб-проекта.

BitrixVM постоянно совершенствуется и обновляется. О текущем составе машины смотрите на соответствующих страницах сайта компании «1С-Битрикс».

По умолчанию для суперпользователя root установлен пароль bitrix, для пользователя bitrix - bitrix.

Важно! Обязательно смените пароли при первом запуске виртуальной машины.

Технические требования для запуска BitrixVM с использованием VMWare Player

Для работы с виртуальной машиной система должна соответствовать следующим техническим требованиям:

  • ОС: Windows XP, Vista, 7, Server 2003, Server 2008 (x86/x64); Linux (x86/x64);
  • VMWare Player;
  • Минимальное место на диске: 2 Гб;
  • Минимально допустимый размер оперативной памяти: 160 Мб;
  • Рекомендованный размер оперативной памяти: 256 Мб и выше.


Запуск виртуальной машины BitrixVM
187 / 253
  • Скачайте и установите VMWare Player - бесплатный продукт, работающий под ОС Windows или Linux.

    Примечание: Описание установки VMWare Player не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации VMWare.

  • Загрузите дистрибутив настроенной виртуальной машины BitrixVM.
  • Скачанный архив распакуйте в любую папку, например, С:\VMBitrix\BitrixVM\.
  • Запустите VMWare Player. Нажмите кнопку Open a Virtual Machine и укажите путь к файлу BitrixVM.vmx, который был распакован в каталог С:\VMBitrix\BitrixVM\. Виртуальная машина появится в списке добавленных.
  • Выберите в списке нужную виртуальную машину и нажмите кнопку Play Virtual Machine:

  • Начнется процесс загрузки операционной системы, установленной на виртуальной машине. В конце загрузки откроется окно:

  • Примечание: Для суперпользователя root по умолчанию задан пароль bitrix.

    При первом запуске виртуальной машины будет предложено сменить пароли суперпользователя root и пользователя bitrix:

    • В строках localhost login укажите текущий логин (root), а в поле Password пароль (по умолчанию bitrix).
    • В строке (current) UNIX password укажите текущий пароль (bitrix) и нажмите Enter.
    • Введите новый пароль в строке Enter new UNIX password и нажмите Enter.
    • Повторите ввод нового пароля в строке Retype new UNIX password и нажмите Enter.

    Аналогично происходит смена пароля пользователя bitrix:

    Примечание: Cменить пароли пользователей root и bitrix также можно в панели управления виртуальным сервером с помощью команды Change root password и Change bitrix password соответственно.

В результате виртуальный сервер готов для использования:

Основные функции администрирования перечислены в списке Available actions:

  • 0. Virtual appliance information - выводит информацию о текущих настройках виртуальной машины;
  • 1. Mail sending system parameters - настройка параметров интегрированного почтового сервера;
  • 2. Disable/Enable HTTP access (HTTPS only) - выключение/включение доступа к сайту только через HTTPS;
  • 3. Change root password - смена пароля суперпользователя;
  • 4. Change bitrix password - смена пароля пользователя bitrix;
  • 5. Virtual server reboot - перезагрузка виртуального сервера;
  • 6. Virtual server shutdown - выключение виртуального сервера;
  • 7. Get a new IP address via DHCP - получение нового IP-адреса автоматически с помощью DHCP-сервера;
  • 8. Asign a new IP address (manual) - установка нового IP-адреса вручную;
  • 9. Set PHP timezone from Operating System setting - установка часового пояса в виртуальной машине из настроек операционной системы;
  • 10. Create master node - создание мастера для веб-кластера;
  • 11. Add slave node - добавление слэйва к мастеру веб-кластера (***доступно при заходе на машину-мастер);
  • 12. Make slave node a master node - переключение слейва в режим мастера (***доступно при заходе на машину-слэйв);
  • 13. Add additional site - добавление сайта в режиме многосайтовости на разных доменах;
  • 14. Delete additional site - удаление сайта в режиме многосайтовости на разных доменах;
  • 15. NTLM authentication - включение NTLM-авторизации;
  • 16. Start/Stop server monitoring - включение/выключение мониторинга сервера;
  • 17. Start/Stop site backup - включение/выключение резервного копирования данных сайта;
  • 18. Sphinx search server - настройка поискового сервера Sphinx.
  • 19. Update System - обновление виртуальной машины.

Для перехода к выполнению любого действия введите число (от 0 до 19) и нажмите Enter. Например, для выключения виртуального сервера в строке наберите 6 (Virtual server shutdown) и нажмите Enter.

Чтобы вернуться в вашу ОС, нажмите Ctrl+Alt.

Чтобы вернуться из shell в меню виртуальной машины, введите команду:

/root/menu.sh

Примечание: При возникновении проблем с сетевым адаптером VMWare Player необходимо перейти в настройки сетевого адаптера (Virtual Machine > Removable Devices > Network Adapter > Settings...), выбрать один из режимов (Bridged, NAT, Host-only):

и перезапустить виртуальный сервер, указав команду 5 и нажав Enter.

Далее необходимо набрать полученный IP-адрес в браузере (в нашем примере это http://192.168.1.170 или https://192.168.1.170). Откроется страница с выбором варианта работы:

Для продолжения необходимо выбрать один из вариантов:

  1. Новая установка - в этом случае будет запущен мастер, который позволяет скачать, установить и создать новый сайт средствами продуктов компании «1C-Битрикс». Шаги этого варианта аналогичны шагам, рассмотренным в главе Установка продукта с помощью BitrixSetup.
  2. Восстановить проект - в этом случае будет запущен мастер, с помощью которого можно будет перенести существующий проект (восстановить проект из резервной копии). Шаги этого варианта аналогичны шагам, рассмотренным в главе Перенос продукта.


Настройка почтового сервера
188 / 253

Для настройки интегрированного почтового сервера выполните следующее:

  • В строке Type a number and press ENTER наберите команду 1 (Mail sending system parameters) и нажмите Enter:

  • В строке ниже отобразится диалог Mail sending subsystem settings, в котором укажите следующее:

    • SMTP server name - имя почтового сервера.
    • SMTP port - порт сервера. Порт зависит от типа соединения, 25 - для обычного и 465 - для зашифрованного (с использованием SSL). Если нажать Enter, то будет использован порт по умолчанию (25).
    • Default sender address - адрес отправителя, от которого будет осуществляться пересылка писем.
    • Если необходима SMTP-авторизация, то в строке SMTP authorization required наберите y, в противном случае - n.
    • Если необходим TLS-протокол защищенной передачи данных, то в строке Is TLS required? наберите y, в противном случае - n.

    После завершения настройки все указанные параметры будут отображены в списке ниже:

  • Для сохранения параметров в строке Save changes укажите y.

Примечание: Адреса e-mail и smtp-сервера указаны в качестве примера, вместо них нужно указывать свои значения.


Создание кластера master-slave
189 / 253

В «1C-Битрикс: Виртуальная машина» также есть поддержка быстрого развертывания кластерной конфигурации master-slave «1С-Битрикс: Управление сайтом» и «1С-Битрикс: Корпоративный портал» с установленным модулем «Веб-кластер».

Это позволит распределить один сайт на несколько серверов, решая тем самым несколько задач:

  • обеспечение высокой доступности сайта;
  • его масштабирование в условиях возрастающей нагрузки;
  • балансирование нагрузки, трафика, данных между несколькими серверами.

Подготовка виртуальной машины для включения в кластер

Для подготовки виртуальной машины для включения в кластер необходимо:

  • сменить стандартный пароль пользователя root;
  • сменить стандартный пароль пользователя bitrix;
  • если виртуальная машина будет добавляться в кластер в качестве slave-ноды, необходимо удалить базу данных с тем же именем, что рабочая база данных на master-ноде (по умолчанию это sitemanager0).

Создание master-ноды

После подготовки первым шагом в создание кластера, является создание master-ноды. На данной ноде будет находится master-база MySQL, а также данная нода будет осуществлять настройку кластера и всех входящих в него узлов.

Для этого:

  • выполнить подготовку виртуальной машины;
  • установить на виртуальную машину «1С-Битрикс: Управление сайтом» или «1С-Битрикс: Корпоративный портал» с модулем «Веб-кластер»;
  • перевести все таблицы базы данных в InnoDB (если они используют другой механизм);
  • из административного меню «1C-Битрикс: Виртуальная машина» запустить мастер создания master-ноды - 10. Create master node

    В мастере потребуется указать:

    1. Hostname - доменное имя ноды кластера;
    2. Current mysql root password - пароль пользователя root базы данных;
    3. Select database - выбрать базу данных, которая будет участвовать в репликации;

После подтверждения запускается процесс создания master-ноды кластера, который произведет настройку всех необходимых сервисов, а также добавит все необходимые записи в модуль Веб-кластера.

После настройки master-ноды будет предложено создать slave-ноду - можно согласиться, а можно отказаться и создать slave-ноду позже .

Создание slave-ноды

Для полноценной работы кластера после создания master-ноды в кластер необходимо добавить хотя бы одну slave-ноду. Это можно сделать как после создания master-ноды, так и с помощью административного меню:

  • заранее выполнить подготовку виртуальной машины для slave-ноды;
  • подключиться к консоли master-ноды и выбрать в меню пункт 11. Add slave node (либо после создания master-ноды согласиться на создание slave-ноды):

    Здесь потребуется указать:

    1. Hostname - доменное имя для slave-ноды кластера;
    2. IP - ip-адрес slave-ноды;
    3. Slave node root password - пароль root от slave-ноды;
    4. Current mysql slave node root password - пароль root от mysql на slave-ноде;
    5. Master mysql root password - пароль root от mysql на master ноде.

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

После добавления slave-ноды мы получаем полноценный кластер. При росте нагрузки на проект можно добавить дополнительную slave-ноду в кластер аналогичным образом. Тем самым обеспечить стабильность работы проекта при любом росте нагрузки:

Падение нод в кластере

В случае падения одной или нескольких slave-нод проект будет по-прежнему стабильно работать.

Если же упадет master-нода, то для восстановления работоспособности кластера необходимо:

  • сменить роль одной из slave-ноды на master. Для этого достаточно запустить мастер 12. Make slave node a master node и указать пароли к MySQL root для всех оставшихся в кластере нод:

  • и после его работы скорректировать список нод в модуле Веб-кластер.


Добавление дополнительного сайта
190 / 253

Мастер создания дополнительных сайтов, позволяет развернуть на одной виртуальной машине несколько сайтов, как на независимых установках «1С-Битрикс», так и в рамках многосайтовости.

Добавление дополнительного сайта

Для добавления дополнительного сайта необходимо:

  • Предварительно настроить DNS-сервер или указать доменное имя в /etc/hosts на виртуальной машине, а также на всех машинах, с которых будет осуществляться доступ к данному сайту.
  • Далее из административного меню запустить мастер 13. Add aditional site:

    и указать:
    1. Website address, without www - доменное имя дополнительного сайта без www;
    2. Directory name for website files - имя директории, в которой будут хранится файлы дополнительного сайта (директория будет создана в /home/bitrix/ext_www/);
    3. Specify the website charset - кодировку создаваемого сайта;
    4. Create symbolic links to existing Bitrix kernel - создание символических ссылок на установленное ядро «1С-Битрикс»:
      • N - в случае создания дополнительного сайта в рамках отдельной установки. В данном случае необходимо создать базу данных. Для этого потребуется указать имя новой базы данных, логин и пароль пользователя MySQL, обладающего необходимыми правами.
      • Y - в случае создания дополнительного сайта в рамках многосайтовости. В данном случае необходимо указать полный путь к ранее установленному продукту «1С-Битрикс».

Новый дополнительный сайт доступен для использования.

Примечание: Количество дополнительных сайтов не ограничивается. Единственным ограничением является то, что данный мастер не рассчитан на работу с машинами, входящими в кластер.

Удаление дополнительного сайта

Для удаления записи о дополнительном сайте необходимо в административном меню «1C-Битрикс: Виртуальная машина» выбрать пункт 14. Delete aditional site.

Примечание: Мастер удаления дополнительного сайта не удаляет директорию с файлами и базу данных дополнительного сайта, он удаляет только конфигурационный файл в «1C-Битрикс: Виртуальная машина». Удаление директории с файлами и базу данных сайта необходимо сделать вручную.


Мониторинг сервера
191 / 253

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

«1C-Битрикс: Виртуальная машина» версии 4.х поставляется с системами мониторинга такие как Munin и Nagios, которые имеют большое количество различных компонентов по отслеживанию функционирования всех систем сервера.

Для начала работы систем мониторинга необходимо:

  • В меню виртуальной машины выбрать пункт 16. Start/stop server monitoring и согласиться на запуск мониторинга:

  • Далее задать:
    • логин и пароль для Munin;
    • пароль для Nagios (логин по умолчанию: nagiosadmin);
    • e-mail Администратора, куда будут высылаться уведомления.

  • Затем мастер сделает необходимые настройки и запустит сервисы мониторинга сервера:

Для мониторинга сервера из браузера нужно зайти по адресам и авторизоваться под созданными ранее учетными записями мониторинга:

  • Munin - http://адрес_сервера/munin/:

  • Nagios - http://адрес_сервера/nagios/:


Автоматическое создание резервной копии
192 / 253

При разворачивании проектов на базе BitrixVM, часто встает задача создания резервной копии проекта по расписанию.

В «1C-Битрикс: Виртуальная машина» версии 4.х появился функционал автоматического резервного копирования сайта, находящегося в директории /bitrix/home/www/, и базы данных. Бекап будет создан по расписанию в виде архива .tar.gz и записан в директории /home/bitrix/backup/archive/.

У данного способа есть как преимущества, так и недостатки в сравнении с встроенным в продукты «1С-Битрикс» механизмом создания резервной копии:

  • К преимуществам относятся более высокая скорость создания резервной копии и независимость от работоспособности проекта.
  • Из недостатков стоит отметить то, что при использование данного способа нельзя сделать резервную копию файлов, расположенных в облачных хранилищах.

Для создания расписания автоматического резервного копирования необходимо:

  • В меню виртуальной машины выбрать пункт 17. Start/Stop site backup:

  • Выбрать периодичность и время запуска автоматического резервного копирования:

    Примечание: Время в «1C-Битрикс: Виртуальная машина» по умолчанию московское MSK (часовой пояс - UTC+4).

Примечание: Если необходимо делать бекап дополнительных сайтов, созданных с помощью административного меню 13. Add additional site, то нужно указать имя директории дополнительного сайта в /home/bitrix/ext_www/:

На этом работа мастера настройки завершена, и в крон (/etc/crontab) добавляется задача резервного копирования вашего проекта. В случае необходимости более гибкой настройки времени запуска создания резервной копии, можно его скорректировать непосредственно в /etc/crontab:

10 22 * * * bitrix test -f /home/bitrix/backup/scripts/bxbackup.sh && { /home/bitrix/backup/scripts/bxbackup.sh ; } >/dev/null 2>&1

Версии виртуальной машины до 4.х

При разворачивании проектов на базе BitrixEnv (в версии для Linux) или BitrixVM старых версий задачу создания резервной копии проекта по расписанию поможет решить скрипт, который создает резервную копию базы данных и файлов сайта (/bitrix/home/www/) в /home/bitrix/backup/archive/.

Создание резервной копии будет запускаться автоматически раз в сутки, в 2:30. Периодичность исполнения можно настроить в /etc/crontab.

Для запуска резервного копирования на сайте необходимо выполнить следующие команды:

wget http://repos.1c-bitrix.ru/ext/start_site_backup.sh
chmod +x start_site_backup.sh
./start_site_backup.sh

Примечание: Не забывайте следить за свободным местом на диске и периодически удалять старые резервные копии.


Настройка сервера поиска Sphinx
193 / 253

Использование Sphinx в качестве поискового механизма позволит значительно увеличить скорость поиска и снизит нагрузку на сервер.

Для его настройки необходимо:

  • Установить и обновить проект до последней актуальной версии;
  • В меню виртуальной машины выбрать пункт 18. Sphinx search server:

  • В данном меню при первом включении вначале выбрать пункт 0. Start sphinx , а затем 3. Add index, чтобы создать индекс для конкретного сайта. При этом необходимо выбрать кодировку, в которой работает сайт и придумать название индекса:

  • Мастер создаст нужный индекс, перезапустит Sphinx. После чего, покажет полное название индекса и предложит настроить на использование этого индекса установленный на машине проект:

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

  • Все готово к работе:

Примечание: Ручная настройка поискового механизма Sphinx описана в данном уроке.


Обновление виртуальной машины VMBitrix
194 / 253

Внимание! Обновление продукта «1C-Битрикс: Виртуальная машина» - сложная операция, в процессе которой происходит обновление системных файлов операционной системы виртуальной машины, и для этого необходимы соответствующие знания администрирования *nix-систем. Перед запуском обновления рекомендуется сделать полный бекап виртуальной машины.

Для обновления продукта «1C-Битрикс: Виртуальная машина» необходимо выбрать в административном меню пункт 19. Update System .

Скрипт автоматически проверит обновления виртуальной машины, выдаст общий объем для загрузки и запрос на установку.

Примечания:
  • Если после обновления, что-то перестанет работать, то можно вернуть полностью или частично старые файлы настроек соответствующей службы, т.к. конфигурационные файлы при обновлении не перезаписываются, а сохраняются в файлах *.ori.(метка времени).
  • Также в процессе обновления могут отключиться некоторые модули php. Для их включения необходимо выполнить следующие команды:
    mv -f /etc/php.d/(имя модуля).ini.disabled /etc/php.d/(имя модуля).ini
service httpd restart


Перенос продукта «1C-Битрикс» на виртуальную машину BitrixVM
195 / 253

Для переноса сайта с хостинга или локального сервера на виртуальную машину BitrixVM необходимо:

  • архив сайта;
  • настроенная виртуальная машина BitrixVM (подробнее - см. Запуск виртуальной машины BitrixVM)

Создание архива сайта

  1. Создание архива сайта происходит на странице Резервное копирование (Настройки > Инструменты > Резервное копирование) :

    • архив сайта может быть сохранен в облаке «1С-Битрикс»;

      Примечание: Опция копирования в облако «1С-Битрикс» доступна пользователям с активной лицензией. Также, в целях безопасности, все резервные копии сайта отправляются в облако «1С-Битрикс» всегда зашифрованными. Компания «1С-Битрикс» не может восстановить или поменять пароль! Будьте внимательны, без знания этого пароля восстановить архив не удастся!

    • либо в папке сайта (архив сайта будет сохранен в папке /bitrix/backup/ хостинга с уникальным именем файла).
  2. На вкладке Параметры можно выбрать экспертные настройки создания резервной копии:

    Примечание: Для безопасности данных рекомендуется включить опцию Шифровать данные резервной копии и ввести пароль для архива сайта.

  3. После успешного создания архива сайта он будет доступен на странице Список резервных копий (Настройки > Инструменты > Список резервных копий) . Здесь будут показаны все резервные копии:

  4. Далее понадобится Получить ссылку для переноса с помощью одноименного меню действий:

    и в появившемся окне скопировать ее в буфер обмена:

  5. Также можно скачать архив сайта на локальный компьютер с помощью пункта меню Скачать.

Копирование сайта в виртуальную машину BitrixVM

  1. Запустить предварительно настроенную виртуальную машину BitrixVM (см. урок Запуск виртуальной машины BitrixVM).
  2. В адресной строке браузера ввести http://адрес_виртуальной_машины/ (можно указать домен или ip-адрес).
  3. Откроется мастер установки продукта «1С-Битрикс», где нужно выбрать Восстановить проект:

  4. На этапе загрузки резервной копии выбрать нужный способ хранения архива сайта (в данном случае - ввести ссылку из буфера обмена, полученную на странице со списком резервных копий сайта):

    Примечание: Также есть возможность загрузить архив из облака «1С-Битрикс» (понадобится лицензионный ключ с действующей лицензией) или с локального компьютера, если эти способы были выбраны на этапе создания архива сайта.

  5. После скачивания архива, если архив был зашифрован, то будет предложено ввести пароль:

  6. Далее необходимо настроить подключение к базе данных:

    Настройки подключения к MySQL по умолчанию в виртуальной машине BitrixVM:

    • Сервер: localhost
    • Пользователь БД: root
    • Пароль: <пусто>
    • Имя БД: sitemager0

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

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

  8. Перенос продукта «1C-Битрикс» на виртуальную машину BitrixVM закончен:


Дополнительные настройки BitrixVM
196 / 253

Внимание! Для операций, описанных в данной главе, необходимы начальные знания администрирования. Перед началом проведения данных операций рекомендуется сделать полный бекап виртуальной машины.


Изменение стандартных настроек BitrixVM без отключения автоподстройки
197 / 253

При запуске виртуальной машины BitrixVM или физического сервера с установленным пакетом BitrixEnv сервисом bvat автоматически настраиваются основные параметры Apache, PHP, MySQL в зависимости от количества доступной памяти. Это позволяет обеспечивать оптимальные настройки сервера.

Но в ряде случаев возникает необходимость изменения некоторых параметров без отключения сервиса bvat. Для внесения таких изменений в настройки сервер предусмотрены специальные конфигурационные файлы, позволяющие переопределять параметры устанавливаемые сервисом bvat:

  • MySQL - /etc/mysql/conf.d/z_bx_custom.cnf
  • PHP - /etc/php.d/z_bx_custom.ini
  • Apache - /etc/httpd/bx/custom/z_bx_custom.conf

В случае, если нет этих файлов, то их можно создать самостоятельно.


Увеличение дискового пространства BitrixVM
198 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап BitrixVM.

При использование виртуальной машины BitrixVM или ami-образа BitrixVM, со временем может возникнуть проблема нехватки свободного места. Наиболее оптимальным способом решения данной проблемы, является добавление дополнительного диска и перенос на него части контента.

Так как основной объем дискового пространства потребляется контентом сайтов и их резервными копиями, расположенными в /home/bitrix, а также БД, расположенной в /var/lib/mysql, то на отдельные диски, следует выносить именно эти разделы.

Рассмотрим данную задачу на примере переноса на отдельный диск папки /home с контентом сайтов и их резервными копиями.

  • Для этого, в настройках виртуальной машины в список оборудования, добавляем новый диск необходимого размера. Все указанные ниже действия необходимо осуществлять под учетной записью администратора root:

  • После добавления диска, для его инициализации, возможно потребуется перезагрузить сервер. Увидеть новый диск и присвоенное ему буквенное обозначение можно выполнив команду:
    fdisk -l

  • Далее на новом диске создаем основной раздел, которому выделяем все свободное пространство диска командой:
    fdisk /dev/sdb

    • Для сохранения изменений на диск и выхода из fdisk введите команду w.

  • После сохранения таблицы разделов, форматируем новый раздел и переносим на него информацию из /home:
    mkfs.ext4 /dev/sdb1
mount /dev/sdb1 /mnt
service httpd stop
service nginx stop
mv -f /home/* /mnt
umount /mnt
  • Следующим шагом определяем UUID нового диска:
    blkid
/dev/sda1: UUID="99066558-ba04-465c-9962-e827aa2928ec" TYPE="ext4"
/dev/sda2: UUID="8ea38ef9-1ee5-423b-a013-15fd603a678e" TYPE="swap"
/dev/sda3: UUID="08ec5c65-8fd8-47ac-a998-d81195c8f964" TYPE="ext4"
/dev/sdb1: UUID="b2e58731-b621-4bd5-909a-afe3bb5dd8a1" TYPE="ext4"

    и добавляем запись (в данном примере: UUID=b2e58731-b621-4bd5-909a-afe3bb5dd8a1) о нем в /etc/fstab (вместо UUID можно также использовать имя устройства /dev/sdb)

  • Остается только примонтировать новый диск и запустить остановленные ранее службы:
    mount /home
service httpd start
service nginx start

Добавление дисков в других средах виртуализации или непосредственно на физическом сервере, проходит аналогично.


Подключение Swap-раздела
199 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап BitrixVM.

Виртуальная машина BitrixVM поставляется с swap-разделом 256 МБ, а в образе ami он по умолчанию не подключен. Поэтому в процессе эксплуатации может возникнуть необходимость в расширении раздела подкачки.

Как и в случае с увеличением свободного места, наиболее простой способ - добавить дополнительный диск и разместить раздел подкачки на нем, либо создать файл подкачки.

Для этого:

  • подключаем к виртуальной машине диск или создаем файл подкачки:
    dd if=/dev/zero of=/swapfile bs=1M count=1024
  • создаем на диске:
    mkswap /dev/sdb1
    или в файле swap-раздел:
    mkswap /swapfile
  • подключаем раздел подкачки:
    swapon /dev/sdb1
    или файл подкачки:
    swapon /swapfile
  • и наконец, добавляем запись о новом разделе подкачки в /etс/fstab, чтобы не включать после каждой перезагрузки вручную:
    /dev/sdb1 none swap sw 0 0
    или о файле подкачки:
    /swapfile none swap sw 0 0


Корректное монтирование Windows-ресурсов
200 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап BitrixVM.

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

mount -t cifs -o -fstype=cifs,iocharset=utf8,username=XXXX,password=XXXX,uid=500,gid=501,fmode=0777,noserverino //xxx.xxx.xxx.xxx/folder /home/bitrix/www/docs/folder/smb
где:
  • uid - идентификатор пользователя bitrix;
  • gid - идентификатор группы bitrix;
  • //xxx.xxx.xxx.xxx/folder - путь к сетевому ресурсу;
  • /home/bitrix/www/docs/folder/smb - папка, куда будет смонтирован диск.

Примечание: Использование опции noserverino является обязательным, так как в PHP есть уязвимость.


Настройка memcached
201 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап «Виртуальной машины».

В случае, если в проекте планируется использовать memcached, необходимо произвести его настройку в соответствии с предполагаемой нагрузкой.

Для этого необходимо:

  • в файле /etc/sysconfig/memcached задать следующие параметры:
    • MAXCONN = "1024" - количество одновременных подключений (по умолчанию 1024);
    • CACHESIZE="1024" - объем выделяемой памяти для кеша (по умолчанию 64MB);
    • OPTIONS="t 8" - количество потоков memcached (по умолчанию 4).

    • Примечание: Параметры MAXCONN, CACHESIZE и OPTIONS подбираются экспериментальным путем в зависимости от характера нагрузки и от имеющихся ресурсов.

    Оценить объем памяти, необходимой для кеширования (параметр CACHESIZE), можно по размеру вашего файлового кеша. Если у вас на проекте файловый кеш занимает 3 GB, то использование memcache c 256МБ памяти не будет эффективным за счет частого вытеснения.

  • После настройки memcaсhe необходимо перезапустить командой:
    service memcached restart
  • Далее подключить его в bitrix/php_intarface/dbconn.php:

    define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");

В случае, если используется один сервер, то для улучшения производительности можно настроить работу с memcache через сокет:

  • USER="bitrix" - пользователь, от которого будет запущен memcache;
  • OPTIONS="-t 8 -s /tmp/memcached.sock" - количество потоков и путь к сокету.

После этого необходимо изменить настройки в bitrix/php_interface/dbconn.php:

define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "unix:///tmp/memcached.sock");
define("BX_MEMCACHE_PORT", "0");


Настройка Postfix для отправки почты
202 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап виртуальной машины.

По умолчанию в BitrixEnv и BitrixVM используется msmtp для отправки почтовых сообщений.

Преимуществом данного решения является простота его настройки. К недостатком можно отнести медленную отправку почтовых сообщений через внешние сервисы (Google, Yandex).

В большинстве случаев, это не приводит к каким-либо проблемам, так как почтовые события отрабатывают из-под cron-a, но в ряде случаев может создать проблему - например, если почтовые события исполняются на хите (задан параметр немедленной доставки) или разработчик напрямую использует функцию mail().

Рассмотрим настройку отправки почтовых сообщений postfix-ом через Яндекс:

  1. Устанавливаем дополнительные пакеты:
    yum install cyrus-sasl-plain
  2. Добавляем в файл /etc/postfix/main.cf:
    smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/mailpasswd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic
  3. В /etc/postfix/mailpasswd указываем логин и пароль:
    [smtp.yandex.ru]      www@some.ru:password
  4. В /etc/postfix/sender_relay указываем привязку доменов и конкретных отправителей к внешним службам:
    @some.ru [smtp.yandex.ru]
www@some.ru [smtp.yandex.ru]
  5. В /etc/postfix/canonical добавляем для домена указание через какой аккаунт отправлять почту:
    @some.ru   www@some.ru
  6. В /etc/postfix/generic добавляем отправку почты админу:
    root@localhost admin@mail.xx
bitrix@localhost admin@mail.xx
  7. И выполняем команду postmap для /etc/postfix/generic, /etc/postfix/canonical, /etc/postfix/sender_relay, /etc/postfix/mailpasswd:
    postmap /etc/postfix/generic
postmap /etc/postfix/canonical
postmap /etc/postfix/sender_relay
postmap /etc/postfix/mailpasswd
  8. Изменяем настройки в php.ini:
    sendmail_path = sendmail -t -i -f www@some.ru          ;bitrix-env
  9. Запускаем все необходимые службы:
    chkconfig saslauthd on
service saslauthd restart
chkconfig postfix on
service postfix restart
service zend-server restart

Скорость отправки сообщений php-скриптами значительно возрастет, а всю работу по доставке писем до внешнего сервера возьмет на себя postfix. При этом не нужно настраивать полноценный почтовый сервер.


Выполнение всех агентов на Cron
203 / 253

На больших и не очень проектах часто возникает вопрос с переносом исполнения некоторых особо тяжелых агентов на Cron.

  • Для начала полностью отключим выполнение агентов на хите. Для этого необходимо выполнить команду в php-консоли административного меню продукта «1С-Битрикс» /bitrix/admin/php_command_line.php?lang=ru:
    COption::SetOptionString("main", "agents_use_crontab", "N");
echo COption::GetOptionString("main", "agents_use_crontab", "N");

COption::SetOptionString("main", "check_agents", "N");
echo COption::GetOptionString("main", "check_agents", "Y");

    В результате выполнения должно быть NN.

  • Убираем из файла /bitrix/php_interface/dbconn.php определение следующих констант:
    define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);

    И добавляем:

    if(!(defined("CHK_EVENT") && CHK_EVENT===true))
   define("BX_CRONTAB_SUPPORT", true);
  • Далее создаем файл проверки агентов и рассылки системных сообщений /bitrix/php_intarface/cron_events.php:
    <?
$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__)."/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS",true);
define('CHK_EVENT', true);

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

CAgent::CheckAgents();
define("BX_CRONTAB_SUPPORT", true);
define("BX_CRONTAB", true);
CEvent::CheckEvents();
?>
  • И добавляем данный скрипт в Cron:
     */5 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php

После этого все агенты и отправка системных событий будут обрабатывается из-под cron, раз в 5 минут.

Чтобы не увеличивалась очередь отправки почтовых сообщений, нужно изменить параметр, отвечающий за количество почтовых обрабатываемых за раз событий. Для этого выполняем в php-консоли следующую команду:

COption::SetOptionString("main", "mail_event_bulk", "20");
echo COption::GetOptionString("main", "mail_event_bulk", "5");


Опции монтирования
204 / 253

Внимание! Для операций, описанных в данном уроке, необходимы знания администрирования *nix-систем. Перед началом проведения данных операций рекомендуется сделать полный бекап виртуальной машины.

Для обеспечения более высокой производительности файловой системы рекомендуем отключать изменение метки времени при чтении файлов и директорий: noatime, nodiratime.

Для этого в /etc/fstab нужно отредактировать (добавить в текущую строку) параметры в строке со своим UUID:

UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 /    ext4    defaults,noatime,nodiratime    1 1
где UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 - уникальный идентификатор диска, который можно узнать в консоли по команде blkid.

Примечание: Вместо UUID можно также использовать имя устройства: /dev/sda1, /dev/sda2, /dev/sda3. Или метку тома если она задана, например: LABEL=root.

После перезагрузки новые настройки начнут действовать.

Чтобы их применить, не перезагружая сервер, можно выполнить перемонтирование разделов командой:

mount -o remount,noatime,nodiratime /

Примечание: К решению проблемы производительности файловой системы нужно подходить творчески. Если, например, на диске есть еще кеш некоторых приложений, то от предложенных мер производительность может снизиться, так как многие приложения очищают кеш по метке доступа, которые в примере предлагается отключить. В некоторых случаях увеличение времени коммита может дать лучший результат, особенно если много оперативной памяти. Время коммита задается параметром commit. Для установки его в 120 секунд, например, необходимо добавить commit=120. То есть набор опций монтирования будет defaults,noatime,commit=120.

По умолчанию сброс данных и метаданных на диск происходит каждые 5 сек. Откладывание времени сброса, так же может уменьшить фрагментацию файлов на диске, если есть файлы, в которые часто происходит дописывание данных. Например логи.


Настройка NTLM-авторизации
205 / 253

Для поддержки механизма NTLM-авторизации продуктами «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке» необходим модуль «AD/LDAP интеграция» версии 11.5.0 и выше.

После включении и настройки новый механизм NTLM-авторизации начинает работать следующим образом:

  • неавторизованный посетитель приходит на проект, где обработчиком события он перенаправляется на открытый порт Apache (8890 для http или 8891 для https);
  • Apache выполняет NTLM-авторизацию пользователя и пользователь перенаправляется назад на 80 или 443 порт (для http и https соответственно);
  • следующие хиты пользователь выполняет в обычном режиме.

Рассмотрим настройку на примере «Битрикс24 в коробке».

Настройка NTLM-авторизации пользователей в «Битрикс24 в коробке»

  • Во время установки, в мастере выбираем Разрешить пользователям Active Directory авторизовываться на портале:

  • Далее вводим настройки подключения к домену AD, проверяем соединение:

  • Указываем соответствия групп в AD группам корпоративного портала:

  • После завершения установки в административном разделе портала открываем страницу Active Directory / LDAP серверы (Настройки > AD/LDAP):

  • редактируем параметры сервера Active Directory, указывая домен для NTLM авторизации:

  • После этого заходим в настройки модуля AD/LDAP и устанавливаем Использовать NTLM авторизацию:

Продукт «1С-Битрикс» готов к использованию NTLM-авторизации, осталось настроить виртуальную машину.

Внимание! Если необходимо для локальной сети компании настроить NTLM-авторизацию, а для сотрудников, работающих с порталом, использовать стандартную авторизацию, то дополнительно в настройках модуля AD/LDAP нужно указать диапазон IP-адресов, для которых необходима NTLM-авторизация - Ограничить NTLM переадресацию следующей подсетью (например, 192.168.0.1/24):

Настройка NTLM-авторизации пользователей в «1С-Битрикс: Виртуальная машина»

Для настройки виртуальной машины необходимо подключитьcя к ней под пользователем root, выбрать пункт меню NTLM autentification и ввести необходимые данные:

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

Примечание: Проверить, что компьютер успешно введен в домен можно командой:
net ads testjoin

Настройка завершена, для успешной NTLM-авторизации осталось проверить настройки браузеров.

Настройка NTLM-авторизации в браузерах

  • Internet Explorer

    Для успешной NTLM-авторизации нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости нужно добавить):

  • Mozilla Firefox:

    Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris на странице Firefox: about:config)

Примечание: Действия по включению NTLM-авторизации на уже установленном продукте «Битрикс24 в коробке», а также в «1С-Битрикс: Управление сайтом» аналогичны перечисленным выше, за исключением того, что сервер Active Directory добавляется вручную в административном разделе.


Подключение IDE
206 / 253

Для упрощения работы с Bitrix Framework в виртуальную машину включён Xdebug. Работает он по схеме:

Перед изменением настроек надо переименовать файл xdebug.ini.disabled в xdebug.ini и перезапустить httpd.

Для настройки машины воспользуйтесь следующим примером:

$ cat /etc/php.d/xdebug.ini
; Enable xdebug extension module
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=on
xdebug.remote_host=192.168.205.1
xdebug.remote_port=9000

Примечание: Xdebug требует использовать proxy при работе через Network Address Translation, необходимо открыть порт 9000.


Монитор производительности
207 / 253

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

Подробнее про оптимальную настройку сервера можно посмотреть в главе Конфигурирование веб-систем для оптимальной работы.

Список ссылок по теме:

  • Пользовательская документация по модулю "Монитор производительности"
  • Низкая оценка производительности на мощном железе (Блог)
  • "Монитор производительности" в работе (Блог)
  • Производительность сайта в картинках (Блог)
  • График времени генерации страниц сайта (Блог)
  • Модуль Производительности на практике. Оптимизация настроек сервера (Блог)
  • Оптимизация времени генерации страницы (Блог)


Настройки модуля
208 / 253

Глобальные параметры модуля определяются на странице настроек Монитор производительности (Настройки > Настройки продукта > Настройки модулей > Монитор производительности).

Для настройки модуля доступны следующие опции:

  • Максимальная длина URL при отображении - опция позволяет указать максимальное количество символов, которое будет использоваться для отображения URL'ов на административных страницах, относящихся к модулю.
  • Вести журнал предупреждений PHP - позволяет регистрировать ошибки PHP. Просмотреть журнал ошибок можно на странице Ошибки PHP (Настройки > Производительность > Ошибки PHP).
  • Вести журнал кеширования - позволяет регистрировать информацию о файлах кеша. Просмотреть журнал можно на странице Кеширование (Настройки > Производительность > Кеширование).
  • Записывать только операции с большими файлами кеша - в журнал будут записываться только операции с файлами кеша, размер которых больше, чем указано в поле Размер файла кеша больше которого считать его большим.
  • Вести журнал SQL запросов - позволяет регистрировать в журнале SQL запросы. Просмотреть журнал запросов можно на странице SQL Запросы (Настройки > Производительность > SQL Запросы).
  • Сохранять стек вызова для SQL запросов - становится возможным просмотреть стек запросов на странице SQL Запросы.
  • Записывать только медленные SQL запросы: - в журнал будут записываться запросы с продолжительностью более чем указанные в поле Время исполнения после которого считать запрос медленным.
  • Включить монитор - запускает монитор производительности на выбранное время. Действие аналогично опции Тестировать производительность на странице Панель производительности (Настройки > Производительность > Панель производительности).

    Если монитор включен, то в поле Активность монитора будет отображен статус Работает, при этом ниже будет выведена информация: До окончания активности осталось: (часов:минут:секунд).
  • Удалить собранные ранее данные - позволяет удалить ранее собранные данные по производительности.

Примечание: Настройка доступа производится типовым для Bitrix Framework способом. Подробнее про настройку доступа к модулям смотрите в курсе Администратор. Базовый или Администратор сервиса Битрикс24 (коробочная версия).


Публичная часть модуля
209 / 253

Для оценки производительности в публичной части сайта используется кнопка Отладка [image], которая позволяет отображать статистику прямо на странице:

1С-Битрикс: Управление сайтом

Битрикс24 в коробке

Примечание: Для административной части сайта также доступна Статистика SQL-запросов, Время исполнения страницы и Статистика компрессии. Отображение статистики включается с помощью меню кнопки Отладка в публичной части сайта.

Меню кнопки Отладка позволяет выбрать тип отображаемой информации на странице:

  • Суммарная статистика - статистика SQL-запросов, включаемых областей, времени исполнения;
  • Статистика SQL-запросов - статистика всех SQL-запросов, исполняющихся на странице;
  • Детальная статистика кеша - статистика операций с кешем и сами файлы кеша;
  • Статистика включаемых областей - статистика включаемых областей (время, запросы);
  • Время исполнения страницы - время исполнения страницы;
  • Статистика компрессии - статистика модуля компрессии.

Информация для опций Время исполнения страницы и Статистика компрессии отображается внизу страницы:

Информация для опции Статистика SQL-запросов отображается внизу страницы:

Ссылка Всего SQL запросов позволяет отобразить более подробную информацию обо всех запросах на странице в специальной форме (см. ниже).

При одновременно отмеченных опциях Время исполнения страницы и Статистика SQL-запросов внизу страницы будет доступна ссылка Время создания страницы

которая позволит отобразить статистику страницы в специальной форме:

Примечание: При отмеченной опции Суммарная статистика по ссылке Время создания страницы будет доступна более подробная информация:

Ссылки в верхней части формы позволяют отобразить в нижней части формы список задействованных включаемых областей. Ссылки в нижней части формы позволяют отобразить информацию о запросах.

Информация о запросах

Для просмотра информации о запросах компонента, необходимо выбрать пункт меню Статистика включаемых областей и затем использовать ссылку вида Запросов: n, отображаемую в информационной области, которая расположена рядом с компонентом:

Откроется форма, в которой будет отображена информация о запросах:

Примечание: В нижней части формы отображается детальная информация о каждом запросе. Для отображения информации о другом запросе компонента необходимо использовать ссылку в верхней части формы.

Кеш

Данные о кеше выводятся во всплывающем окне:


Административные страницы модуля
210 / 253
В административной части сайта к модулю Монитор производительности относятся следующие страницы, расположенные в разделе Производительность (Настройки > Производительность).


Скорость сайта
211 / 253

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

Скорость сайта - комплексный показатель комфортности работы с сайтом для посетителей.

Учитывает качество разработки сайта, качество хостинга и доступность сайта по сети. Рассчитывается для 1000 последних посетителей сайта. Скорость сайта фактически показывает, как быстро отобразился сайт для большинства из этих 1000 посетителей.

В отличие от большинства сервисов, замеряющих скорость загрузки сайта из внешних точек, скорость загрузки ресурса проверяется на хитах реальных пользователей. Так как посетители все время меняются, то и данные меняются вместе с ними.

Инструмент Скорость сайта доступен после установки обновления main 14.9.0 и только для русских версий продуктов "1C-Битрикс: Управление сайтом".

После чего на странице рабочего стола появится новый гаджет, показывающий текущую скорость загрузки страниц вашего сайта:

Если гаджет не отображается, его можно вручную добавить на рабочий стол с помощью соответствующей кнопки (Добавить гаджет > Настройки > Монитор производительности).

Как считается Скорость сайта
Для подсчёта данных скорости сайта в этом инструменте используется стандартная функция любого современного браузера: Navigation Timing API. В браузере есть объект performance с ключём timing, который возвращает временные отметки этапов запроса к странице:

События полного цикла загрузки страницы:

Событие (метрика) | Описание
navigationStart | Время начала навигации
unloadEventStart | Время начала выгрузки предыдущего документа (0, если такового не было)
unloadEventEnd | Время завершения выгрузки предыдущего документа (0, если такового не было)
redirectStart | Время начала редиректа (или последовательности редиректов. 0, если таковых не было)
redirectEnd | Время окончания редиректа (или последовательности редиректов. 0, если таковых не было)
fetchStart | Время первого обращения в кэш браузера или начала загрузки страницы.
domainLookupStart | Время начала поиска адреса для доменного имени. Если страница извлекается из кэша, то свойство равнозначно предыдущей метрике.
domainLookupEnd | Время завершения поиска адреса для доменного имени. Если страница извлекается из кэша, то свойство равнозначно предыдущей метрике.
connectStart | Время начала соединения с сервером сайта или приложения. Если страница загружается из кэша или локально, то свойство равнозначно предыдущей метрике.
connectEnd | Время завершения соединения с сервером сайта или приложения. Если страница загружается из кэша или локально, то свойство равнозначно предыдущей метрике.
secureConnectionStart | Время первого "рукопожатия" при инициализации безопасного HTTPS соединения.
requestStart | Время начала загрузки основного документа (как из удаленного сервера, так и из кэша или локального ресурса). Технология Композитный сайт ускоряет именно этот отрезок тайминга - Request.
responseStart | Время до начала ответа сервера (время до первого полученного байта)
responseEnd | Время до полной загрузки основного документа
domLoading | Время установления свойству readyState значения "loading"
domInteractive | Время установления свойству readyState значения "interactive" - момент, когда пользователь может взаимодействовать со страницей
domContentLoadedStart | Время события DOMContentLoaded
domContentLoadedEnd | Время завершения всех действий связанных с предыдущим событием
domComplete | Время установления свойству readyState значения "complete"
loadEventStart | Время события onLoad
loadEventEnd | Время завершения всех действий связанных с предыдущим событием

Скоростью сайта считается время между navigationStart и domContentLoaded.

Технология подсчёта значения Скорость сайта следующая: из 1250 последних хитов вычитаются 250 (20%) самых медленных. Для оставшихся считается медиана, которая и выводится в гаджете. В результате полученное значение включает в себя как параметры сети, так и организацию бек-энда и фронт-энда.

Примечание: 20% "плохих" хитов откидываются чтобы исключить ошибку, связанную с неустойчивыми каналами связи (мобильный интернет, связь в средствах транспорта и подобные).

На Скорость сайта оказывают влияние различные факторы: производительность и настройки сервера, скорость "интернета" (доставки страничек сайта до посетителей), качество разработки сайта и использование различных технологий, ускоряющих его работу. Например, сторонние подключаемые скрипты, которые долго загружаются и исполняются, могут в итоге увеличивать общее время отображения страницы.

Сюда же входит правильность настройки сервера и его производительность, которую можно оценить на странице Монитор производительности (Настройки > Производительность > Панель производительности). Чем медленнее или проблемнее сервер, тем больше времени понадобится для получения страницы, и тем хуже будет показатель скорости сайта.

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

Для просмотра подробной информации о скорости загрузки сайта перейдите на страницу Скорость сайта (Настройки > Производительность > Скорость сайта) или воспользуйтесь ссылкой гаджета с текстом, характеризующим скорость работы сайта.

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

Ниже отображается оценочная характеристика скорости работы сайта:

Чтобы оперативно контролировать скорость работы сайта прямо с этой же страницы можно перейти к настройкам в Панели производительности, Композитного сайта и CDN.

Выводить только лишь средний показатель не эффективно. Страницы могут различаться как по количеству контента, так и по количеству скриптов и времени их выполнения. Для этого доступна соответствующая диаграмма, которая показывает, как распределились страницы и какие из них влияют на ухудшение среднего результата:

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

Еще ниже представлен график, отображающий статистику последних посещений сайта на разных этапах загрузки страницы:

  • DNS (DNS Lookup). Хоть в большинстве своем, запрос к DNS по скорости близок к нулю, так как данные кешируются и браузерами, и самими серверами DNS (локальными, серверами провайдера и т.п.) инструмент "скорость сайта" учитывает этот параметр и выводит его на график.
  • Дальше происходит Подключение к серверу (Connect to Server) и разрешение на дальнейшие действия. Это некое "рукопожатие", время которого так же выводится на график.
  • Следующий шаг - это Ответ сервера (Request Document). Чем дальше от клиентов находится сервер, тем больше будет этот показатель. По нему можно ориентироваться, сколько теряется времени на ответ сайта посетителю.
    Данный ответ может быть не разовой операцией, ведь чем больше запросов делает страница к серверу, чтобы произвести загрузку ресурсов и т.п., тем дольше все будет отрабатываться.
  • Дальше происходит Загрузка HTML (Receive Document). Здесь учитывается время загрузки HTML-страницы для ее последующей обработки.
  • После того, как страница загрузилась, начинается процесс ее обработки - Обработка HTML и загрузки ресурсов.
    Вот здесь при наличии ошибок в разработке, процесс загрузки страницы может очень "просесть", что будет заметно на графике.
  • Далее следует Отрисовка страницы, когда браузер обрабатывает содержимое страницы (синтаксический анализ HTML, CSS, обработка элементов JavaScript и отображение страницы) после загрузки её с сервера и до начала отрисовки.

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

Ссылки по теме:

  • Сайт глазами посетителей (Блог)


Страницы
212 / 253

На странице Монитор производительности: страницы (Настройки > Производительность > Страницы) можно просмотреть отчет по нагружаемости страниц:

Монитор производительности: страницы

Переход по ссылке с названием страницы позволяет просмотреть все её хиты на странице Хиты.


Хиты
213 / 253

На странице Монитор производительности: хиты (Настройки > Производительность > Хиты) можно просмотреть отчет по хитам:

Монитор производительности: хиты

Переход по ссылке >> позволяет перейти на желаемую страницу в публичную часть сайта и просмотреть детальную статистику в следующей форме:

Примечание: Нажав кнопку Отладка или выбрав пункт меню Суммарная статистика (Отладка > Суммарная статистика) на Панели управления в публичной части сайта

и перейдя по ссылке >> со страницы Монитор производительности: хиты (Настройки > Производительность > Хиты), можно просмотреть более детальную статистику:

Переход по ссылке с названием страницы (или по ссылке в графе Запросы) позволяет просмотреть все SQL запросы хита на странице SQL Запросы.

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


Компоненты
214 / 253

На странице Монитор производительности: компоненты (Настройки > Производительность > Компоненты) можно просмотреть отчет по используемым на страницах сайта компонентам или включаемым областям:

Монитор производительности: компоненты

Переход по ссылке в графе Запросы позволяет просмотреть все SQL Запросы компонента на странице SQL Запросы.

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


SQL запросы
215 / 253

На странице Монитор производительности: запросы (Настройки > Производительность > SQL запросы) можно просмотреть отчет по запросам SQL:

Примечание: Данная страница отображается, только если в настройках модуля Монитор производительности указана опция Вести журнал запросов.

Двойной клик по строке таблицы с запросом или пункт меню действий План исполнения позволит просмотреть план исполнения запроса в новом окне:

После проведения теста в панели производительности наведение указателя мыши на текст запроса вызовет стек запроса (если в настройках модуля включена опция Сохранять стек вызова для SQL запросов). В первой строке отображается исходная функция, вызвавшая запрос:


Кеширование
216 / 253

На странице Кеширование (Настройки > Производительность > Кеширование) можно просмотреть информацию о кеше и его файлах.

Примечание: Данная страница отображается, только если в настройках модуля Монитор производительности указана опция Вести журнал кеширования.

Кнопка Группировка позволяет выбрать режим отображения данных в таблице:

  • Без группировки - отображается вся информация о кеше, без каких-либо группировок;
  • Группировка по компонентам - информация о кеше сгруппирована по названию компонентов;
  • Группировка по типу - информация о кеше сгруппирована по типу кеша (управляемый / неуправляемый);
  • Группировка по каталогу - информация о кеше сгруппирована по каталогам, в которых хранятся файлы кеша;
  • Группировка по файлу - информация о кеше сгруппирована по файлам, в которых хранятся кеш.

Ссылки в таблице позволяют применять фильтр, согласно выбранному полю. Для полей таблицы в колонке Файл ссылка с названием позволяет перейти к просмотру содержимого этого файла.

Ссылки по теме:

  • Пользовательская документация


Таблицы в базе данных
217 / 253

На странице Таблицы в базе данных (Настройки > Производительность > Таблицы) можно просмотреть таблицы базы данных:

Таблицы в базе данных

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

Примечание: Система запоминает просмотренные таблицы и для удобства, в режиме просмотра данных таблицы, на контекстной панели будет доступно меню Последние таблицы (n), которое позволяет быстро переключаться между последними таблицами.
На странице Таблицы также будут отображены Последние просмотренные таблицы.

Для таблиц доступны следующие групповые действия:

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

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

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

Если в меню действий выбрать какую-либо таблицу, например b_search_content_text

Навигация по связям таблиц базы данных

то произойдет выборка строк по таблице b_search_content, где SEARCH_CONTENT_ID=41.

Навигация по связям таблиц базы данных

Для значений реализован вывод подсказок с информацией, полученной из связанной таблицы.

Начиная с 12 версии модуля добавлена возможность редактировать записи в таблицах, а так же сбрасывать управляемый кеш после сохранения записи.

Переход к редактированию осуществляется с помощью соответствующего пункта меню действий для необходимой записи.

Начиная с 15 версии модуля добавлена возможность редактировать сериализованные значения в альтернативном представлении.

Примечание: В системе должно быть установлено расширение Tokenizer.

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


Индексы
218 / 253

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

Страницы Анализ индексов и Список индексов - инструмент анализа и рекомендаций по созданию индексов.

Анализ индексов

Анализ индексов лучше производить после получения списка медленных запросов. Для этого в настройках модуля включите соответствующую опцию и установите время, после которого запрос будет считаться медленным. Рекомендуемое время работы монитора - сутки, но, опять же, надо учитывать реалии конкретного проекта.

После получения списка медленных запросов на странице Анализ индексов (Настройки > Производительность > Индексы > Анализ индексов) необходимо воспользоваться кнопкой Выполнить анализ собранных SQL запросов и отобразится список всех запросов, которые были совершены за это время, отсортированных по имени таблицы:

Примечание: с версии модуля 15.5.0 поддерживается работа с запросами от ORM.

В общем списке в первую очередь нужно обращать внимание на запросы с большей продолжительностью и на большое их количество. Но и в случае больших величин у этих параметров не на каждый запрос стоит создавать индекс (возможно нужно просто исправить код компонента). Косвенным критерием успешности создания индекса служит время выполнения запроса до и после создания индекса.

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

На этой странице жирным шрифтом выделяются таблица и колонки, к которым обращается запрос.

Структура таблицы - информационная закладка. Главное в ней - размер таблицы. И если размер большой (к примеру, больше 100 мегабайт), то построение и удаление индексов лучше проводить в часы наименьшей нагрузки на сайт.

Анализ запросов - закладка с собственно анализом запроса. При принятия решения о создании индекса учитывайте селективен ли этот запрос и процент селективности. Информация об этом выводится в таблице:

Создание индекса - закладка, на которой непосредственно принимается решение о создании (или нет) индекса. Те запросы, по которым не нужно создавать индекс можно внести в список Не предлагать создавать.

Запросы, по которым принято решение, пропадают из списка запросов и появляются на странице Список индексов.

Список индексов

Страница Список индексов (Настройки > Производительность > Индексы > Список индексов) отображает результаты ваших решений по анализу тех или иных запросов. "Зелёный" статус - индекс создан, "красный" статус - индекс не будет создаваться.


Настройки PHP
219 / 253

На странице Монитор производительности: настройки PHP (Настройки > Производительность > PHP) отображается сводная таблица Параметры окружения с анализом параметров PHP.

Монитор производительности: настройки PHP

С помощью ссылки Настройки PHP можно перейти на страницу с подробной информацией о PHP (phpinfo).


Сервер БД
220 / 253

На странице Монитор производительности: сервер БД (Настройки > Производительность > Сервер БД) отображается сводная статистика производительности сервера базы данных и рекомендации:

Монитор производительности: сервер БД

Значения, отличающиеся от рекомендуемых, выделяются цветом:


Ошибки PHP
221 / 253

На странице Монитор производительности: журнал ошибок PHP (Настройки > Производительность > Ошибки PHP (N)) можно просмотреть журнал регистрации ошибок PHP, где N - общее количество ошибок.

Монитор производительности: сервер БД

Примечание: Данная страница отображается, только если в настройках модуля Монитор производительности указана опция Вести журнал предупреждений PHP.

Примечание: Журнал ошибок PHP ошибок хранится в базе. Удалить журнал ошибок PHP можно с помощью опции Удалить собранные ранее данные (доступна только при отключенном мониторе) в настройках модуля Монитор производительности.


История замеров производительности
222 / 253

На странице История замеров производительности (Настройки > Производительность > История) можно просмотреть результаты прошлых замеров производительности.

В таблице отображается производительность системы с указанием даты замера.


Поиск "узких" мест сайта
223 / 253

Для оценки производительности необходимо перейти в раздел Монитор производительности (Настройки > Производительность > Панель производительности).

Нажатие кнопки Тестировать производительность позволит вам определить слабые места настройки хостинга. Важно понимать, что цифры в строке Конфигурация могут отличаться в разы при изменении нагрузки на сервер: если нагрузки нет, производительность может быть высокой, если есть – она сможет снизиться. Это связано с тем, что данные цифры показывают скорость открытия пустой страницы сайта и, естественно, зависят от общей загрузки сервера.

Однако далеко не всегда проблема кроется в хостинге - она может быть и в самом сайте. С помощью модуля это можно определить в чем именно проблема и поправить "узкие" места сайта. Для этого требуется запустить тест производительности в течение некоторого времени – для малопосещаемых проектов – час, для посещаемых можно выбрать меньшее время. Система будет фиксировать посещения и собирать статистику о времени выполнения каждой страницы, числе SQL запросов и других параметров.

В случае, если сайт малопосещаемый, рекомендуется самому открывать различные страницы сайта для сбора статистики модуля.

Показатель производительности - величина, обратная времени исполнения ядра продукта (среднему на 10 измерений).

Т.е. в данном примере (Производительность = 19,54) можно сказать, что публичная страница сайта с пустым шаблоном (например, версия для печати), с пустой рабочей областью будет создаваться за 1/19,54 или 0,0512 сек. Если говорить проще, то сервер сгенерирует 19 (пустых, но с подключением ядра) страниц в секунду.

Умножив 19 (страниц в секунду) на 60 получим, что сервер может генерировать около 1140 пустых, но с подключением ядра, страниц в минуту. Так, если посещаемость ресурса составляет всего 1000 человек в день, то производительности сервера будет более чем достаточно. Естественно, в реальных условиях производительность, конечно, будет ниже, в зависимости от "нагруженности" различных страниц сайта, нагрузки на сам сервер и других условий.

Показатель производительности не вычисляется на основе производительности файловой системы, работы базы, сессий и почты. Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть). Величина производительности всегда обратна величине среднего времени отклика.

Закладка «Конфигурация»

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

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

Основные ошибки конфигурации:

  • Не установлен акселератор php.
    Наличие акселератора php просто жизненно необходимо, в общем случае без дополнительных настроек страницы открываются в три раза быстрее, во столько же раз снижается нагрузка на процессор. Сегодня можно рекомендовать Zend Server CE - быстрее любого акселератора в два раза. К сожалению, на некоторых конфигурациях он работает нестабильно, тогда ставьте (в порядке приоритета) OPcache, APC, XCache.

    Внимание: eAccelerator не совместим с PHP v5.3+ и больше не поддерживается в продуктах «1C-Битрикс» с версии ядра 15.0.13. Подробнее см. в блоге разработчиков.

  • Включено ограничение open_basedir.
    На shared хостинге сложно отделить клиентов друг от друга, самый простой вариант, который обычно используют: включить open_basedir, тогда на все операции с файлами происходит дополнительная проверка пути. Что существенно снижает производительность. Решением будет использовать свой экземпляр apache для каждого пользователя или установка дополнительных модулей на сервер для ограничения доступа. В случае своего сервера или VPS ограничение open_basedir ставить не нужно! Доступ ограничивается системой для пользователя веб-сервера.
  • Не установлен или не настроен nginx.
    Хоть это напрямую не влияет на оценку производительности, но чрезвычайно важно для нагруженных проектов: вся статика (картинки, стили, ява скрипты) должна отдаваться nginx и не обрабатываться apache. Посмотрите логи доступа apache: там не должно быть ни одного запроса к статике!
  • Не настроена база данных.
    По возможности всегда используйте формат данных InnoDB, рекомендуемые настройки смотрите на странице монитора производительности Сервер БД. Очень полезно также протестировать базу скриптом mysqltuner.pl, который чрезвычайно прост в установке и полезен для оптимальной настройки СУБД MySQL.
  • Стоят не оригинальные драйвера оборудования.
    Особенно актуально для RAID контроллеров: при установке на Linux системах обычно предлагает к установке open source драйвера, которые не всегда достаточно эффективно работают с оборудованием. Всегда ставьте оригинальные драйвера с сайта разработчика.
  • PHP как CGI.
    PHP, запускаемый как CGI (не FastCGI) – плохая схема.
    На каждое обращение к php-скрипту запускается новый процесс интерпретатора PHP. Все это работает очень медленно, производительность сайта будет крайне низкой.

Как читать оценку подсистем

Монитор производительности не имеет прямого доступа к системным ресурсам, поэтому оценки, полученные средствами PHP, в большей степени отражают работу PHP, чем сервера.

  • Конфигурация - собственно, оценка производительности.
  • Среднее время отклика - цифра, обратная оценке производительности.
  • Процессор (CPU). Делается большое число простых математических вычислений. Задача не распараллеливается, поэтому идет оценка работы одного ядра процессора. Когда сайт работает на VPS, здесь часто можно увидеть, что "зажат" процессор.
  • Файловая система. Этот тест показывает не столько работу диска, сколько работу PHP с файлами: создается, исполняется, удаляется большое число простых файлов. Данный показатель зависит от производительности файловой системы и эффективности работы PHP акселератора. В целом хорошо показывает, как работает PHP на данной конфигурации (без учета работы базы).
  • Почтовая система. Отправляется тестовое письмо на hosting_test@bitrix.ru. Содержимое письма: "This is test message. Delete it." Никакая служебная информация не передается! Если настроена отправка почты на cron, этот показатель можно игнорировать.
  • Время старта сессии. Сессия стартует на каждый хит, поэтому это время будет прибавляться к работе каждой страницы. Проблемы обычно возникают, когда меняются настройки хранения сессий PHP так, что скапливаются сотни тысяч файлов сессий.
  • База данных (чтение/запись/удаление). Отправляется большое число простых запросов в базу. Это очень утрированный тест: он не показывает, как база будет работать со сложными запросами на больших объемах данных. Очевидно, что для базы данных на локальной машине цифры будут выше, чем для базы на отдельном сервере. Это нормально.

Закладка «Битрикс»

В этой закладке отображаются текущие настройки продукта, непосредственно влияющие на производительность, с соответствующими рекомендациями для оптимальной настройки.

Закладка «Разработка»

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

Например, ошибкой, которую предлагается исправить, является некэшированнное меню.

Примечание: Для просмотра информации об ошибках используйте ссылку в колонке Ошибки разработки.

Чтобы увидеть причину ошибки, нужно нажать на адрес страницы в колонке 20 самых нагружающих страниц.

Список адресов и статистики выполнения для страницы /catalog/furniture/index.php:

Обратите внимание – на странице /catalog/furniture/index.php находится комплексный компонент Каталог с включенным ЧПУ, поэтому реальные URL для этой страницы – разные. Приведенная таблица отсортирована по уменьшению времени выполнения страницы, и хорошо видно, что если в первый раз страница /catalog/furniture/office открывалась 2 секунды, то в последующие разы – около 0,5 с. При этом наиболее существенно сработало кэширование компонентов, и, как следствие - уменьшение времени на выполнение SQL-запросов.

Проверим, какие компоненты выполняются на этой странице. Для этого необходимо нажать на число в колонке Компоненты нужной страницы. Список компонентов и их характеристики для хита 17 по адресу /catalog/furniture/office.

Здесь мы видим список компонентов, подключаемых на странице, число SQL-запросов из них и тип кэширования. 17 компонент – как раз то некэшированное меню, о котором нам сообщал монитор производительности.

Аналогичным образом мы можем посмотреть список SQL-запросов на этой странице (для данного хита). Однако, как же определить, какое из меню (на странице их 3) не кэшируется, а также причину медленной работы?

Для этого вернитесь на страницу Монитор производительности: хиты и нажмите на ссылку >> перед адресом страницы. Вам откроется сводная статистика по странице. Здесь вы можете увидеть, на каком именно этапе построения страницы сайта затрачивается максимальное время:

Закрыв окно, нажмите на Панели управления кнопку Отладка (Отладка > Суммарная статистика), и вы увидите, что нижнее меню действительно не кэшируется. Кроме того, можно настроить его, выбрав нужный компонент из списка компонентов на странице. Как правило, компоненты расположены на странице в том же порядке, что и на странице диагностики:

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

Закладка «Масштабируемость»

Начиная с версии 10.0 доступен встроенный инструмент тестирования нагрузки многопоточных и веб-кластерных систем.

Примечание: Подробнее про инструмент тестирования можно посмотреть в курсе Администратор. Модули, урок Тест производительности.

Что важно знать:
  • Оценка зависит от редакции продукта.
    Раз мы замеряем время работы ядра, очевидно, оно будет зависеть от размера ядра. Для редакции «Бизнес» со всеми включенными модулями оценка всегда будет ниже, чем на «Старте» на том же оборудовании. Эталонная оценка в Мониторе производительности продукта делалась на редакции «Бизнес».
  • Результат зависит от пользовательских функций в /bitrix/php_interface/init.php.
    Указанный файл подключается на каждый хит, в том числе и при работе административной части. Файл /bitrix/php_interface/init.php не должен содержать запросы к БД и любые другие ресурсоемкие операции.
  • Оценка будет меняться в зависимости от нагрузки.
    Чем больше нагружен сервер, тем ниже будет оценка. Но даже при пиковой нагрузке она не должна опускаться ниже приемлемого уровня, чтобы можно было говорить, что сервер справляется (например, не ниже 10 единиц, т.е. 0,1 сек. на страницу).
  • Показатель производительности не показывает возможности масштабирования системы.
    Процесс веб-сервера работает на одном ядре, а значит, когда измеряется производительность без нагрузки, число ядер процессора не влияет на результат. Другое дело под нагрузкой: многоядерная система в состоянии сохранить высокие показатели.
  • Для базы данных на отдельном сервере оценка производительности будет ниже.
    Когда речь идет о кластере, мы имеем масштабируемую систему: при увеличении нагрузки она должна сохранять хорошие показатели. Но при моментальном замере времени открытия страниц без нагрузки мы неизбежно увидим небольшое замедление за счет межсерверных коммуникаций.


Пример нахождения мелких ошибок в производительности
224 / 253

Мелкие ошибки в производительности сайта.

Перед сдачей проекта можно легко протестировать сайт и найти ошибки в верстке, неправильно настроенного кэширования и другие мелкие недочеты. Для этого протестируйте готовый сайт путем двух-трех кратного скачивания всех страниц на жесткий диск. Для этой цели хорошо подходит бесплатная программа wget, работающая под управлением Linux/Unix систем и встроенная в виртуальную машину VMBitrix.

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

Для тестирования включите режим тестирования производительности, затем перейдите в виртуальную машину и выполните такие команды:

cd /tmp
mkdir test1
cd test1
rm -rf localhost
wget -m http://localhost
rm -rf localhost
wget -m http://localhost
rm -rf localhost
wget -m http://localhost

Для повтора теста повторите 2 последние команды. Если тестирование затянулось, прервать его можно, нажав CTRL+C.

Внимание! При большом числе обращений с одного адреса проактивная защита не позволит выполнить тестирование. Отключите контроль активности на странице Контроль активности (Настройки > Проактивная защита > Контроль активности).

Низкая скорость работы сайта и низкая оценка производительности

В первую очередь необходимо проверить наличие акселератора php. Это специальный модуль, который выполняет прекомпиляцию php скриптов, что позволяет уменьшить время работы скриптов в среднем в три раза.

Затем проверить, не включено ли расширение open_basedir.

Медленное открытие страниц

Наиболее просты в определении и легки для детектирования две проблемы:

  • все или значительная часть страниц сайта открывается не очень быстро;
  • некоторые разделы сайта почти не открываются или открываются очень медленно.

Причины могут быть разные, но, пожалуй, одни из самых частых:

Для первой проблемы. В коде страниц сайта имеются битые ссылки, которые переадресуются на индексную или на 404 страницу. Такие несуществующие адреса легко отлавливаются после получасового теста Монитора производительности.

Для второй проблемы: после сбоя некоторые таблицы базы данных оказались повреждены. В результате нагрузка на MySQL возросла в сотни раз. 5-ти минутный тест Монитора производительности показал, что причина – в нескольких поврежденных таблицах в разделе Каталог.


Конфигурирование веб-систем для оптимальной работы
225 / 253

Типовые настройки серверного программного обеспечения рассчитаны на минимальное оборудование и статические HTML-приложения. Внесение некоторых конфигурационных изменений в серверное ПО позволяет в несколько раз увеличить производительность системы в целом, сократить время генерации страниц, увеличить устойчивость системы к пиковым нагрузкам.

В этой главе приведены рекомендации по настройке серверного ПО, которые выполняются сотрудниками компании «Битрикс» при конфигурировании проектов с посещаемостью более 3-10 тысяч уникальных пользователей в день, либо при недостаточности системных ресурсов для обработки меньшей нагрузки.

Все рекомендации относятся в основном к UNIX-системам или Windows-системам, использующим веб-сервер Apache.

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

Внимание! Все рекомендации подразумевают, что выполнены все обязательные требования и, по возможности, рекомендуемые установки на странице Проверка сайта (Инструменты > Проверка сайта) в Административном разделе продукта.

Примечание: Помимо изучения данной главы рекомендуем обратиться к опыту разработчиков сайтов на платформе Bitrix Framework. В частности можно использовать методики описанные в группе Оптимизация веб-проектов.


Особенности веб-приложений
226 / 253

Веб-приложения отличаются от программ, работающих под управлением операционной системы, например, Windows.

Основное отличие – в задачах. Windows-приложение ожидает действий пользователя и работает постоянно, пока оно запущено. В случае веб-приложения посетитель сайта видит уже результат выполнения программы, которая, к этому времени, уже завершила свою работу и освободила ресурсы сервера для обслуживания других посетителей. При открытии другой (или этой же) страницы выполняется новый экземпляр программы, который, после выдачи данных пользователю, также завершается.

Таким образом, в операционной системе вам принадлежат все ресурсы компьютера, и почти неограниченное время, а в Веб вам принадлежит лишь совсем чуть-чуть памяти (обычно 32-256 мб) и немного времени (обычно не более 30-90 секунд). Кроме того, спецификой любого более-менее посещаемого проекта является необходимость обслуживать различное число посетителей в разное время суток, и простым увеличением ресурсов сервера добиться необходимого качества очень сложно.

В связи с этим конфигурирование веб-систем для работы с проектами на платформе Bitrix Framework имеет свои особенности.


PHP-приложения
227 / 253

Раньше HTML-проекты представляли собой обычный статический документ, который содержал специальные теги разметки. С точки зрения администратора веб-сайта, данные документы считываются веб-сервером и передаются по TCP/IP протоколу. Не выполняется никаких дополнительных приложений, не потребляется дополнительная память, не используется база данных. Это очень просто и удобно, но этого уже недостаточно для современных проектов.

Наличие программной среды в системе управления сайтом позволяет создавать динамические интернет-проекты, оперативно и легко управлять информацией, анализировать эффективность проектов, менять содержимое вашего сайта в зависимости от тех или иных потоков посетителей и многое другое. Можно сказать, что все современные веб-проекты создаются с использованием того или иного языка программирования.

Программный продукт "1C-Битрикс: Управление сайтом" разработан на языке программирования PHP. На данный момент поддерживается PHP версии 5.0.0 и выше.

PHP: (англ. PHP: Hypertext Preprocessor — «PHP: препроцессор гипертекста») — скриптовый язык программирования общего назначения с открытым исходным кодом, применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.

Обратите внимание на отличие PHP от скриптов, написанных на других языках, например, на Perl или C: вместо того, чтобы создавать программу, которая занимается формированием HTML-кода и содержит бесчисленное множество предназначенных для этого команд, создается HTML-код с несколькими внедренными командами PHP. Код PHP отделяется специальными начальным и конечным тегами, которые позволяют процессору PHP определять начало и конец участка HTML-кода, содержащего PHP-скрипт.

Значительным отличием PHP от какого-либо кода, выполняющегося на стороне клиента, например, JavaScript, является то, что PHP-скрипты выполняются на сервере. Если бы у вас на сервере был размещен PHP-скрипт, клиент получил бы только результат выполнения скрипта, причем он не смог бы выяснить, какой именно код выполняется. Вы даже можете сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.

С точки зрения администратора, принципиально важен тот факт, что PHP исполняется на сервере и является интерпретируемым языком. Интерпретируемый язык - это значит, что сколько бы раз вы не запрашивали страницу на языке программирования PHP, она будет каждый раз обрабатываться на сервере специальным интерпретатором PHP, будет проверяться синтаксис языка, правильность конструкций и вызовы функций, и только после этого, код PHP будет исполняться.

Таким образом, в отличие от обычных HTML-страниц, сайты на PHP потребляют больше оперативной памяти на один процесс веб-сервера. Веб-сервер может приступить к передаче страницы клиенту в большинстве случаев только после того, как страница готова и PHP выполнил свои инструкции. Это приводит к некоторому замедлению по сравнению с HTML-страницами в выдаче содержимого клиенту.

Внимание! Задача администратора сервера – настроить программное обеспечение для минимизации нагрузки на сервер, организации стабильной работы сервера и ускорения работы сайтов.


Базы данных
228 / 253

Дополнительным фактором, влияющим на производительность системы, является правильное использование баз данных. Все современные проекты для отображения динамической информации (новостей, каталога товаров и др.) используют СУБД (системы управления базами данных), а СУБД, в свою очередь, требует правильной настройки своих параметров.

Соединение с базой данных

База данных представляет собой независимое клиент-серверное приложение, которое запускается и работает в операционной системе. Внешние приложения соединяются с базой данных через TCP/IP или внутренние потоки, направляют SQL-запросы и получают в ответ от базы данных необходимые данные.

Возможно два типа соединения с базой данных для веб-приложения:

  • обычное соединение;
  • постоянное соединение (Persistent).

Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.

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

Учитывая, что открытие соединения к базе данных - процесс относительно дорогой по ресурсам и времени (происходит установление TCP/IP соединения, выделяются буферы памяти, проводится проверка и авторизация, настраиваются перекодировщики и выполняется целый ряд других функций), использование постоянных соединений является предпочтительным, если это не приводит к превышению числа одновременных соединений с базой данных. Целесообразность применения постоянных соединений прямо пропорциональна частоте обращений к базе данных, то есть посещаемости сайта.

Например, если на сайте за 15 минут в среднем бывает по 100 посетителей, применение define("DBPersistent", true); целесообразно, если по 5, то, конечно же, нет.

Примечание: Устанавливая соединение с базой данных, при указании параметру server значения localhost или localhost:port, PHP в большинстве своем будет пытаться соединиться с локальным сокетом без использования TCP/IP. Если вы все же хотите использовать TCP/IP, используйте адрес 127.0.0.1 вместо localhost.

Соединение без использования TCP/IP дает наивысшие результаты по производительности, особенно при передаче больших объемов информации из базы данных. Но если база данных расположена на другой машине и избежать соединения по TCP/IP не удается, использование постоянного соединения становится еще более выгодным.

В большинстве случаев база данных работает на той же машине, что и PHP-приложение и веб-сервер. Но вполне возможна ситуация, когда база данных установлена на соседней машине или даже у другого провайдера. "1С-Битрикс: Управление сайтом" устанавливает соединение с сервером базы данных через стандартные библиотеки, которые идут в поставке языка программирования PHP.

В "1С-Битрикс: Управление сайтом" тип соединения с базой данных устанавливается в файле: /bitrix/php_interface/dbconn.php в старом ядре и в файле /bitrix/.settings.php в ядре D7.

Пример содержимого файла:

define("DBPersistent", true);
$DBType = "mysql";
$DBHost = "localhost:31006";
$DBLogin = "root";
$DBPassword = "";
$DBName = "bsm_demo";
$DBDebug = false;
$DBDebugToFile = false;

Используйте константу DBPersistent, чтобы установить тип соединения с базой данных.

Для отключения постоянного соединения используйте:
define("DBPersistent", false);

Использование постоянных соединений может потребовать некоторой настройки Apache и MySQL. Убедитесь, что вы не превысите максимальное число дозволенных соединений. Читайте дополнительную информацию в документации PHP относительно используемой вами базы данных.

Используемые базы данных

"1С-Битрикс: Управление сайтом" поддерживает следующие типы баз данных:

  • Бесплатные
    • MySQL
    • MSSQL Express 2008 и выше
    • OracleXE
  • Коммерческие
    • Oracle
    • MSSQL 2008 и выше

Работа с базами данных в Bitrix Framework


Какие проекты можно назвать большими?
229 / 253

Комплексное сочетание целого ряда факторов может привести к тому, что проект получает название «большой» и требует определенного конфигурирования и отношения:

  • большая посещаемость проекта в среднесуточном выражении;
  • высокие пиковые нагрузки;
  • невозможность кэшировать страницы в силу сложной бизнес-логики;
  • большие интерактивные проекты: форумы, блоги, журналы;
  • индивидуальные страницы для отдельных пользователей;
  • большие объемы данных;
  • недостаточность аппаратных ресурсов по отношению к предыдущим факторам.

Примечание: даже если у вас сравнительно небольшой проект, лучше настроить веб-сервер правильно, чтобы в случае неожиданного роста посещаемости, например, при рекламной кампании, сайт стабильно работал.


Почему умирают сайты?
230 / 253

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

Как работает веб-сервер

Рассмотрим типичную схему работы веб-сервера:

При запросе страницы сайта происходит обращение к веб-серверу, который запускает интерпретатор PHP для выполнения скрипта. Далее программа выполняется, взаимодействует с СУБД и отдает результат выполнения клиенту. Кроме того, веб-сервер отдает клиенту сопутствующие файлы – картинки, документы, css файлы и другую статическую информацию.

В современных сайтах при открытии каждой страницы клиенту отдается несколько десятков файлов – от действительно результата выполнения PHP программы до статических картинок.

Важно отметить, что для отдачи каждого файла используется, как правило, отдельный процесс Apache, который занимает память веб-сервера. В 2012 году средний размер процесса Apache в памяти – от 64 до 500 мб, и очень легко занять всю оперативную память процессами веб-сервера.

Узкие места

Выделим несколько узких мест в приведенной схеме:

  1. Передача данных клиенту. Решение проблем медленных каналов
  2. Производительность PHP. Уменьшение времени выполнения скрипта.
  3. Обмен с базой данных.
  4. Настройка СУБД на максимальную производительность
  5. Отдача статики. Решение проблемы медленных каналов.


Передача данных клиенту
231 / 253

Работа веб-сервера Apache организована таким образом, что процесс веб-сервера занимает память системы, пока полностью не завершит отдачу файла. Таким образом, в случае если у клиента медленный канал связи, то даже при быстром выполнении PHP скрипта сервер будет не справляться даже с маленькой нагрузкой.

Дополнительно, при отдаче статических файлов с помощью Apache ценная память веб-сервера используется расточительно – под выдачу статики, для обработки которой не требуется выполнять программы на PHP.

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

Очень часто администраторы не отдают себе отчет в том, насколько данный фактор влияет на стабильность системы и эффективное использование оперативной памяти.

Давайте сделаем простой расчет. Рассмотрим две системы: А и Б.

В системе А время генерации страниц составит 0.1 секунды, а время передачи страницы клиенту в среднем будет составлять всего 5 секунд (в реальной жизни среднее значение окажется еще больше). В системе Б мы будем считать время генерации страниц равным 0.1, а время передачи страницы пользователю равным нулю. Предположим, что на каждый сайт поступает по 100 запросов в секунду.

Система А

Обработка 100 запросов в секунду потребует одновременной работы 500 самостоятельных процессов веб-сервера. "Почему?" - спросите вы. А как же иначе, если даже обработав запрос за 0.1 с., наши процессы, получается, еще не способны обрабатывать другие запросы, а будут висеть в памяти и просто дожидаться, пока пользователи в течение 5 секунд будут получать страницу. На четвертой секунде веб-сервер получит еще 100 запросов и должен будет запустить еще 100 процессов. Соответственно, на пятой секунде в памяти должно находиться 500 процессов и только с этого момента процессы первой секунды начнут высвобождаться и обрабатывать новые запросы.

Таким образом, система А для нормальной работы будет запускать порядка 500 процессов, что потребует от нас в лучшем случае 32 Гб оперативной памяти. Обратите внимание, что даже если бы время генерации страниц было равно 0.001 секунды, это бы не увеличило производительность системы, так как процессы ожидают передачи данных пользователям на медленных каналах, а не времени генерации страниц. Т.е. производительность системы А никак не связана с производительностью PHP и продукта.

Система Б

За первую секунду на сервер поступит 100 запросов. Для обработки 100 запросов нам потребуется всего 10 процессов. Один процесс обрабатывает один запрос за 0.1 секунды. Как мы договорились для системы Б, время передачи страницы пользователю будет равно нулю. Т.е. за 1 секунду, один процесс веб-сервера способен обработать 10 запросов пользователей! К завершению первой секунды, все запросы будут обработаны всего 10 процессами и ко второй секунде все эти процессы будут свободны и готовы обрабатывать следующие запросы. Так же случится и на третьей секунде, и через час.

Таким образом, система Б для нормальной работы будет запускать всего 10 процессов, что потребует от нас порядка 640М оперативной памяти. И очень важно отметить, что уменьшение времени генерации страниц до 0.01 секунды позволит реально увеличить производительность системы в 10 раз, и нам будет достаточно уже только 1 процесса для обработки всех 100 запросов в секунду. Производительность системы Б зависит только от производительности PHP и продукта и не зависит от медленных каналов.

Это очень наглядный пример, который демонстрирует, насколько велико влияние медленных каналов пользователей на общую производительность веб-системы. Веб-сервер очень неэффективно расходует оперативную память на медленных каналах.

Немного забегая вперед отметим, что существуют методы, которые позволяют построить систему очень близкую к модели Б и полностью снять зависимость веб-системы от медленных каналов и увеличить производительность и устойчивость в несколько раз.


Производительность PHP, базы данных и статика
232 / 253

Рассмотрим остальные "узкие места".

Производительность PHP. Уменьшение времени выполнения скрипта.

До 60% рабочего времени веб-сервера тратят на повторную компиляцию PHP-кода перед исполнением. Ключевой способ снизить нагрузку на процессор – использовать прекомпиляторы PHP-кода, которые снижают нагрузку на систему за счет перевода PHP из интерпретируемого в частично компилируемый язык.

Обмен с базой данных

Если ваш проект работает на выделенном сервере, вы можете настроить взаимодействие с СУБД для уменьшения затрат времени на установку соединений. Для этого используется постоянные соединения с базой данных, что позволяет уменьшить общее время выполнения скрипта.

Настройка СУБД на максимальную производительность

Установки по умолчанию для большинства СУБД рассчитаны на некие средние величины. Для повышения производительности необходимо оптимизировать эти настройки.

Отдача статики. Решение проблемы медленных каналов.

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


Причины "умирания" сайтов
233 / 253

Таким образом, при больших нагрузках проект может прекратить нормальное функционирование по следующим причинам:

  • Нехватка оперативной памяти для нормальной одновременной работы процессов веб-сервера и базы данных. В большинстве систем на каждый запрос к сайту открывается отдельный процесс веб-сервера. Обычный размер процесса Apache с подключенным PHP-модулем и работающим приложением может составить порядка 64-500 мегабайт. В результате пиковых нагрузок происходит одновременный запуск очень большого числа процессов (иногда больше нескольких сотен процессов). И как следствие, начинается свопирование процессов, а это неизбежно сказывается на производительности базы данных, и производительность всей системы в целом резко снижается.

  • Нехватка процессорных ресурсов для одновременного выполнения процессов и обеспечения адекватного для пользователя времени реакции. Данная ситуация может возникнуть в том случае, если в результате большого числа запросов к вашему серверу число одновременно выполняемых запросов превысит процессорные мощности сервера. И даже если у вас достаточно оперативной памяти и первая проблема не проявила себя, вы можете обнаружить, что система перестала адекватно отвечать на запросы, время выполнения страниц увеличилось в несколько раз, база данных перегружена очень большим числом запросов. Все это может привести к тому, что все без исключения пользователи не смогут работать с сервером.

  • Недостаточная производительность базы данных при одновременных конкурентных запросах, невозможность полностью использовать ресурсы сервера. Данная ситуация очень часто возникает при работе с MySQL. Надо отметить, что обычно MySQL использует формат таблиц MyISAM. Это очень простой и эффективный вариант работы, но, к сожалению, при большом числе одновременных запросов такая база данных становится критически узким местом в производительности системы в целом. Во время вставки данных, обновления и некоторых других запросах, происходит эксклюзивное блокирование таблиц и, как следствие, все запросы выполняются только последовательно, а не одновременно. В результате, при росте нагрузки, время генерации страниц возрастает необоснованно резко и в итоге становится неприемлемо большим. Менее всего подвержены подобным проблемам проекты, использующие Oracle или MSSQL, MySQL с форматом таблиц InnoDB.

  • Общая несбалансированность веб-системы при пиковых нагрузках и быстрая регрессия производительности даже при незначительных стрессах. При пиковых нагрузках вся система испытывает перегрузки. В дополнение к перечисленным проблемам возможно возникновение проблем в дисковой подсистеме. В итоге, если под одной из составляющих начинается потеря производительности, то существенно падает производительность всей системы, начинается падение производительности в других частях и, в итоге, еще больше снижается работоспособность, производительность системы регрессирует и иногда наступает полная остановка в работе.


Двухуровневая конфигурация веб-сервера Front-End и Back-End
234 / 253

Наилучшим способом для устранения перечисленных проблем является создание двухуровневой системы Front-End + Back-End для обработки запросов.

Front-End – публичная часть проекта, обеспечивающая прием запросов от пользователей, трансляцию запросов к Back-End и выдачу непосредственного содержимого пользователю.

Back-End – исполнительная часть системы, которая обеспечивает выполнение PHP-скриптов, формирование контентных страниц и работу бизнес-логики приложений.

Рассмотрим пример конфигурации более детально. После применения оптимизации у нас должна получиться система примерно следующего вида:

Примечание: Имеющаяся в Bitrix Framework технология работы с CDN не может являться заменой двухуровневой системе. CDN - дополняющая технология, ускоряющая загрузку контента браузером путем распределения по доменам и географически близким узлам.

К тому же она имеет ограничения:

  • У серверов CDN бывают временные проблемы и функционал приходится временно отключать.
  • Трафик CDN ограничен и есть шанс его исчерпания и следовательно автоматического отключения CDN.
  • Не все статические файлы отдаются в CDN.


Front-end
235 / 253

Начнем с построения Front-end системы и определения целей и задач, которые будет решать данная часть двухуровневой архитектуры.

В качестве Front-End сервера можно использовать NGINX, SQUID, OOPS или любой аналогичный продукт.

NGINX представляет собой очень компактный и быстрый веб-сервер (HTTP-сервер). Он потребляет очень мало оперативной памяти, умеет самостоятельно обслуживать статические запросы и выполнять акселерированное проксирование без кэширования статических объектов. Например, если запрашивается графический объект, NGINX самостоятельно выполняет считывание данных с диска и передает файл пользователю.

SQUID и OOPS - это классические прокси-сервера, которые выполняют проксирование запросов и чаще всего кэшируют статические запросы, сохраняя в кеше или у себя на диске копии статических запрашиваемых объектов в течение определенного интервала времени.

Наилучшие практические результаты получены при использовании NGINX. Но использование кэширующих прокси-серверов также возможно с получением отличных результатов.

Создавая двухуровневую архитектуру мы выставляем перед пользователем Front-endсистему - легкий веб-сервер или прокси-сервер, который принимает все запросы от пользователей, исполняет все запросы, которые возможно обработать самостоятельно без обращения к Back-End. Если используется NGINX или аналогичный продукт, все статические объекты напрямую считываются с диска и передаются клиенту. Если используется кэширующий прокси-сервер, статические объекты, графические файлы и таблицы стилей запрашиваются с Back-end только при первом обращении к ним. После этого файлы хранятся в кэш Front-end в соответствии с политикой кэширования и отдаются пользователям без обращения к Back-end.

Основные цели, которых мы добиваемся созданием первого Front-end уровня:

  • минимизация числа запросов, поступающих к Back-end веб-серверу. Надо добиться ситуации, когда Front-end будет обращаться к Back-end процессам только для получения содержимого PHP-страницы. Все запросы к статическим объектам должны обрабатываться легкими процессами Front-end самостоятельно или при использовании кэширующего прокси-сервера на всех запросах, кроме первого.

    Совет: проверьте лог Back-end веб-сервера, чтобы убедиться, что вы настроили все правильно и действительно исключили лишние запросы. В логе должны быть представлены только страницы PHP, другие запросы не должны проходить к Back-end системе и не будут отражаться в лог файле.

  • минимальное потребление оперативной памяти при обработке статических запросов. Число статических запросов существенно превосходит число запросов к PHP-страницам. Процессы Front-end потребляют в среднем 2-5М оперативной памяти и очень незначительно увеличиваются при обработке статических документов. Это позволяет в разы уменьшить потребление оперативной памяти всей системой в целом.
  • защита системы от фактора медленных каналов. Как для статических запросов, так и для HTML-страниц, полученных от PHP-процессов Back-end веб-сервера, процессы Front-end могут передавать страницу пользователю достаточно долго, потребляя при этом очень мало оперативной памяти. Таким образом, Front-end, транслируя запрос к Back-end, получает ответ, высвобождает процессы Back-end для обработки других запросов, а сам передает страницу пользователю, снимая фактор медленных каналов. Система приближается к идеальной системе Б в примере, приведенном в уроке Передача данных клиенту.

    Внимание! Убедитесь, что буферы Front-end достаточны, чтобы без ожидания на передаче принять от Back-end всю страницу. То есть фактически буфер в идеале должен быть равен размеру самой большой страницы у вас на сайте.

  • механизм защиты Back-end от большого числа запросов за счет ожидания свободных процессов Back-end для продолжения работы. Проверьте и убедитесь, что Front-end будет ожидать 5-10-15 минут, пока не высвободятся процессы Back-end. Наличие такого механизма позволит нам настроить Back-end так, чтобы полностью стабилизировать систему и подготовиться к стрессовым нагрузкам.

Как вы видите, появление Front-end позволяет нам снять целую категорию рисков и подготовить систему к дальнейшей работе

Внимание! Если вы используете кэширующий прокси-сервер в качестве Front-End, обязательно настраивайте время кэширование документов. Графические файлы и таблицы стилей, XML-файлы и другие статические объекты с веб-сервера должны запрашиваются только в соответствии с политикой кэширования. После этого файлы хранятся в прокси-сервере и отдаются пользователям без обращения к Back-End и Apache. Рекомендуется настраивать время кэширования для графических файлов на 3-5 дней. Пример настройки кэширования через файл .htaccess в корне веб-сервера:
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"

Для работы этого примера необходимо, чтобы веб-сервер позволял переопределение переменных через файл .htaccess и модуль mod_expires был установлен. В некоторых случаях на Front-end политика кеширования настраивается независимо от настроек Back-end.

Таким образом, Front-end будет кешировать все графические изображения. Запросы к контентным страницам не будут кешироваться и будут перенаправляться к Back-end.


Back-end и порядок взаимодействия
236 / 253

Back-end представляет собой обычный веб-сервер Apache, который исполняет PHP-приложения.

Back-end готов исполнять запросы на графические и статические документы, если вы используете кэширующий прокси-сервер для Front-end. Но очень важно, чтобы число запросов к статическим элементам через Back-end было минимальным и 99% запросов приходилось на выполнение именно PHP-страниц. Не забывайте, что использование Back-end для обработки статических запросов обходится очень дорого.

Конфигурируя Back-end, можно добиться значительного выигрыша в производительности и стабилизировать систему по расходу памяти. В большинстве случаев Back-end представляет собой обычный веб-сервер Apache, работающий на нестандартном порту, к примеру, на порту 88 и отвечающий только на запросы с localhost или IP адреса Front-end.

Совет администратору: Лучше использовать несколько внутренних IP адресов типа 127.0.0.2, 127.0.0.3 и т.д. с 80-м портом, иначе возможны нежелательные редиректы на неработающий порт у Front-end.

Процесс взаимодействия

Рассмотрим процесс взаимодействия Front-End и Back-End при обработке запроса пользователя к обычной странице сайта.

  • Запрос от пользователей принимается Front-end, например, по адресу http://www.1c-bitrix.ru/ на 80 порту. На нашем сайте мы используем NGINX в качестве Front-end.
  • Запрос принимается и транслируется к Back-end (веб-сервер Apache с PHP), который обрабатывает запросы по адресу http://127.0.0.2:80/.
  • Запрос исполняется Back-end веб-сервером, отрабатывает программный продукт на PHP и генерируется HTML-текст страницы для пользователя.
  • Подготовленная HTML-страница от Back-end передается Front-end как ответ на запрос пользователя, соединение между Front-end и Back-end закрывается (желательно не использовать KeepAlive на Back-end), и процесс Back-end высвобождает оперативную память или начинает обработку другого запроса.
  • Front-end передает готовую сформированную страницу посетителю столько времени, сколько требуется пользователю, даже если он работает на медленном канале. Потребление памяти Front-end для передачи страницы пользователю минимально.
  • Получив страницу, браузер посетителя посылает последовательно серию запросов на графические элементы и таблицу стилей. Все запросы принимаются Front-end и обрабатываются без обращений к Back-end, т.е. все статически документы самостоятельно вычитываются с диска без использования медленных и дорогих процессов Back-end.

Пример уменьшения объема памяти

Пример уменьшения объема занимаемой оперативной памяти и числа процессов при подключении Front-end сервера (без настройки на отдачу статических файлов).

В этом примере был подключен NGINX, который все запросы, в том числе и запросы к статике, передавал back-end (Apache). Никаких дополнительных настроек на Back-end не выполнялось. Время подключения nginx – 12:50.

Используемая веб-сервером память:

Число одновременно выполняемых процессов Apache:

Как показала практика, двухуровневая конфигурация Front-end + Back-end существенно разгружает машину, уменьшает объемы потребляемой памяти, значительно ускоряет время обработки запросов и позволяет больше памяти выделить для работы базы данных. Такая конфигурация также позволяет значительно разгрузить сервер при обработке большого числа статических файлов, например, музыки, дистрибутивов программных продуктов, презентаций и других схожих объектов. Например, простым подключением NGINX удалось снизить нагрузку на веб-сервер в 5 раз.


Стабилизируем Back-end по расходу оперативной памяти
237 / 253

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

Для стабилизации системы по расходу памяти и минимизации числа запущенных процессов Back-end мы рекомендуем в настройках сервера Apache установить параметр MaxClients в значении от 5 до 50, в зависимости от объема оперативной памяти. Значение этого параметра не должно превышать 80% от объема доступной памяти сервера за вычетом памяти, выделенной под СУБД. Устанавливая MaxClients, вы ограничиваете возможное число одновременно запущенных процессов Back-end. Тем самым, удается поставить жесткий лимит по потреблению памяти и исключить выход машины из строя при стрессовых нагрузках.

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

Зависание сервера при слишком большом значении MaxClients:

На приведенном скриншоте произошло следующее:

Запущена команда top в Linux, показывающая объем занятой и свободной памяти, число выполняющихся процессов и объем памяти, занимаемый ими. В данном примере достаточно посещаемый веб-сайт работал на мощном сервере с двумя 4-х ядерными процессорами и 5 Гб оперативной памяти. Размер swap-файла – 4 Гб.

MaxClients был установлен в 100. Каждый процесс Apache занимал около 250 Мб, что привело к полному исчерпанию и оперативной памяти, и файла подкачки на 40 процессах Apache. В связи с отсутствием доступной памяти процессоры сервера не смогли справиться с нагрузкой и сервер зависал.

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

Методика подбора параметра

Методика подбора может быть следующей. Посчитайте, сколько памяти у вас занимает один Back-end процесс. Например, 50 Мб. Если мы установим MaxClients равным 4, значит максимальное потребление памяти может составить 200 Мб. Для машины с 512 Мб оперативной памяти MaxClients желательно выбрать между 5-10. Для правильной конфигурации Front-end, когда вся статика обрабатывается без участия Back-end, это позволит вполне комфортно обрабатывать порядка 50 тысяч хитов в сутки или примерно 10-20 тысяч уникальных пользователей.

Для крупных проектов с конфигурациями из двух машин или при наличии больших объемов памяти рекомендуется производить выбор значения MaxClients в процессе нагрузочного тестирования.

Важно! Подбирайте MaxClients так, чтобы система при стрессовых нагрузках потребляла не более 90% процессорных ресурсов и никогда не доходила до 100%. Это позволит вам стабилизировать использование процессорных ресурсов и быть уверенным, что не начнется общая регрессия по производительности во время пиковых нагрузок.

Обратите внимание, что очень важно настраивать время ожидания для Front-end таким образом, чтобы при отсутствии свободных процессов в Back-end, Front-end ожидал освобождения ресурсов. Тем самым организуется очередь запросов, и Back-end защищается от перегрузки.

Так же рекомендуется подбирать параметры управления процессами Back-end в соответствии с установленным лимитом MaxClients. Например, если MaxClients = 5, тогда рекомендуется установить:

MinSpareServers 5
StartServers 5
MaxClients 5

Т.е. это означает, что при старте сервера сразу будет запущено столько процессов Back-end, сколько максимально возможно соединений. Процессы никогда не будут выгружаться из памяти и будут готовы в любой момент принять и обработать запрос от Front-end. При запуске системы мы с вами сразу увидим объем используемой Back-end оперативной памяти, что позволит остальную память распределить для базы данных.

Совет! Рекомендуется для начала выбирать минимальное значение MaxClients, например, 5. В процессе работы проекта проверять время исполнения страницы. Если на быстром канале наблюдается ситуация, когда время выполнения страницы (параметр ?show_page_exec_time=Y) в пиковые моменты показывает стабильно минимальное значение, а визуально мы наблюдаем существенную задержку перед открытием страницы, то это может свидетельствовать о нехватке процессов Back-end. Иными словами о том, что запросы принимаются Front-end и долго удерживаются в ожидании высвобождения Back-end процессов.

В этом случае можно рекомендовать увеличить MaxClients, но обязательно с учетом общего баланса системы по расходу памяти.

MaxClients и базы данных

Еще одно преимущество использования MaxClients связано с базами данных.

Наличие лимита позволяет включить постоянное соединение к базе данных (только если у вас свой сервер с 1-2-я проектами) и уменьшить время соединения с базой данных и число работающих процессов базы данных. Если величина параметра MaxClients меньше или равна максимальному числу соединений с базой данных, то это гарантирует, что никогда не будет запущено больше этого числа процессов Back-end. Следовательно к базе данных не будет открыто больше соединений. Фактически, всегда в памяти будут находиться MaxClients загруженных процессов Back-end с открытыми соединениями к базе данных, готовые к обработке запросов.

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

Еще раз подчеркнем, что соблюдение этих рекомендаций позволяет:

  • Стабилизировать конфигурацию по расходу памяти при любых нагрузках;
  • Защитить сервер от процессорных перегрузок и общей регрессии производительности;
  • Безопасно использовать постоянное соединение к базе данных.


Производительность PHP
238 / 253
Важно! До 60% рабочего времени веб-сервера тратят на повторную компиляцию PHP-кода перед исполнением.

Ключевой способ снизить нагрузку на процессор – использовать прекомпиляторы PHP-кода.

PHP прекомпиляторы:

  • OPcache
  • Zend Performance Suite
  • Alternative PHP Cache (APC)
  • eAccelerator

    Внимание: eAccelerator не совместим с PHP версий выше 5.3 и больше не поддерживается в продуктах «1C-Битрикс» с версии ядра 15.0.13. Подробнее см. в блоге разработчиков.

  • XCache
  • PHP Accelerator
  • AfterBurner Cache

Лучшие результаты производительности и кэширования PHP достигаются с использованием OPcache (рекомендуется, доступен сразу «из коробки» в PHP v.5.5+), XCache или APC (Alternative PHP Cache), как более стабильная, но менее производительная альтернатива. Не забывайте выделять достаточный объем оперативной памяти для хранения разделяемого кэша скомпилированных PHP-файлов. Обычно бывает достаточно 32-64 Мб, но для уверенности можно увеличить объем выделяемой памяти до 128 Мб, в расчете на файлы административного раздела. Прекомпиляторы используют разделяемый кэш для хранения скомпилированного PHP кода в оперативной памяти, который доступен всем рабочим процессами веб-сервера, при этом скомпилированный PHP код хранится в кэше в единственном экземпляре (без дублирования).

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

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

Для ускорения работы с PHP-сессиями рекомендуется сохранять файлы сессий в каталоге, который представляет собой виртуальный диск в памяти или использовать установку session.save_handler=mm в php.ini. Если есть возможность, рекомендуется использовать системный RAM диск. При этом необходимо отключать опцию Передавать пароль в зашифрованном виде на закладке Авторизация страницы настроек Главного модуля.

Панель производительности

Важным инструментом по настройке производительности PHP является модуль Монитор производительности, входящий в комплект всех продуктов "1С-Битрикс". Протестировать настройки системы можно в административной части на странице Панель производительности (Настройки > Производительность > Панель производительности). Неоптимальная конфигурация PHP:

Как правило, выполнение рекомендаций позволяет увеличить производительность системы до достаточных величин. Численное значение параметра Конфигурация показывает основную характеристику сайта – скорость отдачи страниц клиенту. Чем больше число, тем лучше.

Некоторые типовые ошибки

Ошибка Segmentation fault может произойти:

  • В результате "падения" РНР при использовании отложенной загрузки классов;
  • При использовании Zend server могут "упасть" скрипты в cron или консоли.

В первом случае необходимо определить в dbconn.php:

define("NO_BITRIX_AUTOLOAD",true)

Во втором случае надо:

  • либо использовать другую версию PHP без подключения Zend optimizer+ ;
  • либо скопировать хостерский php.ini куда-то выше document root, удалить подключение Zend extension manager или zend optimizer и прописать в кроне опцию -c, которая позволяет указать папку, в которой необходимо искать файл php.ini.
  • либо в "падающем" скрипте определить:
    define('BX_NO_ACCELERATOR_RESET', true)


Сжатие страниц
239 / 253

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

Сжатие в несколько раз уменьшает объем передаваемых HTML-данных между сайтом и браузером клиента, что существенно увеличивает скорость работы как для посетителей, так и для администраторов сайта.

Предпочтительнее сжимать страницы на Front-End. При отсутствии такой возможности можно сжимать данные на Back-End.

Возможные способы сжатия:

  • mod_deflate;
  • модуль Компрессии, входящий в продукты "1С-Битрикс";
  • стандартные модули PHP;
  • стандартные модули Apache.

Для исключения излишнего расходования процессорных ресурсов рекомендуется применять сжатие только на одном уровне. Например, при использовании сжатия Front-end сервером рекомендуется не использовать сжатие на уровне Apache и отключить модуль компрессии "1С-Битрикс: Управление сайтом".


Дополнительные рекомендации для двухуровневой конфигурации
240 / 253

По умолчанию, при работе в двухуровневой конфигурации, в качестве адреса клиента будет указываться адрес, на котором работает NGINX или другой акселератор. Для правильной работы модуля статистики необходимо обеспечить передачу реального IP адреса с Front-end в Back-end.

Например, для NGINX используется следующая технология: сервер NGINX устанавливает специальный заголовок в запросе, а специальный модуль Apache (rpaf или real_ip) учитывает этот заголовок вместо стандартного.

Если же такой модуль не установлен, то вы можете сами изменить адрес клиента. Например, если адрес клиента передается в переменной HTTP_X_FORWARDED_FOR (так делает прокси-сервер SQUID) или HTTP_X_REAL_IP, то для замены переменной в продукте необходимо в файле /bitrix/php_interface/dbconn.php вставить подобный пример кода:

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) || isset($_SERVER['HTTP_X_REAL_IP'])) {
    foreach(array('HTTP_X_FORWARDED_FOR', 'HTTP_X_REAL_IP') as $key => $value) {
        if(
            isset($_SERVER[$value])
            &&  strlen($_SERVER[$value]) > 0
            &&  strpos($_SERVER[$value], "127.") !== 0
        ) {
            if($p = strrpos($_SERVER[$value], ","))
            {
                $_SERVER["REMOTE_ADDR"] = $REMOTE_ADDR = trim(substr($_SERVER[$value], $p+1));
                $_SERVER["HTTP_X_FORWARDED_FOR"] = substr($_SERVER[$value], 0, $p);
            }
            else
                $_SERVER["REMOTE_ADDR"]= $REMOTE_ADDR = $_SERVER[$value];

            break;
        }
    }
}

Кроме того, в конфигурации Apache на Back-end желательно отключить KeepAlive. Поскольку Front-end находится или на этой машине, или "рядом", более быстрое высвобождение ресурсов предпочтительнее.


Достигнутые результаты
241 / 253

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

  • система стабилизирована по расходу памяти; Front-End и Back-End занимают заранее отведенный объем памяти, который не будет расти даже при увеличении нагрузки;
  • в стрессовой ситуации система будет стабильно и равномерно обрабатывать запросы, Back-end не будет увеличивать число одновременно выполняемых процессов выше установленного лимита MaxClients, Front-end будет принимать все запросы от пользователей и ожидать освобождения процессов Back-end;
  • использование процессорных ресурсов ограничено числом одновременно работающих процессов Back-end в соответствии с MaxClients, не начнется регрессия производительности;
  • возможно безопасное использование постоянного соединения с базой данных без опасения превысить число возможных соединений; в памяти все время находится установленное число Back-end процессов, готовых к обработке запросов и с установленным соединением с базой данных;
  • процессорные ресурсы существенно высвобождены за счет прекомпиляции PHP-кода;
  • пользователи комфортно работают со сжатыми страницами.


Пример настройки двухуровневой архитектуры
242 / 253

В качестве примера рассмотрим конфигурацию виртуальной машины VMBitrix. В состав конфигурации входят:

  • Веб-сервер Apache в качестве Back-end
  • NGINX в качестве Front-end
  • Zend Server CE в качестве настроенного модуля PHP (с прекомпилятором)
  • Дополнительные настройки СУБД MySQL и других параметров сервера.

Для рассмотрения и управления настройками перейдите в консоль виртуальной машины или подключитесь к ней через ssh или sftp.


Настройка веб-сервера Apache
243 / 253

Основным конфигурационным файлом веб-сервера является /etc/apache2/apache2.conf (в других системах файл может называться /etc/httpd/httpd.conf). Далее, подключается файл с настройкой портов прослушивания для веб-сервера и другие файлы. Иногда это все размещается в одном файле, иногда (как в виртуальной машине – в разных).

Рассмотрим основные параметры этих файлов.

/etc/apache2/apache2.conf

Timeout 300 #если 300 секунд не происходит никаких операций, завершить процесс
KeepAlive Off #все запросы у нас короткоживущие
User ${APACHE_RUN_USER} #пользователь, под которым работает веб-сервер
Group ${APACHE_RUN_GROUP} #группа, под которой работает веб-сервер

/etc/apache2/ports.conf

Listen *:8888 #веб-сервер работает на порту 8888

/etc/apache2/envvars Осуществляется установка переменных окружения – пользователя и группу.

export APACHE_RUN_USER=bitrix
export APACHE_RUN_GROUP=bitrix

/etc/apache2/conf.d/prefork Осуществляется настройка числа процессов сервера.

 #работает с этим расширением
StartServers 4 #4 одновременных сервера
MinSpareServers 4
MaxSpareServers 4
MaxClients 4 #4 одновременных клиента
MaxRequestsPerChild 200 #после 200 запросов перезапускать процесс

Таким образом, настройки веб-сервера достаточно простые. Фактически, в стандартной конфигурации достаточно изменить только порт, на котором работает веб-сервер и параметр MaxClients и связанные с ним.

Некоторые ключевые моменты настройки

Для конфигурации используются нестандартные порты. Например, 192.168.1.1:8888. В этом случае можно обращаться к Apache снаружи мимо фронтенда и проверить его работу. Это достоинство способа. И могут возникнуть лишние редиректы. Это ограничение способа, которое, впрочем, обходится.

Либо использовать внутренние адреса на стандартных портах. Например, 127.0.0.2:80. Нельзя будет обращаться снаружи мимо фронтенда, но зато нет проблем с редиректами.

Ограничение процессов (StartServers) зависит от параметров системы. Разумное число - 20-30 процессов, точнее надо вычислять. Если достаточно памяти, то посмотрите сколько памяти у вас может занять один процесс, поделите общее количество памяти на размер одного процесса, это даст примерное число процессов.

По логам проверяйте, что бы вся статика отдавалась Frontend'ом. В логах не должно быть обращений к статическим файлам: gif, jpg, css и подобным.


Пример: число процессов веб-сервера
244 / 253

Как определить максимальное число процессов веб-сервера? Естественно, только опытным путем. При этом начальное значение можно подобрать достаточно просто - нужно посмотреть, сколько занимает процесс apache во время типового обращения к сайту:

  • Зайдите в Linux и запустите команду free. Она покажет вам общий размер оперативной памяти и свободный размер:
    # free
             total       used       free     shared    buffers     cached
Mem:        255676     224340      31336          0      33468      67964
-/+ buffers/cache:     122908     132768
Swap:       530136      51800     478336

    В примере показано, что в системе ~256 Мб памяти, ~500 Мб swap (виртуальная память на диске). Системной памяти занято ~120 мб, вся неиспользуемая память отдана под файловый кэш

  • Наберите команду top
  • Откройте любую страницу сайта, параллельно смотря значение в программе top. Вверху появится процесс с названием apache2:
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
14687 bitrix    20   0  153m  45m  28m R  6.7 18.2   0:05.34 apache2

    В этом примере столбец RES как раз и показывает примерное количество памяти, выделяемое на один процесс. Таким образом, для типового сайта на "1С-Битрикс: Управление сайтом" - это около 50 Мб. Соответственно, параметр MaxClients выбран 4 исходя из соображения, что должна остаться память под операционную систему и работу СУБД.

Из этого примера видно, что для достаточно посещаемого сайта (не интернет-магазина) минимальные требования по памяти для веб-сервера (или VPS) – от 512 Мб. Для интернет-магазина с обменом с 1С минимальный объем памяти на сервере или VPS должен быть не менее 1 Гб.


Настройка Front-end NGINX
245 / 253

Каталог с конфигурацией NGINX - /etc/nginx. Рассмотрим его конфигурационный файл /etc/nginx/nginx.conf:

        user    bitrix;  #пользователь, под которым работает nginx. Желательно совпадение с пользователем apache
        worker_processes  8; #8 одновременных процессов
        error_log  /var/log/nginx/error.log warn;
        pid        /var/run/nginx.pid;
        worker_rlimit_nofile 10240;  #максимальное число открытых файлов

        events {
                use epoll;
                worker_connections  10240; #максимальное число соединений с одним процессом. Система может одновременно работать с max_clients = worker_processes * worker_connections, т.е. с 81920 соединений, в том числе статических файлов
        }

        http {
                include       /etc/nginx/mime.types;
                default_type  application/octet-stream;
#формат логов
                log_format  main  '$remote_addr - $remote_user [$time_local] $status'
                                '"$request" $body_bytes_sent "$http_referer" '
                                '"$http_user_agent" "$http_x_forwarded_for"';
                log_format      common  '$remote_addr - - [$time_local] "$request" $status $bytes_sent "$http_referer" "$http_user_agent" $msec';

                access_log  /var/log/nginx/access.log  common;
                sendfile        on;
                tcp_nopush     on;
                tcp_nodelay    on;
                client_max_body_size       10m; # максимально допустимый размер тела запроса клиента, указываемый в строке "Content-Length" в заголовке запроса
                client_body_buffer_size    128k;
                proxy_connect_timeout      300; #время на ожидание соединения
                proxy_send_timeout         300;
                proxy_read_timeout         300;
                proxy_buffer_size          64k;
                proxy_buffers              8 64k;
                proxy_busy_buffers_size    64k;
                proxy_temp_file_write_size 10m;
                gzip on; #сжимать передаваемые данные
                gzip_proxied any;
                gzip_types application/x-javascript text/css;

        server { #виртуальный хост
                listen 80; #порт 80
                server_name bitrix; #адрес узла. Если узел всего один – можно написать любой
                server_name_in_redirect off; #лучше поставить в ON – передавать запрошенное имя сайту
                access_log /var/log/nginx/access.log common;
                index index.php;
                error_page 500 502 503 504 /500.html;
                error_page 404 = /404.php;
#установить дополнительные заголовки для определения адреса клиента в статистике сайта
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host:80;
                client_max_body_size 1024M; #максимальный размер передаваемого файла
                client_body_buffer_size 4M;
                root /var/www; #корневая папка сайта

#включить https режим при нахождении в корне сайта файла .htsecure
                if (-f /home/bitrix/www/.htsecure) {
                        rewrite ^(.*)$ https://$host$1 permanent;
                }

#выбрать, какие данные пересылать backend серверу, а какие – показывать напрямую
#в данной конфигурации все пересылается backend серверу
#обилие вариантов потребовалось компании Битрикс для того, чтобы при добавлении в конфигурацию отдачу статических файлов напрямую через NGINX динамические запросы на псевдостатические файлы все-таки перенаправлялись на backend
                location / { expires 3d;
                                if ($request_method = OPTIONS ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = PROPFIND ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = PROPPATCH ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = MKCOL ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = COPY ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = MOVE ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = LOCK ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($request_method = UNLOCK ) {
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                        }

                location ~ ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user).*/$ {
                        proxy_pass         http://127.0.0.1:8888;
                        }

                location ~ ^(/extranet/docs|/docs|/workgroups|/company/profile|/bitrix/tools|/company/personal/user) {
                        if (-d $request_filename) {
                            rewrite  ^(.*)(/*)$  $1/  last;
                        }
                        proxy_pass         http://127.0.0.1:8888;
                        }

                location ~ ^(/bitrix/html_pages)
                        {
                        root /var/www;
                        index index@.html;
                        if (!-f $request_filename)
                                {
                                rewrite ^/bitrix/html_pages(.*)@(.*)\.html$ $1.php?$2 break;
                                rewrite ^/bitrix/html_pages(.*)\.html$ $1\.php break;
                                proxy_pass http://127.0.0.1:8888;
                                }
                        }

                location ~ \.php$ {
                                root        /var/www;
                                if ($request_method = POST ) {
                                        break;
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($http_cookie !~ "PHPSESSID=" ) {
                                        rewrite ^(.*)\.php$ /bitrix/html_pages$1@$args.html? last;
                                        }
                                proxy_pass http://127.0.0.1:8888;
                                }

                location ~ /$ {
                                root        /var/www;
                                if ($request_method = POST ) {
                                        break;
                                        proxy_pass http://127.0.0.1:8888;
                                        }
                                if ($http_cookie !~ "PHPSESSID=" ) {
                                        rewrite ^(.*)/$ /bitrix/html_pages$1/index@$args.html? last;
                                        }
                                proxy_pass http://127.0.0.1:8888;
                                }

                location ~ (/|\.php|\.asmx)$ {
                        proxy_pass         http://127.0.0.1:8888;
                        }
                location ~ /\.ht {
                        deny  all;
                        }
                location ~ /favicon.ico {
                        proxy_pass         http://127.0.0.1:8888;
                        }

                location ~ ^(/bitrixsetup\.php)$ {
                    proxy_pass         http://127.0.0.1:8888;
                    proxy_buffering off;
                }

        }
#аналогичная конфигурация для https (удалена)
}

В данной конфигурации настройка NGINX проведена так, что все обращения к серверу будут перенаправляться на Back-end сервер. Однако, можно избранные файлы отдавать через NGINX. В этом случае будет достигнуто дополнительное увеличение производительности.

Некоторые нюансы настройки

# cat /proc/cpuinfo | grep "processor" | wc -l
worker_processes 8;

Регулируем размер очереди, который мы можем обрабатывать worker_processes. Сами разработчики NGINX рекомендуют выбирать число в соответствии с числом процессоров в системе.

# max_clients = worker_processes * worker_connections
events {
        use epoll;
        worker_connections  10240;
}

worker_connections - сколько запросов одновременно может обрабатывать один процесс. NGINX легкий и надёжный. Он способен выдержать такое число. В результате общее число коннектов, которые будут обрабатываться - это значение worker_processes умноженное на значение worker_connections.

# больше - больше памяти, меньше - чаще пишем на диск
client_body_buffer_size 4m;

client_body_buffer_size отвечающий за то как часто будет производиться запись на диск (а не держать из в памяти) при загрузке пользователями каких-то данных на сервер. При достаточно большой памяти можно установить это значение побольше, чтобы реже писать на диск и слегка разгрузить систему.

# максимально быстро получаем ответ от бэкенда
proxy_buffering on;

Рекомендуется включать proxy_buffering позволяет облегчить работу с клиентами с медленными каналами. Такие клиенты будут медленно соединяться с NGINX, медленно от него получать данные. Но сам frontend данные с backend'а получает быстро и не загружает веб-сервер.

gzip            on;
gzip_proxied    any;
gzip_static     on;
gzip_types      application/x-javascript text/css;
gzip_min_length 1100;

Обязательно включайте сжатие статики, что также ускорит отдачу данных.

Дополнительную информацию по настройке NGINX вы можете получить на сайте www.nginx.ru и wiki.nginx.org.


Отдача графики напрямую NGINX
246 / 253

Для того, чтобы графические файлы отдавались напрямую NGINX, вам необходимо добавить в конфигурацию сервера строки, подобные этим:

location ~* \.(jpg|jpeg|gif)$ {
            root         /var/www;
            access_log   off;
            expires      3d;
        }

В приведенном примере все файлы с расширением jpg, jpeg или gif будут считываться напрямую NGINX, причем корневой папкой для хранения файлов будет /var/www.


Оптимизация базы данных
247 / 253

Оптимизация работы с базой данных для MySQL, Oracle, MSSQL является одной из важнейших стратегий в оптимизации системы в целом.

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

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


Основные принципы
248 / 253

Если кратко попробовать сформулировать стратегию оптимизации, то прозвучит это примерно так:

  • как можно меньше дисковых операций чтения данных; старайтесь увеличивать размер буфера кэширования, чтобы база данных как можно меньше читала данные с диска;
  • как можно меньше сортировок данных на диске; старайтесь увеличить буфер сортировки таким образом, чтобы избежать двойных сортировок и сортировок на диске.
  • увеличивайте параллельность исполнения запросов за счет запуска большого числа процессов базы данных, выбора форматов хранения данных, обеспечивающих параллельность работы;
  • отложенная фиксация транзакций на диске; очень желательно настроить базу данных так, чтобы при изменении данных или их вставке не производилась немедленная запись на диск, а изменения собирались и фиксировались с некоторым интервалом; это позволяет значительно быстрее возвращать управление продукту после выполнения SQL запросов.

    Примечание: Надо отметить, что при этом несколько снижается надежность. В случае сбоя системы те данные, которые еще не "сброшены" на диск, будут потеряны.

Давать конкретные рекомендации по настройке базы данных достаточно сложно, так как сервер базы данных - это сложное приложение и вам обязательно нужно проконсультироваться с документацией поставщика по вопросам настройки.

Но стоит отметить особое преимущество, которое мы получили в результате создания двухуровневой конфигурации. Созданная нами система сбалансирована по расходу оперативной памяти, и мы точно знаем свободный объем памяти и можем безопасно для системы использовать эту память для конфигурирования базы данных. В большинстве систем порядка 60-80% оперативной памяти удается выделить для базы данных и это позволяет значительно ускорить работу всей системы в целом.


Постоянное соединение с базой данных
249 / 253

Важным параметром, влияющим на потребление памяти базами данных (MySQL\Oracle), является максимальное число одновременных соединений (определяемое параметрами max_connections и processes соответственно).

При использовании двухуровневой архитектуры Front-end/Back-end можно в несколько раз уменьшить число одновременных соединений и высвободить больше памяти для сортировки данных в памяти и буферизации.

Если установлено число MaxClients в настройках веб-сервера Back-end, можно считать, что максимальное число соединений к базе данных будет соответствовать максимальному числу одновременных соединений.

Рекомендуется подбирать параметр max_connections таким образом, чтобы иметь резерв в 10-20% свободных соединений от максимального значения.


Настройка базы данных MySQL
250 / 253

Оптимизация работы с базой данных для MySQL-версии продукта является одной из важнейших стратегий в оптимизации системы в целом, так как продукт активно работает с базой данных.

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

Основным недостатком MyISAM с точки зрения производительности является блокировка на уровне таблицы при выполнении тех или иных операций. В результате, при большой нагрузке MySQL именно MyISAM таблицы становятся основным узким местом в системе, мешая увеличивать утилизацию машины и число обрабатываемых запросов. Это также приводит к увеличению времени работы страницы за счет ожидания используемых таблиц на уровне MySQL.

Рекомендуется переводить все таблицы проекта в формат данных InnoDB. Формат InnoDB, начиная с версии MySQL 4.0, входит в стандартную поставку продукта и обеспечивает надежное хранение данных, транзакционность и блокирование данных на уровне строки.

Два важных момента, которые дают основание предпочесть таблицы InnoDB перед MyISAM:

  1. Надежность. В MyISAM высока вероятность сбоя таблиц, особенно больших, особенно при высокой посещаемости, особенно часто изменяемых. Есть риск потерять несколько (десятков, сотен) записей и целостность данных. В InnoDB чинить отдельные таблицы не придется. Если упадет, так все сразу. Но на практике это - исключительное явление, практически не встречаемое. Благодаря транзакционности, риск нарушения целостности минимальный.

    Недостатки InnoDB: нужно внимательно следить за свободным местом на диске; накапливающаяся фрагментация данных (лечится периодическим переводом таблиц из InnoDB в MyISAM и обратно).

  2. Скорость. На невысокой посещаемости MyISAM ведет себя быстрее, как на модификацию, так и на чтение. Однако, при росте посещаемости достаточно быстро сказывается отсутствие транзакций и блокировка на уровне таблиц. При некоторой величине посещаемости проект просто реально умирает. В InnoDB запись будет медленнее (транзакции же), зато при высокой посещаемости блокировки наступят намного, намного позже, чем для MyISAM.

Поменять тип таблиц на InnoDB можно следующим образом:

  1. В административном меню Настройки системы > Инструменты > SQL запрос выполнить команду:
     SHOW TABLES
  2. В результате вы получите список всех текущих таблиц продукта. Для каждой таблицы необходимо выполнить команду:
     ALTER TABLE <ИМЯ ТАБЛИЦЫ>, type=InnoDB

    В FAQ приведен пример для создания скрипта для перевода таблиц в InnoDB.

  3. После перевода таблиц вашей базы в InnoDB надо добавить в файл /bitrix/php_interface/dbconn.php нижеследующий код:
     define("MYSQL_TABLE_TYPE", "InnoDB");

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

Внимание! Обязательно конфигурируйте InnoDB. Для лучшей производительности базы данных при работе с InnoDB рекомендуется настроить my.cnf для MySQL в разделе параметров для InnoDB innodb_*.

Наибольшее внимание следует обратить на следующие параметры и примеры:

 set-variable = innodb_buffer_pool_size=250M
 set-variable = innodb_additional_mem_pool_size=50M
 set-variable = innodb_file_io_threads=8
 set-variable = innodb_lock_wait_timeout=50
 set-variable = innodb_log_buffer_size=8M
 set-variable = innodb_flush_log_at_trx_commit=0
Рекомендуется: Для сокращения времени ответа сервера можно использовать отложенные транзакции и, в частности, устанавливать переменную set-variable = innodb_flush_log_at_trx_commit=0.

Если MyISAM уже не используется активно, можно высвободить память в пользу InnoDB параметров.

Желательно, чтобы кэш данных вмещал в себя основной объем данных, используемых продуктом в работе. Обычно для работы базы данных выделяется порядка 60-80% свободной памяти в системе.

Рекомендуется: Производить многопотоковую (multithreading) сборку MySQL для улучшения производительности системы и возможностей по параллельной обработке запросов.

Пример рекомендуемых настроек для сервера с 2 Гб оперативной памяти, работающего с операционной системой FreeBSD/Linux:

 set-variable = table_cache=4096

В составе продукта около 250 таблиц, поэтому рекомендуется увеличивать кэш для заголовков таблиц.

 set-variable = key_buffer_size=16M
 set-variable = sort_buffer=8M
 set-variable = read_buffer_size=16M

Эти параметры используются только для MyISAM. Если в базе нет таблиц MyISAM, то лучше установить минимальные значения.

set-variable = query_cache_size=64M
 set-variable = query_cache_type=1

Кэширование результатов запросов. Обычно бывает достаточно 32 Мб (смотреть на статус Qcache_lowmem_prunes). Максимальный размер результата по умолчанию - 1 Мб, его можно регулировать.

 set-variable = innodb_buffer_pool_size=780M

Основной буфер - чем больше, тем лучше.

set-variable = innodb_additional_mem_pool_size=20M

Вспомогательный буфер на внутренние структуры, большой делать не имеет смысла.

 set-variable = innodb_log_file_size=100M
 set-variable = innodb_log_buffer_size=16M

Чем больше размер лог-файла, тем реже надо будет записывать в основной файл данных. Суммарный размер лог-файла может быть сопоставим с величиной innodb_buffer_pool_size (по умолчанию ведется два лога).

 set-variable = innodb_flush_log_at_trx_commit=0

Отложенная фиксация транзакций, раз в секунду

 set-variable = tmp_table_size=32m

Размер временных таблиц рекомендуется увеличивать до 32 Мб.

Рекомендуется так же увеличивать join_buffer_size до 2 Мб, это существенно влияет на скорость выполнения ряда запросов.

set-variable = join_buffer_size = 2M

Совет администратору Переход на InnoDB может привести к значительному замедлению некоторых масштабных операций записи и обновления данных. Это связано с тем, что все операции по изменению данных начинают выполняться с использованием транзакций. Кроме того, в отличие от MyISAM для кэширования таблиц InnoDB не используется кэш операционной системы, а все кэшированные данные хранятся в кэше БД, определяемом параметром innodb_buffer_pool_size. Вы должны сами определить оптимальность перехода вашего проекта на формат данных InnoDB.

Внимание! Если по каким-то причинам вы решили продолжить работу с типом данных MyISAM, обязательно проведите конфигурирование MySQL для увеличения объемов кэшируемой информации, областей сортировки и минимизации числа дисковых операций. Использование для базы данных 60-80% оперативной памяти может ускорить работу стандартного проекта в несколько раз.

Временная папка

При наличии достаточного количества ОЗУ рекомендуется выносить временную папку MySQL на ramdisk в памяти.

Для этого:

  • Убедитесь, что в ядре реализована поддержка tmpfs.
  • Создайте новую точку монтирования и дайте все права на использование:
        # mkdir /mnt/tmpfs/
    # chmod 777 /mnt/tmpfs/
  • Дайте команду (от рута или через sudo):
        # mount -t tmpfs -o size=1024M tmpfs /mnt/tmpfs/
    или
    $ sudo mount -t tmpfs -o size=1024M tmpfs /mnt/tmpfs/
    где 1024M есть размер RAMdisk в Мегабайтах.

    Внимание! К размеру папки нужно подходить осторожно: если вы попросите создать ramdisk больше, чем имеете оперативной памяти, система начнёт сгружать всё в swap-файл и реальный результат подключения временной папки может быть отрицательным.

Список ссылок по теме:

  • Частный опыт настройки MySQL


Настройка базы данных Oracle
251 / 253

Общие рекомендации по настройке Oracle совпадают с рекомендациями Oracle по конфигурированию системы для уменьшения дисковых операций чтений, сортировки и перестроения.

Стоит обратить внимание на системные переменные управления памятью. Рекомендуется использовать до 60-80% оперативной памяти для кеширования данных за счет управления переменными:

db_cache_size
shared_pool_size
pga_aggregate_target

Начиная с версии Oracle 10, рекомендуется использовать Automatic Shared Memory Management:

  • при установке БД, выбрать % ОЗУ, которая будет доступна БД в пределах 60-80% от ОЗУ сервера с помощью параметра SGA_MAX_SIZE
  • во время эксплуатации БД количество памяти, доступное Oracle можно откорректировать (в большую или меньшую стороны) с помощью параметра SGA_TARGET без перезапуска БД. Индикатором правильности установки параметров управления памятью будет отсутствие дисковых операций swap, также имеет смысл контролировать общесистемный размер используемого swap пространства - не более 100 MB.

Для экономии места SGA (shared_pool) и уменьшения расходов процессорных ресурсов на разбор SQL-запросов, отличающихся только значениями констант, рекомендуется установить параметр

cursor_sharing = FORCE
либо
cursor_sharing = SIMILAR
отключив расчёт гистограмм для столбцов таблиц в параметрах сбора статистики:
begin dbms_stats.set_param( 'METHOD_OPT', 'FOR ALL COLUMNS SIZE 1'  ); end;

Если Oracle установлен на той же машине, что и веб-сервер, рекомендуется использовать протокол IPC (PROTOCOL = IPC) и (KEY = EXTPROC) для соединения с базой для исключения работы через IP-стек.

Если реализована двухуровневая схема обработки запросов с Front-end и Back-end и установлен параметр MaxClients, то можно без опасений использовать постоянные соединения между PHP и Oracle (Persistent connection), выполнив следующую установку в файле /bitrix/php_interface/dbconn.php:

 define("DBPersistent",true);
Примечание: Начиная с релиза Oracle 10g R2, возможно использование отложенных транзакций (Enhanced COMMIT) в случаях если бизнес-требования к проекту допускают возможную потерю данных нескольких последних транзакций. Использование отложенных транзакций существенно ускоряет проект, позволяет снять прямую зависимость от производительности дисковой подсистемы и существенно уменьшить время генерации страниц. Для использования этого механизма, необходимо установить параметр: COMMIT_WRITE='BATCH,NOWAIT'.


Пример-упражнение
252 / 253

Пример-упражнение. Настройки MySQL для виртуальной машины

В качестве примера рассмотрим как настроена база данных MySQL в виртуальной машине VMBitrix.

Перейдите в папку /etc/mysql и посмотрите настройки MySQL для виртуальной машины. Выключите виртуальную машину и установите ей большее значение ОЗУ (например, 512 мб). Посмотрите, как изменились настройки в файле /etc/mysql/conf.d/bvat.cnf:

Для 256 мб:
[mysqld]
query_cache_size=32M
innodb_buffer_pool_size=32M
для 512 мб:
[mysqld]
query_cache_size=48M
innodb_buffer_pool_size=96M

Кроме того, при 512 мб система чувствует себя гораздо свободнее:

Доступная память при 256 мб:
# free
             total       used       free     shared    buffers     cached
Mem:        255676     224340      31336          0      33468      67964
-/+ buffers/cache:     122908     132768
Swap:       530136      51800     478336
Доступная память при 512 мб:
# free
             total       used       free     shared    buffers     cached
Mem:        515572     299208     216364          0       6944     186336
-/+ buffers/cache:     105928     409644
Swap:       530136          0     530136

Связано это с тем, что виртуальная машина VMBitrix содержит скрипты, активизирующиеся при загрузке и устанавливающие необходимые параметры системы. Ключевым параметром является объем оперативной памяти, установленный в системе.

Примечание: Кастомизацию настроек можно производить без отключения виртуальной машины. Для этого достаточно вносить изменения в файл /etc/mysql/conf.d/z_bx_custom.cnf.


Запросы и методы
253 / 253

Пример оптимизации запроса

Всегда минимизируйте запросы. Например, если в цикле идет запрос к элементу ИБ, то уже необходимо задуматься над минимизацией. Да, это займет больше времени, но вам скажут спасибо клиенты.

Нельзя:

foreach($arResult["ORDERS"] as $key => $val)
{
   foreach($val["BASKET_ITEMS"] as $vvval)
   {
      $rsEls = CIBlockElement::GetByID();
   }
}

Следует:

$arIDs = array();
foreach($arResult["ORDERS"] as $key => $val)
  {
    foreach($val["BASKET_ITEMS"] as $vvval)
      {
        $arIDs[] = $vvval["PRODUCT_ID"];
      }
  }
if(!empty($arIDs))
{
    $rsEls = CIBlockElement::GetList(array(), array("ID" => $arIDs));
    ...
}

foreach($arResult["ORDERS"] as $key => $val)
{
   foreach($val["BASKET_ITEMS"] as $vvval)
   {
      //наполняем данные, налаживая соответствие ID-ков
   }
}

Фактически, вы сводите порой 10-ки, если не сотни, запросов к одному.

Специальные методы

Если для какого-либо изменения в БД предусмотрен специальный метод, то следует использовать именно его, а не более общий метод изменения БД.

Хороший пример - модуль интернет-магазина и работа с заказом: можно изменить флаг оплаты заказа путем CSaleOrder::Update, а можно путем CSaleOrder::PayOrder. Так вот, следует применять именно PayOrder, потому что в нем произойдет вызов соответствующих обработчиков.

Даже если вам надо изменить множество полей (того же заказа) и флаг оплаты, то произведите изменение через PayOrder, а затем уже апдейт остальных полей.


Курс для хостеров
0 / 253

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

В курсе рассматриваются требования платформы Bitrix Framework к хостингу, вопросы установки, настройки продукта а также вопросы инструментов и методов оптимизации серверов и баз данных для работы с системой

Для хостеров не является обязательным, но рекомендуется изучение курсов Контент-менеджер и Администратор. Базовый для получения более полного представления о возможностях системы и способах работы с ней.

Рекомендуется ознакомиться с опытом настройки и тестирования серверов в блогах Александра Демидова и Дениса Шаромова, а так же с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании "1С-Битрикс".

Если ваш хостинг на Windows, то вам может быть полезна группа 1С-Битрикс на платформе Windows Server 2008 в социальной сети сайта "1С-Битрикс". В ней пользователи делятся опытом работы системы на IIS 7.

После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче линейки тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий - не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:

Скачать материалы курса в формате CHM. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

Если не видно содержание файла CHM
Внимание! Если вы не видите содержимое файла формата .chm, то причина - настройки безопасности операционной системы: скачанные из интернета файлы находятся под наблюдением системы, которая ограничивает доступ к ним.

Чтобы отключить подобное отношение к файлу необходимо:

  • перейти в свойства файла на вкладку Общие. Внизу у Вас отобразится сообщение о том, что этот файл был заблокирован системой с целью защиты компьютера.

  • нажать кнопку Разблокировать.

Отсутствие кнопки Разблокировать возможно в двух случаях:

  1. Файл лежит не локально, а на сетевом ресурсе.
  2. Если файл лежит на локальном диске, но путь к нему содержит спецсимволы (# и прочие).