Обладая большим арсеналом возможностей и наличием готовых компонентов почти под любую задачу, продукты на основе Bitrix Framework занимают на диске от 100 Мб и больше. Сложная структура страницы требует для ее обработки определенного объема памяти.
Однако, благодаря своей архитектуре платформа Bitrix Framework позволяет легче переносить большие нагрузки, а для малых нагрузок достаточно самого обычного хостинга (в варианте «виртуальный сервер»), не загруженного другими клиентами «под завязку».
Производительность сайта - комплексное явление. Для приемлемых результатов должно быть состыкованы:
Без понимания каждой составляющей из этого списка невозможно настроить производительность. Сложность работы хостинга как услуги заключается в том, что конечные пользователи предъявляют претензии, как правило, к ТП хостинга, хотя проблемы могут быть на любом из названных выше этапов.
Типовая реакция неквалифицированного сотрудника ТП хостинга: проверка настроек сервера с проблемным сайтом и, в случае их соответствия локальным стандартам, "перевод стрелок" на программную платформу. Однако Bitrix Framework имеет свои особенности в настройке серверного ПО, что и нужно учитывать.
Bitrix Framework имеет свои особенности в плане хостинга:
Bitrix Framework содержит очень большое число файлов, распределенных в основном по модулям, компонентам и шаблонам. Кроме того, встроенный механизм кэширования создает на диске сервера как минимум один файл на каждую страницу или виртуальную страницу - например, на новость или элемент каталога. Естественно, что это требует ресурсов.
Для успешной установки и полноценной работы продукта необходимо следующее:
safe_mode
должен быть отключен (инсталлятор блокирует установку продукта в этом режиме).short_open_tag
включён.memory_limit
не ниже 32 Мб для редакции "Старт", не менее 64 Мб для редакции "Бизнес".Продукты Bitrix Framework поставляются в исходных кодах. Поэтому нет необходимости в модулях zend optimizer или zend guard loader.
Соответствие сервера требованиям системы, уже после установки сайта, можно протестировать модулем Монитор производительности.
Компания "1С-Битрикс" рекомендует клиентам и разработчикам проверять потенциальный хостинг специальным скриптом bitrix_server_test. Скрипт постоянно обновляется под выявляемые проблемы и обновления системы:
Хостерам рекомендуется периодически скачивать обновленную версию теста и проверять свои сервера по тестируемым параметрам.
Продукты "1С-Битрикс: Управление сайтом" и "Битрикс24" имеют модульную структуру.
Модули системы, главным образом, работают независимо друг от друга. Но есть и зависимости, функционал одних модулей основан на возможностях других. Например:
Список используемых модулей выводится на странице Управление модулями (Настройки > Настройки продукта > Модули) в административном разделе системы:
Таблица содержит название и описание модулей, информацию о версии и дате последнего обновления, а также текущий статус в системе:
Функционал установленных модулей виден в соответствующей секции [ds]административного меню[/ds][di]Интерфейс административного раздела системы Bitrix Framework логически разграничен на области, обеспечивающие доступ к функциональным возможностям системы.
Подробнее ...[/di] системы.
Для некоторых из них данные в меню загружаются динамически. Например:
В зависимости от прав на доступ к модулям системы не всем доступен тот или иной функционал модуля. [ds]Управление уровнем прав[/ds][di]Настройка прав доступа к модулям системы позволяет определить диапазон допустимых действий пользователя
над модулем и его контентом.
Подробнее ...[/di] пользователей на доступ к модулям системы осуществляется отдельно для каждого из них на странице его настроек.
Страница настроек модуля имеет различное число вкладок и полей, в зависимости от его функционала. Перейти к этой странице можно следующими способами:
Документация по теме |
Визуальное представление работы продукта |
Ознакомьтесь с общей схемой работы продукта.
|
|
Раздел Установка и настройка описывает процедуры:
Для специалистов, выполняющих настройку веб-серверов (Apache, IIS) самостоятельно, рекомендуется дополнительно изучить документацию по настройке соответствующего программного обеспечения.
Вендор рекомендует устанавливать продукты на Виртуальную машину BitrixVM или использовать веб-окружение (BitrixEnv). Подробнее о них можно узнать в специальном курсе.
Необходимые настройки при использовании других окружений описаны в главе Установка БУС/КП на другие окружения.
Продукт «1C-Битрикс: Управление сайтом» имеет много способов и вариантов установки. Конкретный способ зависит от её целей, имеющегося на компьютере ПО, выбранного решения. Карта установки позволит вам выбрать для себя оптимальный вариант процедуры из множества возможных.
Для ознакомления с продуктом на локальном компьютере можно использовать Windows-инсталлятор продукта, либо установку на Виртуальную машину (рекомендуется). (Установка с помощью Windows-инсталлятора в данном курсе не рассматривается.)
Для установки на удаленный сервер мы рекомендуем использовать скрипт BitrixSetup. Также в этой ситуации можно воспользоваться установкой продукта с помощью архива .tar.gz или .zip.
Для копирования сайта с локального компьютера на удаленный сервер или наоборот, а также для переезда с одного сервера на другой, воспользуйтесь уроком Перенос продукта.
В силу больших возможностей системы и наличия готовых компонентов почти для любой задачи «1С-Битрикс:Управление сайтом» занимает на диске от 100 Мбайт и больше, а сложная структура страницы может потребовать для ее обработки определенного объема памяти. Но благодаря своей архитектуре, платформа Bitrix Framework позволяет серверу легче переносить большие нагрузки.
В главе указываются основные технические требования к серверному программному обеспечению, сведения о поддержке стандартов и технологий, а также требования к программному обеспечению пользователя продуктом «1C-Битрикс: Управление сайтом». Современное аппаратное обеспечение перекрывает потребности системы практически в любом случае.
Необходимые настройки при использовании других окружений описаны в главе Установка БУС/КП на другие окружения.
Apache (рекомендуется) работа на этом сервере оптимальна. Версия сервера не ниже 2.0.
Для "1С-Битрикс: Управление сайтом" (не для "Битрикс24 в коробке") возможно использование:
IIS (Internet Information Server)(возможна установка) – работа продукта возможна с IIS 5, IIS 6 и IIS 7 и 7.5. Требуется дополнительная настройка для корректной работы с продуктом.
Eserv (возможна установка) – продукт тестировался для совместной работы с веб-сервером.
Теоретически работа продуктов возможна на любом веб-сервере, который может выполнять PHP приложения. Но детальные тестирования не проводились, поэтому использование серверов не из списка возможно лишь на ваш риск.
Для работы продукта требуется наличие PHP версии не ниже [dw]8.0.0[/dw][di]С 01.02.2023[/di]. Рекомендуемая версия PHP – 8.1 и выше. Выбор PHP-версии зависит от требований, предъявляемых вашим хостинг-провайдером, либо от установленной версии PHP на локальном компьютере. Рекомендуется использовать самую последнюю стабильную версию PHP, чтобы исключить возможность появления ошибок, связанных с PHP, а также для большей безопасности проекта на сервере.
Для корректной работы продукта требуется наличие следующих расширений PHP:
MySQL – минимальным техническим требованием является использование версии [dw]MySQL 5.6[/dw][di]С 30 июня 2019 года.[/di]. Рекомендуемая версия MySQL – 5.7 и выше.
Для работы с СУБД MySQL требуется установленная поддержка MySQL для PHP.
Для корректной работы продукта необходимо установить следующие параметры PHP:
memory_limit = 64M;
Максимальный объем памяти в байтах, который разрешается использовать для работы PHP ядру продукта (в данном случае – 64 Мб).
/bitrix/php_interface/dbconn.php
в момент установки, значение задается пользователем. [/di]: ini_set("memory_limit", "64M")
;
php_value memory_limit 64M
php_admin_value memory_limit 64M
AllowOverride All
или другое значение, отличное от None
; file_uploads = On;
Параметр определяет возможность загрузки на сервер файлов. Дополнительно к указанному параметру устанавливаются значения следующих параметров:
upload_tmp_dir
= <[dw]имя каталога[/dw][di]Необходимо, чтобы указанный каталог существовал и на него были права на запись для пользователя, под которым работает веб-сервер. Параметр upload_tmp_dir
может быть закомментирован в php.ini по умолчанию. [/di]>
upload_max_filesize
= <достаточный размер> session.save_path
не настроен в файле php.ini, то по умолчанию будет использовано значение /tmp
.[/di] для сохранения файлов сессий.
session.use_trans_sid = 0
php_flag session.use_trans_sid off
Вендор рекомендует устанавливать продукты на Виртуальную машину BitrixVM или использовать веб-окружение BitrixEnv. Подробнее о них можно узнать в специальном курсе Виртуальная машина BitrixVM:
Необходимые настройки окружения при использовании других ОС описаны в главе Установка БУС/КП на другие окружения:
Система «1С-Битрикс: Управление сайтом» разработана с использованием и поддержкой следующих технологий:
HTML/XHTML – система не накладывает ограничений на использование шаблонов, разработанных с использованием HTML/XHTML.
JavaScript – система не накладывает ограничений на использование JavaScript в шаблонах сайта, шаблонах меню и на страницах сайта.
AJAX – технология используется в публичном интерфейсе продукта, компонентах 2.0, административной панели управления для ускорения работы с информацией сайта и уменьшения количества передаваемых данных от сервера к клиенту. Система не накладывает ограничений на использование технологии AJAX в публичных разделах сайта.
CSS – система предполагает использование различных таблиц каскадных стилей для каждого шаблона сайта. Отдельные таблицы стилей могут быть использованы для настройки представления публичных компонентов и шаблонов отдельных модулей (например, модули форума, техподдержки, опросов). Административная панель управления разработана с учетом возможности создания своих «визуальных тем», которые основаны на разработке отдельных таблиц стилей.
RSS – продукт поддерживает стандарт RSS версий 0.92 и 2.0. RSS используется для организации обмена информацией между модулями Информационные блоки, Блоги и Форум.
CommerceML – система реализована с поддержкой стандарта CommerceML версии 1.0. Поддержка стандарта позволяет обеспечить обмен информацией между «1C-Битрикс: Управление сайтом» и системой программ «1C: Предприятие» версий 7.7 и 8.х.
CSV – система использует стандарт CSV для организации обмена данными модуля информационных блоков с другими системами.
Поддержка браузеров – программный продукт разработан с учетом поддержки наиболее распространенных браузеров. Административная часть оптимизирована для работы с ними. Показ публичной части сайта не зависит от типа браузера.
<!DOCTYPE>
. В главе описаны предварительные шаги для установки продуктов компании "1С-Битрикс", шаги мастера установки, а также выбор и первоначальная настройка решений для быстрого развертывания своего проекта. Пример даётся на основе "1С-Битрикс: Управление сайтом", при установке "Битрикс24 в коробке" действия практически аналогичные. Отличается установка "Битрикс24 в коробке" незначительно в деталях в которых можно легко разобраться с помощью инструкций в "Мастере установки Битрикс24".
Продукт «1С-Битрикс: Управление сайтом» поставляется в виде архивов .zip и .tar.gz для версий PHP 5.
Для начала процесса установки продукта выполните следующее:
Подробно рассмотрим как установить продукт «1С-Битрикс: Управление сайтом» и решение на демо-примере «Интернет-магазин».
clear_db=Y
(например, http://localhost/?clear_db=Y), перед установкой продукта в базе данных будут удалены все таблицы и связанные с ними сущности.
Внимание! Используйте эту опцию, только если вы полностью осознаете последствия ваших действий.
В поле Лицензионный ключ введите полученный при покупке лицензионный ключ продукта.
Начиная с версии 16.5.7 и старше, в продукте «1С-Битрикс» появилась возможность пометить новую или существующую установку программного продукта специальным маркером, который не будет влиять на блокировку системы обновлений, и как следствие - на возникновение ошибки [dw]ERROR_WRONG_CODE[/dw][di]Система обновлений продукта привязывается к конкретной установке и "запоминает" состояние системы после очередного обновления. Ошибка ERROR_WRONG_CODE возникает в том случае, если текущее состояние не соответствует тому, которое было на момент последнего обновления.
Подробнее...[/di].
На Установке для разработки можно проводить тестирование, не устанавливая продукт локально. Этот функционал поможет решить проблему коллективного доступа к одной установке продукта. Ещё эта функция будет полезна, если разработчиков несколько и всем им нужна своя установка продукта для тестирования.
Установкой флажка задаётся установка с использованием кодировки UTF-8.
На данный момент для кодировки HTML-документа выбор стоит между WIN-1251 и UTF-8.
Использование кодировки WIN-1251 целесообразно со старыми версиями MySQL (до версии 4.х), которые некорректно работали с UTF-8. Эти недостатки отсутствуют в современных версиях СУБД MySQL.
Для достижения наибольшей универсальности и полноты использования существующих символов рекомендуется использовать кодировку UTF-8.
Для продолжения установки нажмите кнопку Далее.
Проверка системы на:
Результаты проверки выводятся разными цветами:
Не рекомендуется продолжать установку продукта до устранения несовместимости.
Технически установка возможна, но после установки приведите систему в соответствие с рекомендованными настройками. Иначе есть вероятность, что сайт работать не будет.
В дальнейшем проверить настройки системы можно в административном разделе на странице [dw]Проверка системы[/dw][di]
Подробнее...
[/di] (Настройки > Инструменты > Проверка системы).
Для продолжения установки нажмите кнопку Далее.
Создаётся конфигурационный файл соединения с базой данных и производится загрузка данных в базу.
При инсталляции на локальный компьютер с уже установленными приложениями для его корректной работы (Apache, PHP, MySQL) заполните поля следующим образом:
Операционные системы налагают свои ограничения на максимальный размер файла. Обычно он составляет от 2 до 4 Гбайт. Таблицы MylSAM являются платформо-независимыми. Табличные файлы можно перемещать между компьютерами разных архитектур и разными операционными системами без всякого преобразования.
Для таблиц InnoDB осуществляется блокировка на уровне строки, а также используется метод чтения без блокировок в команде SELECT
. На случай отмены транзакций ведется журнал транзакций. Он подвержен внутренней ротации, т.е. когда заполняются все записи, самые старые из них начинают удаляться. Перечисленные функции позволяют улучшить взаимную совместимость и повысить производительность в многопользовательском режиме.
InnoDB предназначается для получения максимальной производительности при обработке больших объемов данных. По эффективности использования процессора этот тип намного превосходит другие модели реляционных баз данных с памятью на дисках.
При установке на удаленном сервере данные для полей параметров базы данных вам надо запросить у службы поддержки удаленного сервера и заполнить поля:
Эти параметры определяют права доступа к файлам сайта (для всех типов баз данных).
Заполните поля:
/bitrix/php_interface/dbconn.php
и /bitrix/.settings.php
. Файлы будут созданы после завершения установки.Для продолжения установки нажмите кнопку Далее.
Автоматический шаг, когда выполняется создание таблиц в базе данных и установка файлов системы. Отслеживание процесса можно вести по графическому индикатору. После завершения процесса создания базы данных система автоматически перейдет к следующему этапу мастера.
На этом этапе выполняется настройка сайта и создание учетной записи администратора, которому будут доступны все функции настройки и управления сайтом.
Поля, отмеченные *, обязательны для заполнения.
Для продолжения установки нажмите кнопку Далее.
Выберите подходящее вам решение и запустите один из мастеров создания сайта:
Дополнительно |
Автоматический шаг, на котором происходит загрузка выбранного вами решения (мастера). Отслеживание процесса можно вести по графическому индикатору
Выбор кнопки [dw]Далее[/dw][di][/di] запустит Мастер создания демо-сайта для разработчиков.
Выберите шаблон дизайна для сайта. Шаблоны отличаются внешним оформлением, представленной информацией на главной странице сайта, а также базовыми настройками.
Укажите предпочтительную цветовую схему для выбранного на первом шаге шаблона дизайна сайта. Для разных типов шаблонов предлагаются разные цветовые схемы.
Задайте название вашего сайта, слоган и логотип.
Выберите необходимые сервисы для создаваемого сайта.
Для изменения настроек предназначена кнопка Назад, для запуска процесса установки - кнопка Установить.
Ход установки отображается с помощью графического индикатора.
После завершения установки выводится информация об успешном завершении работы Мастера создания сайта.
Для выхода из мастера нажмите кнопку Перейти на сайт. Откроется публичный раздел созданного демо-сайта.
Установка продукта завершена.
php_flag session.use_trans_sid off
. ExpiresActive on ExpiresByType image/jpeg "access plus 3 day" ExpiresByType image/gif "access plus 3 day"Установка этих директив может не поддерживаться установленной текущей версией Apache.
Мастер установки решения |
В качестве примера установки решения рассмотрим создание сайта онлайн-магазина (решение Интернет-магазин).
Первое окно информирует о начале работы мастера. Выберите [dw]шаблон дизайна[/dw][di] [/di] для вашего сайта. Шаблоны отличаются внешним оформлением, а также базовыми настройками.
На этом шаге работы мастера выбирается цветовая тема для выбранного на первом шаге шаблона дизайна сайта. Для разных шаблонов предлагаются разные [dw]цветовые схемы[/dw][di][/di].
Задайте [dw]данные о компании[/dw][di] [/di].
Произведите [dw]настройки каталога[/dw][di][/di].
Укажите [dw]служебные данные[/dw][di] [/di] о компании: Локализацию магазина (физическое местоположение магазина), Информацию о магазине и Банковские реквизиты
Задайте [dw]типы плательщиков магазина[/dw][di] [/di], которые будут использоваться на сайте.
Определите [dw]способы оплаты, доставки[/dw][di] [/di] товара и Местоположение магазина, которые будут использоваться на сайте.
Автоматический шаг, на котором устанавливаются все настройки решения. Отслеживание процесса можно вести по [dw]графическому индикатору[/dw][di][/di]. После завершения процесса установки система автоматически перейдет к следующему шагу.
Установка и настройка решения [dw]завершена[/dw][di][/di].
Нажмите кнопку Перейти на сайт для перехода на главную страницу сайта.
Видеоурок |
В видео показана дополнительная необязательная информация, для расширения представлений о возможностях CMS Битрикс.
Демонстрируется, какие готовые решения предлагаются для установки в продукте Битрикс Управление сайтом и чем они отличаются. То есть, что вы получите, выбрав то или иное решение.
Стороннее решение из MarketPlace можно поставить как на этапе установки продукта «1C-Битрикс: Управление сайтом», так и после запуска проекта.
В продукт включена защита от манипуляций с переустановкой стороннего решения с целью получить "бесконечный триал". Физическое удаление модуля (удаление папки модуля) независимо от срока действия триала приведёт к тому, что установить заново триальную версию станет невозможно. Установится только версия с купленной лицензией.
Мастер установки решения |
В качестве примера установки любого стороннего решения из Marketplace рассмотрим создание типового сайта лечебных учреждений, клиник (решение Сайт медицинской клиники).
Первое окно информирует о начале работы мастера. Выберите [dw]шаблон дизайна[/dw][di] [/di] для вашего сайта. Шаблоны отличаются внешним оформлением, а также базовыми настройками.
Выберите цветовую тему для выбранного на первом шаге шаблона дизайна сайта. Для разных шаблонов предлагаются разные [dw]цветовые схемы[/dw][di] [/di].
Задайте данные о компании в [dw]полях формы[/dw][di] [/di].
Автоматический шаг, на котором устанавливаются все настройки решения. Отслеживание процесса можно вести по [dw]графическому индикатору[/dw][di][/di]. После завершения процесса установки система автоматически перейдет к следующему шагу.
Установка и настройка решения [dw]завершена[/dw][di][/di].
Нажмите кнопку Перейти на сайт для перехода на главную страницу сайта.
Установить стороннее решение из Marketplace после установки продукта «1C-Битрикс: Управление сайтом» можно двумя способами:
На странице решения выполните одно из действий:
Для обновления стороннего решения необходимо перейти в Установка обновлений (Marketplace > Обновление решений):
По ссылке Посмотреть список обновлений осуществляется переход на закладку [dw]Список обновлений[/dw][di][/di], где указывается какое решение можно обновить.
На закладке Активация купона (Marketplace > Обновление решений) осуществляется регистрация стороннего решения с помощью ввода кода купона:
Установка «1С-Битрикс: Управление сайтом» на удаленный сервер возможна посредством загрузки дистрибутива по протоколу FTP или с помощью скрипта BitrixSetup.
Для загрузки по FTP достаточно скачать и распаковать на локальном компьютере коммерческую или пробную версию. Затем с помощью любого FTP-клиента загрузить дистрибутив в корневую папку веб-сервера, либо закачать архив на удаленный сервер и распаковывать уже там.
Во избежание возможных ошибок при загрузке, а так же частой проблемы с различием прав доступа пользователя FTP и пользователя сервера Apache настоятельно рекомендуется использовать специально созданный скрипт BitrixSetup.
С помощью скрипта BitrixSetup вы сможете загрузить дистрибутив пробной или коммерческой версии продукта с сайта www.1c-bitrix.ru непосредственно на ваш сайт, минуя промежуточную загрузку дистрибутива на локальный компьютер. Кроме того, скрипт позволяет автоматически распаковать дистрибутив при отсутствии возможности доступа к сайту по SSH или с помощью внешних программ.
С помощью скрипта BitrixSetup будет установлено соединение вашего сервера непосредственно с сервером компании «1C-Битрикс». Дистрибутив выбранной редакции продукта будет скопирован в корневую директорию сайта на сервере, автоматически распакован, а затем в браузере откроется окно Мастера установки продукта.
С помощью кнопки Назад можно вернуться в раздел Выбор дистрибутива, чтобы изменить значения параметров загрузки (например, редакцию дистрибутива).
Быстрая установка позволяет в упрощенном виде установить продукт «1C-Битрикс». Во время такой установки мастером пропускаются шаги лицензионного соглашения, предварительной проверки хостинга, выбора и настройки базы данных и т.п.
Таким образом, быстрая установка начнется с Пятого шага мастера установки продукта.
Все необходимые данные для установки содержатся в файлах /bitrix/php_interface/dbconn.php
(до версии 20.900.0) и /bitrix/.settings.php
(с версии 20.900.0), которые нужно создать и поместить в необходимые директории устанавливаемого дистрибутива.
<? 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
.$DBHost
- указывается адрес и порт сервера базы данных MySQL (например, localhost
или 192.168.3.155:31007
, если БД находится на другом хосте и на нестандартном порту).
$DBName
- указывается имя базы MySQL (например, sitemanager
).
utf8_unicode_ci
, в CP1251 - cp1251_general_ci
. $DBLogin
- логин пользователя для доступа в базу данных.$DBPassword
- пароль пользователя для доступа в базу данных.$DBDebug
- если данная переменная будет равна true
, то в случае ошибки при создании соединения с базой или в любом SQL-запросе, сообщение об ошибке и полный текст этой ошибки будет отображаться в браузере. В противном случае - полный текст ошибки будет показан только администратору сайта.$DBDebugToFile
- если данная переменная будет равна true
, то все SQL-запросы к базе данных и время их выполнения будут записываться в лог-файл /mysql_debug.sql . Данная возможность используется, как правило, для получения данных о скорости выполнения SQL-запросов к базе данных.
BX_FILE_PERMISSIONS
- права, с которыми будут создаваться файлы. Права должны быть достаточными для доступа веб-сервера на запись (по умолчанию - 0644).BX_DIR_PERMISSIONS
- права, с которыми будут создаваться каталоги. Права должны быть достаточными для доступа веб-сервера на запись (по умолчанию - 0755).@umask(~BX_DIR_PERMISSIONS)
- возвращает права на директории, созданные в процессе установки продукта, к принятым по умолчанию на хостинге (без вывода ошибок).BX_USE_MYSQLI
- использование расширения mysqli (в версии ядра 14.5.2 и выше).
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
, то кеширование отключено.<?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, ) );
true
, то данные настройки нельзя изменить через API.utf_mode
- отвечает за кодировку сайта, значения value
:
true
- UTF8;
false
- CP1251.
cache_flags
- флаги кэширования:
config_options
- время жизни кэша настроек сайта в секундах;
site_domain
- время жизни кэша настроек домена в секундах.
cookies
- отвечает за cookies на сайте.exception_handling
- секция отвечает за обработку ошибок.connections
- секция отвечает за параметры соединения с базой данных и другими источниками данных.Перед началом использования коммерческой версии системы вам необходимо произвести активацию лицензионного ключа.
Переоформление лицензии с одного владельца на другого выполняется через Техподдержку компании 1С-Битрикс. При этом не имеет значения, имеется ли на момент переоформления у клиента активная ТП или нет.
Все коммерческие версии продуктов "1C-Битрикс" всегда поставлялись в исходных текстах. Таким образом предоставляется клиентам контроль над продуктом. Лицензия также предусматривает право на изменение исходных текстов.
Пробные версии кодировались с помощью Zend Optimizer, и это создавало проблемы:
Начиная с версии 9.1, в продуктах "1C-Битрикс" для обеспечения 30-дневного демо-периода и защиты решений партнеров используется собственный обфускатор PHP кода, который защищает несколько важных системных файлов в пробных версиях продуктов «1C-Битрикс», а также автоматически защищает решения партнеров. В коммерческих версиях по-прежнему все файлы остались в свободном исходном коде.
Зарегистрировав продукт, вы получите доступ к бесплатным обновлениям системы, а также приоритетный доступ к службе Технической поддержки компании «1С-Битрикс» на период активности лицензии. Для неактивной лицензии техническая поддержка также осуществляется, но по менее строгому регламенту.
Кроме того, вы также получите доступ к закрытому форуму компании, где можно принять участие в обсуждении интересующей темы, а также вынести на обсуждение возникший вопрос.
Продукт "1C-Битрикс" может быть временно установлен на дополнительный компьютер (ЭВМ) для разработки, тестирования и/или наполнения сайта при условии отсутствия любого "внешнего" доступа к ней (в том числе из сети Интернет или извне локальной сети пользователя). Такая установка должна быть немедленно удалена после завершения этих работ. При получении ошибки о превышении допустимого количества установок продукта необходимо обратиться в Техподдержку «1C-Битрикс».
После выполнения всех этих действий станет доступна информация о лицензии:
Демо-версию можно перевести в статус коммерческих, если имеется коммерческий лицензионный ключ.
Сделать это можно двумя способами:
на закладке Установка обновлений (Marketplace > Обновление платформы), нажав на кнопку Ввести лицензионный ключ
После этого необходимо провести активацию ключа, как это было описано в уроке Регистрация коммерческого продукта. После коммерческой регистрации будут снято ограничение демо-версии на время её работы, таким образом вы получите полнофункциональный продукт.
Если по окончании срока действия лицензии Вы приняли решение не продлевать лицензию, то работа продукта 1С-Битрикс: Управление сайтом перейдет в ограниченный режим, т.е. часть функций станут недоступны.
Ограниченный режим актуален для продукта Битрикс24 Коробочная версия, если этот продукт приобретён до 14 марта 2022 года и вы не продлили лицензию согласно новым условиям лицензирования.
Какие возможности станут недоступны |
Какой функционал будет недоступен |
Для 1С-Битрикс: Управление сайтом и Битрикс24 Коробочная версия (приобретённая до 14 марта 2022 года и не продлённая согласно новым условиям лицензирования):
|
* Сервис временно недоступен.
Только в [ds]Битрикс24 Коробочная версия[/ds][di]После окончания действия лицензионного ключа «Битрикс24 в коробке» вы сможете пользоваться порталом, но с некоторыми ограничениями.
Функциональные возможности, недоступные в ограниченной лицензии:
Подробнее...[/di](приобретённая до 14 марта 2022 года и не продлённая согласно новым условиям лицензирования):
|
* Социальная сеть признана экстремистской и запрещена на территории Российской Федерации.
Чтобы продолжить использование коробочной версии Битрикс24, необходимо [dw]заранее[/dw][di] Продлить лицензию можно за 60 дней до истечения срока действия текущей лицензии. [/di] приобрести продление действия лицензии на следующие 12 месяцев. Стоимость продления составляет 25% от стоимости лицензионного ключа.
После окончания срока действия лицензии через 15 дней коробочная версия Битрикс24 будет отключена.
После оплаты ваша лицензия будет автоматически продлена. На email, указанный при оформлении заказа, придёт соответствующее письмо об успешной активации.
Всё, что вам останется сделать – это [dw]обновить систему SiteUpdate[/dw][di] [/di] на странице Система обновлений (Marketplace > Обновление платформы).
Для возобновления работы нужно продлить лицензию, выбрав один из вариантов:
После оплаты ваша лицензия будет автоматически продлена. На email, указанный при оформлении заказа, придёт соответствующее письмо об успешной активации.
В 1С-Битрикс: Управление сайтом система обновлений, как и техподдержка, осуществляется в течение года после регистрации приобретенной лицензии. Для получения в дальнейшем права на обновления необходимо оформить продление техподдержки и обновлений.
Коробочная версия Битрикс24 ограничена [ds]по сроку действия[/ds][di]C 14 марта 2022 года произошли изменения в лицензировании коробочной версии Битрикс24. Срок действия лицензии – 12 месяцев.
Подробнее на helpdesk.bitrix24.ru.[/di]. Спустя 15 дней после окончания срока действия лицензии работа вашей коробочной версии Битрикс24 будет отключена полностью, и работать с ней станет возможно только после [ds]продления лицензии[/ds][di]
В уроке описываются способы продления лицензии и до истечения её срока действия, и после истечения срока.
Подробнее...[/di] на следующие 12 месяцев.
Ядро продукта - каталог /bitrix/modules/
, а также файлы системных компонентов: /bitrix/components/bitrix/
(пути везде задаются относительно корневой папки). Часто в понятие ядра продукта включается также структура базы данных продукта.
Служебная область - все подкаталоги каталога /bitrix/
, за исключением ядра продукта и каталога /bitrix/updates/
. Часто в понятие служебной области включаются также данные служебных таблиц базы данных.
Каталог системы обновлений - каталог /bitrix/updates/
. Этот каталог предназначен исключительно для работы системы обновлений и не может использоваться в других целях.
Публичная часть - все каталоги, относящиеся к данной копии продукта, за исключением ядра продукта, служебной области и каталога системы обновлений. Часто в понятие публичной части включаются все данные базы данных, за исключением данных служебных таблиц.
Регистрация копии продукта - снятие с данной копии продукта ограничений, которые имеет демонстрационная версия (например, ограничение по времени работы).
Лицензионный ключ - последовательность символов, которая подтверждает право на использование копии продукта.
Купон на дополнительный сайт - последовательность символов, которая подтверждает право на создание одного дополнительного сайта в рамках данной копии продукта.
Сервер обновлений - сервер, который отдает обновления продукта системе обновлений. Адрес сервера обновлений задается на странице глобальных настроек главного модуля (должен иметь значение www.1c-bitrix.ru или www.bitrixsoft.com).
Система обновлений не собирает и не передает никаких конфиденциальных данных копии продукта, на которой она работает. Она обменивается с сервером обновлений только техническими данными, необходимыми для корректной работы системы обновлений (например, текущие версии модулей или дата последнего обновления системы помощи).
Система обновлений не изменяет публичную часть. Служебная область изменяется только в рамках необходимости, при этом существующие файлы и записи не изменяются (т.к. они уже могли быть изменены владельцем копии продукта под свои нужды). Ядро продукта может быть изменено системой обновлений сколь угодно сильно (при этом обеспечивается обратная совместимость).
Система обновлений производит технически сложную серьезную модификацию ядра продукта. Если эта модификация будет произведена с ошибками, то сайты, работающие на этом ядре, могут оказаться неработоспособными. Перед установкой обновлений рекомендуется убедиться в наличии резервной копии как базы данных, так и скриптов ядра продукта и служебной области. Рекомендуется для проведения процедуры обновления выбирать время, когда нагрузка на сервер минимальна. При возникновении проблем с установкой обновления вам необходимо незамедлительно обратиться в службу технической поддержки компании «1С-Битрикс».
Установка обновлений выполняется со страницы Система обновлений (Marketplace > Обновление платформы).
Если на странице вывелось сообщение о том, что лицензионный ключ не верен (или лицензия не найдена), то установка не лицензирована и её надо зарегистрировать.
Если выводится сообщение о том, что лицензионный ключ не активирован, то вам необходимо нажать кнопку Активировать ключ и заполнить все поля открывшейся формы. После этого лицензионный ключ будет активирован.
Если выводится сообщение о том, что доступно обновление самой системы обновлений, то необходимо установить это обновление. До установки этого обновления остальной функционал системы будет недоступен.
Если в систему введен валидный активный лицензионный ключ и установлено последнее обновление самой системы обновлений, то на странице системы обновлений доступны следующие действия:
Если обновление на текущем сервере повлечет за собой нарушение лицензионного соглашения, то на странице Система обновлений (Marketplace > Обновление платформы) до начала процедуры обновления появится сообщение [dw]ERROR_WRONG_CODE[/dw][di]Система обновлений продукта привязывается к конкретной установке и "запоминает" состояние системы после очередного обновления. Ошибка ERROR_WRONG_CODE возникает в том случае, если текущее состояние не соответствует тому, которое было на момент последнего обновления.
Подробнее...[/di]:
Для устранения ошибки необходимо обратиться в Техподдержку. Техническая поддержка по данному вопросу осуществляется в рабочие дни с 9 до 20 часов московского времени, кроме выходных и праздничных дней (по календарю праздничных дней РФ).
Чтобы заранее узнать о невозможности проведения обновления на текущем сервере, рекомендуем в настройках Главного модуля (Настройки > Настройки продукта > Настройки модулей > Главный модуль) включить опцию Автоматически проверять наличие обновлений и установить временной интервал:
В случае невозможности установки обновлений появится соответствующее [dw]уведомление системы.[/dw][di] [/di]
ERROR_WRONG_CODE
, а установка обновлений будет прервана.Настройки системы обновлений осуществляются на вкладке Система обновлений страницы настроек Главного модуля (Настройки > Настройки продукта > Настройки модулей > Главный модуль)
Для загрузки обновлений модулей системы выполните следующие действия:
Если вы не хотите устанавливать все обновления сразу, то на вкладке Список обновлений отметьте только те, что необходимо, и нажмите кнопку Установить обновления.
Если вы выполняете обновление модулей поочередно, а не всех сразу, то после установки каждой «порции» модулей вам необходимо воспользоваться кнопкой Проверить обновления и затем установить выбранные модули.
При необходимости процесс можно остановить, нажав кнопку Остановить установку. При этом система не прервет обновление сразу и полностью, а завершит загрузку модуля, который обновлялся в момент нажатия этой кнопки. Если в ходе установки произошел сбой, то система уведомит вас об этом и нужно будет просто повторить процесс.
С помощью системы обновлений вы можете установить дополнительные [dwi include_lang]языковые файлы[/dwi] интерфейса. Для этого выполните следующее:
Контролировать процесс установки вы сможете по полосе прогресса. В результате будет выведено сообщение об успешной установке либо о возникших ошибках.
Система «1C-Битрикс: Управление сайтом» позволяет создавать несколько сайтов с применением одной копии (лицензии) продукта, размещая ядро и базу данных системы в единственном экземпляре на сервере. Максимальное количество сайтов на одной копии продукта ограничено лицензией только для редакции "Старт". На данный момент - это 2 сайта. Если необходимо создать дополнительные сайты сверх этих двух, то приобретите лицензии на дополнительные сайты.
Если вы уже используете «Старт», «Стандарт» или другую редакцию продукта 1C-Битрикс: Управление сайтом, то вы можете расширить возможности вашего сайта, осуществив переход на более высокую редакцию продукта. Для этого вам необходимо приобрести купон для перехода на нужную вам редакцию.
При смене редакции «Битрикс24» в коробке добавляется не только функционал, но и число пользователей.
Чтобы всегда иметь доступ к последним обновлениям продукта и технической поддержке в 1С-Битрикс: Управление сайтом, необходимо по окончании периода активности обновлений приобрести купон на продление технической поддержки и получение обновлений.
Коробочная версия Битрикс24 ограничена [ds]по сроку действия[/ds][di]C 14 марта 2022 года произошли изменения в лицензировании коробочной версии Битрикс24. Срок действия лицензии – 12 месяцев.
Подробнее на helpdesk.bitrix24.ru.[/di]. Спустя 15 дней после окончания срока действия лицензии работа вашей коробочной версии Битрикс24 будет отключена полностью, и работать с ней станет возможно только после [ds]продления лицензии[/ds][di]
В уроке описываются способы продления лицензии и до истечения её срока действия, и после истечения срока.
Подробнее...[/di] на следующие 12 месяцев.
Купон активируется на закладке Активация купона страницы Система обновлений (Marketplace > Обновление платформы):
Ошибка свидетельствует о том, что скрипт обновления не может подключиться к серверу обновлений www.bitrixsoft.com на порт 80. Причины могут быть следующие:
Вам необходимо обратиться к администратору сервера, предоставив описание ошибки.
Эта ошибка свидетельствует о том, что в системе либо не зарегистрировано ни одного сайта, либо все сайты деактивированы, либо превышено количество активных сайтов, разрешенных текущей лицензией.
Для решения проблемы и получения возможности загрузки и установки обновлений, необходимо или зарегистрировать в системе хотя бы один сайт, или активировать существующий из раздела, или деактивировать сайты до количества, разрешенных текущей лицензией: Рабочий стол > Настройки > Настройки продукта > Сайты > Список сайтов.
Система обновлений продукта привязывается к конкретной установке и "запоминает" состояние системы после очередного обновления. Ошибка возникает в том случае, если текущее состояние не соответствует тому, которое было на момент последнего обновления. Этот механизм призван пресечь попытки обновления на одном лицензионном ключе неограниченного количества установок продукта.
Согласно лицензионному соглашению, на каждый лицензионный ключ допускается две установки системы: одна публичная и одна локальная (для разработчика), но недоступная из Интернета. С учетом этого система настроена так, что сохраняет данные о двух установках. При этом, если не переносить копию с локальной машины на сервер и назад - можно обновлять независимо обе копии, проблем не возникнет. Если же вам необходимо переносить продукт на локальную машину, то следует обновлять только одну копию из двух: либо на сервере, либо локальную (зависит от ваших предпочтений).
Аналогичным образом следует поступать при переносе сайта на новый сервер: скопировать структуру файлов и БД на новый сервер, после этого, не обновляя продукт на старом, удалить его сразу после обновления DNS.
Ошибка на странице обновлений:
Class 'CUpdateExpertMode' not found (0) /app/www/bitrix/modules/main/admin/update_system.php:50 #0: require_once /app/www/bitrix/admin/update_system.php:2
При этом класс CUpdateExpertMode определен в /bitrix/modules/main/classes/general/update_client.php
.
Ситуация связана с влиянием OpCache. Параметр opcache.validate_timestamps (/etc/php.d/opcache.ini
) имеет значение 0
, должно быть: On
.
Во многом соответствие сервера требованиям системы можно протестировать модулем Монитор производительности.
Для успешной установки и полноценной работы продукта необходимы следующее:
safe_mode
должен быть отключен (инсталлятор блокирует установку продукта в этом режиме).short_open_tag
включён.memory_limit
не ниже 32 Мб для редакции "Старт", не менее 64 Мб для редакции "Бизнес".Продукты Bitrix Framework поставляются в исходных кодах. Поэтому нет необходимости в модулях zend optimizer или zend guard loader.
Протестировать конфигурацию сервера можно специальным скриптом bitrix_server_test.php, который необходимо запустить на своём сервере.
Рекомендуется ознакомиться с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании "1С-Битрикс".
Для переноса сайта с локальной машины на удаленный хостинг или с одного удаленного хостинга на другой при помощи встроенной функции резервного копирования и специального скрипта restore.php, необходимо предварительно:
Следующий шаг - создание архива сайта. Выполнить действия по созданию архива можно на странице Резервное копирование (Настройки > Инструменты > Резервное копирование). Подробнее о создании архива сайта см. в уроках Резервное копирование курсов Администратор. Базовый и Администратор «Битрикс24 в коробке».
После этого можно непосредственно приступать к переносу сайта. Выполните действия в следующем порядке:
wget -b https://www.1c-bitrix.ru/download/scripts/restore.php
[/di]. Загрузите скрипт на сервер в корень сайта.
При размещении архива в облаке
|
---|
Если архив сайта был размещен на сайте (в облаке) клиента, то необходимо выбрать вариант Скачать резервную копию с другого сайта и указать путь к архиву: Если архив сайта был размещен в облаке 1С-Битрикс, то необходимо выбрать вариант Развернуть резервную копию из облака "1С-Битрикс" и указать активный лицензионный ключ: |
Во избежание повреждения сайта или утечки информации будут удалены файлы:
/restore.php
/файл резервной копии
(файл с расширением .tar.gz или .enc) /bitrix/backup/дамп базы
(файл с расширением .sql) Лицензия допускает создание двух и более сайтов на одном экземпляре системы. Перенос системы на другой хостинг в двухсайтовой конфигурации имеет свои особенности.
Прежде всего, многосайтовость должна быть настроена на разных доменах.
Во-вторых, несколько меняется общий порядок действий:
/bitrix
и /upload
:
Перенос сайта на хостинг лучше всего выполнять встроенными в Bitrix Framework средствами резервного копирования/восстановления.
Несмотря на то, что фактически сайт на «1С-Битрикс: Управление сайтом» представляет из себя набор файлов и базу данных, копирование файлов напрямую на удаленный сервер в большинстве случаев будет не верным решением. Из-за большого количества мелких файлов такое копирование может растянуться на несколько часов. Кроме того, использование стандартных механизмов позволяет избежать последующих возможных проблем с правами доступа к файлам сайта.
Среди часто возникающих проблем:
Самым простым решением в этом случае будет установка прав на все файлы и папки 777 (для Unix платформы) либо любой другой способ дать PHP запись на эти файлы.
Одним из простых, но не всегда работающих решений, является установка параметров в файле dbconn.php, позволяющих всем редактировать создаваемые через Bitrix Framework файлы.
define("BX_FILE_PERMISSIONS", 0666); define("BX_DIR_PERMISSIONS", 0777);
Однако для файлов, созданных через ftp/ssh, вам придется периодически изменять права вручную. Либо, если хостинг это поддерживает, устанавливать параметр umask.
PHP Fatal error: Unknown: Failed opening required '/home/bitrix/www/bitrix/modules/security/tools/start.php' (include_path='.:/usr/share/pear:/usr/share/php') in Unknown on line 0
Она вызывается если в корневом .htaccess прописан путь:
auto_prepend_file = /home/bitrix/www/bitrix/modules/security/tools/start.php
а реально бекап разворачивается в /home/bitrix/ext_www/sitename.ru
, например.
При переносе сайта на хостинг могут возникнуть различные нюансы из-за настроек PHP:
Проверьте, что ваш хостинг позволит организовать многосайтовость выбранным вами методом. Не все провайдеры позволяют корректно (для Bitrix Framework) создавать дополнительные сайты. Информацию об способах организации многосайтовости можно получить в учебном курсе Многосайтовость.
Некоторые хостинги не позволяют отправлять почту без авторизации. В этом случае для отправки письма с сайта вам необходимо будет переопределять функцию отправки почту в соответствии с документацией к продукту.
После распаковки резервной копии на всём сайте отображается только форма авторизации. Возможные причины и решения:
Решение: в настройках сайта изменить значение поля Путь к корневой папке веб-сервера для этого сайта на соответствующий путь на новом хостинге, нажав на ссылку Вставить текущий. Оставьте поле пустым, если все сайты работают на одном веб-сервере.
Решение 1: в корень сайта положить файл .access.php с содержимым:
<? $PERM["/"]["*"]="R"; ?>либо
Решение 2: через файловый менеджер продукта в свойствах корневой папки сайта на вкладке Доступ установить для группы Все пользователи (в том числе неавторизованные) право Чтение.
При просмотре архива, созданного штатной системой резервного копирования, через WinRar видно, что файлов в архиве гораздо меньше, чем на сайте.
Причина: дело в том, что у формата tar есть несколько диалектов. Система пакует архив в формате GNU tar, как это делает по умолчанию tar в Linux. WinRar понимает tar, но конкретно этот диалект поддерживает не полностью.
Резервный архив должен распаковываться системным restore.php, скачанным со страницы резервного копирования. Если и в этом случае часть файлов утеряна, проблему следует решать через техподдержку.
При распаковке резервной копии происходит ошибка: ERROR 1062 (23000) at line 1247: Duplicate entry '2-?' for key 2
.
Причина: Ошибка происходит, если кодировка, в которой сделан архив, отличается от используемой на новом сервере баз данных.
<? $DB->Query("SET NAMES 'utf8'"); ?>т.е архив будет создаваться в кодировке utf8.
character_set_server
после выполнения SQL-запроса:
show variables where Variable_name = 'character_set_server';
Обойти или устранить эту ошибку можно двумя способами:
character_set_server
на ту, в которой сделан архив.
SET NAMES `utf8`;Кодировка выбирается в зависимости от кодировки архива.
Часть ошибок (например: ошибка 404 при переходе подробную информацию новостей), возникающих при переносе сайтов связана с тем, что при переносе файл .htaссess переименовывается с добавлением "_". Для решения проблемы достаточно проверить имя файла и, при обнаружении ошибки, восстановить его.
В главе рассказывается о различных моментах в работе продукта: от настройки сервера до ошибок, возникающих при работе пользователей и функционировании баз данных.
Удаление приложения на удаленном компьютере состоит в удалении базы данных и всех файлов и папок из корневой папки вашего веб-сервера.
Настройка прав на сервере хостинг-провайдера может быть индивидуальна, но прежде всего должны быть установлены права на чтение/запись из скрипта для пользователя, под которым запущен веб-сервер 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 является подобием httpd.conf с той разницей, что действует только на каталог, в котором располагается, и на его дочерние каталоги. Файл .htaccess может быть размещен в любом каталоге. Директивы этого файла действуют на все файлы в текущем каталоге и во всех его подкаталогах, если только эти директивы не переопределены директивами нижележащих файлов .htaccess. Для того, чтобы файлы .htaccess можно было использовать, необходимы соответствующие настройки главного конфигурационного файла httpd.conf (значение директивы AllowOverride должно быть установлено как All). Пути к файлам и каталогам должны указываться от корня сервера.
При внесении изменений в файл .htaccess нет необходимости перезапускать сервер. Файл .htaccess проверяется при каждом обращении к серверу, так что изменения вступают в силу сразу после их внесения. Так как файл является служебным, он не доступен пользователям из веб-браузера.
В демонстрационном сайте файл .htaccess по умолчанию содержит следующие директивы:
Options -Indexes ErrorDocument 404 /404.php <IfModule mod_php5.c> php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 </IfModule> <IfModule mod_php7.c> php_flag session.use_trans_sid off #php_flag default_charset UTF-8 #php_value display_errors 1 </IfModule> <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On 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_flag session.use_trans_sid off
производит отключение подстановки идентификатора сессии в ссылке на сайте. php_value display_errors 1
, указывает на то, что включено разрешение на вывод сообщений о возникновении ошибок. Директива php_value error_reporting
определяет уровень ошибок, при возникновении которых будет выводиться сообщение. С помощью указанных директив можно настроить режим вывода интерпретатором PHP сообщений об ошибках. IfModule mod_rewrite.c
- это настройка правил для mod_rewrite
.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 дня. В некоторых случаях может не работать авторизация при обмене данными с 1С. Часто проблема возникает в результате работы php в режиме CGI. В этом режиме есть проблемы с передачей данных авторизации HTTP в php. Можно это проверить, посмотрев phpinfo() в разделе Server API: CGI
.
Можно обойти проблему, но необходимо чтобы на сервере была включена обработка .htaccess и поддержка mod_rewrite. Для этого выполните следующие действия:
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-авторизации воспользуйтесь скриптом.
При возникновении ошибки подключения к базе данных на экран выдается сообщение вида:
Для решения проблемы следует:
/bitrix/php_interface/dbconn.php
до версии 20.900.0 и файл /bitrix/.settings.php
с версии 20.900.0); Внешний вид сообщения об ошибке определяется в файле /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/.
Иногда возникает ситуация, когда сайт перестает отвечать, и посетителям отображается пустая страница. В этом случае рекомендуется открыть файл 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) позволяет получить описание ошибки по ее коду:
Если речь идет о повреждении базы данных, то рекомендуется воспользоваться встроенным инструментом системы для проверки и восстановления базы данных. Использование скрипта проверки и восстановления базы данных позволит оперативно восстановить работу сайта.
В случае, если повреждены таблицы статистики и нет возможности перейти в административный раздел, сбор статистики может быть временно отключен с помощью параметра ?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.
Рекомендуется использовать следующие параметры 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.
Ошибка сервера может быть вызвана различными причинами, поэтому ее диагностика достаточно сложна и трудоемка. Это не является ошибкой «1С-Битрикс: Управление сайтом». Она часто возникает на разделяемом хостинге из-за ограничения ресурсов системы.
При возникновении ошибки сервера в первую очередь необходимо просмотреть файл сервера error.log. В этом файле может содержаться строка с кодом ошибки.
Типичным примером причины возникновения ошибки сервера может быть превышение разрешенных прав на хостинге.
.htaccess
. В этом случае необходимо закомментировать либо удалить строку, содержащую неразрешенную директиву, в соответствующем файле (например, .htaccess
).
Таким образом, всё зависит от конфигурации сервера.
Важно понимать, указанные ограничения не настраиваются через настройки PHP в php.ini
.
В нормальной ситуации такая ошибка и её причина фиксируется в логах сервера. В этом случае пользователю рекомендуется обратиться к хостеру с просьбой указать, что является причиной возникновения ошибки и попросить её устранить (например, увеличить ресурсы). Если хостер не смог найти решение - обратитесь в техподдержку компании «1С-Битрикс» с точным указанием того, как ошибка происходит и какие причины указал хостер. Без указания причины ошибки техподдержка помочь вам не сможет.
С помощью специальных ВМ-решений вы можете быстро получить оптимально сконфигурированный сервер, не уступающий по производительности VMBitrix, а по масштабируемости - превосходящий виртуальную машину «1С-Битрикс». Пакеты подготовлены специалистами «1С-Битрикс» и доступны для скачивания и использования.
«1С-Битрикс»: Веб-окружение» - Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформе CentOS 7 (x86_64).
Скачать bitrix-env.sh.
«1C-Битрикс: Виртуальная машина 7.x» специально сконфигурирована для быстрого исполнения программных продуктов «1С-Битрикс»: разворачивается за минуты и сразу же готова к работе! На виртуальную машину можно не только установить ознакомительные версии продуктов «1С-Битрикс», но и перенести свои, уже готовые проекты.
Дистрибутивы VMBitrix доступны для:
Скачать образы.
Amazon EC2 - это веб-сервис, предоставляющий масштабируемые вычислительные мощности и созданный для быстрого и простого разворачивания веб-приложений на площадках (в облаках) Amazon. Специалистами «1С-Битрикс» подготовлены предконфигурированные образы VMBitrix (AMI-образы) для быстрого запуска приложений «1С-Битрикс» в Amazon EC2, которые включают:
Список ami-образов по регионам можно посмотреть на странице VMBitrix.
Работа с файлами в BitrixEnv осуществляется по протоколам SSH / SFTP. Протоколы FTP и SCP по умолчанию не поддерживаются.
Глава предназначена для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину VMBitrix. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В документе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине VMBitrix.
Описание установки ПО виртуализации не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации соответствующего ПО.
Если у вас возникнут вопросы по процессу установки продуктов компании «1С-Битрикс», вы можете обратиться в службу Технической поддержки. Обсуждение работы VMBitrix доступно на специализированном форуме или в группе Виртуальные машины Битрикс социальной сети компании «1С-Битрикс».
/path/to/openssl rsa -in /path/to/originalkeywithpass.key -out /path/to/newkeywithnopass.key
Изменения в актуальной версии BitrixVM.
Список изменений v 7.5.5 (декабрь 2023)
|
---|
Обновление ПО: php 8.1 Основные исправления: - PHP 8.1 используется по умолчанию. - Добавлена возможность обновить PHP до версии 8.3. - Добавлена возможность понизить версию PHP с 8.3 на версии ниже. |
Список изменений v 7.5.4 (октябрь 2023)
|
---|
Исправлена ошибка отображения пункта меню Upgrade PHP если используется PHP 8.1. |
Список изменений v 7.5.3 (октябрь 2023)
|
---|
- PHP 8.0 теперь версия по умолчанию, - реализована возможность повысить версию PHP до 8.2, - реализована возможность понизить версию PHP с 8.2 на 8.1 или на 8.0 и т.д., - доработаны правила для облачных хранилищ, - изменена логика dehydrated, - усилена безопасность.ю - исправлены ошибки, - Подняты версии nginx до 1.24.0, nodejs до 16. |
Список изменений v 7.5.2 (апрель 2022)
|
---|
Исправлена ошибка добавления slave MySQL. |
Список изменений v 7.5.1 (апрель 2022)
|
---|
- PHP 7.4 теперь версия по умолчанию, - реализована возможность повысить версию PHP до 8.1, - версия nginx поднята до 1.20.2, - реализована возможность понизить версию PHP с 8.1 на 8.0 и т.д., - изменен основной адрес репозитория, - исправлены ошибки. |
Обсуждение стабильной версии 7.5.x на форуме.
История стабильных версий VMBitrix v 7.*.*
Список изменений v7.4.4 (ноябрь 2020)
|
---|
Основные исправления: – Удалена устаревшая опция PHP mbstring.func_overload .Обновления главного модуля (main 20.100.0) требует удаления опции mbstring.func_overload . Эта опция более не требуется и не поддерживается платформой.На данный момент эту версию можно получить только через обновление виртуальной машины
|
Список изменений v7.4.3 (ноябрь 2019)
|
---|
Обновление ПО: – php 7.2 – nginx 1.16.1 Основные исправления: – PHP 7.2 используется по умолчанию. – В сборку nginx добавлен модуль Brotli (только для CentOS 7). – Исправлена ошибка обновления образов для VirtualBox (процесс зависал из-за ошибки в MySQL). – Исправлена ошибка в фразе при попытке установить окружение sh-скриптом на CentOS 8. |
Список изменений v7.4.2 (октябрь 2019)
|
---|
Основные исправления: – Изменен сервер выдачи сертификатов для Let's Encrypt, переход на версию API v2. API v1 будет окончательно отключен Let's Encrypt-ом 31 октября 2019. |
Список изменений v7.4.1 (август 2019)
|
---|
Основные исправления: – Исправлена ошибка определения статуса службы mysql на CentOS 6 в случае, если init.d-скрипт называется mysql. – Исправлена ошибка обновления ssl-сертификата в случае предоставления цепочки. – Исправлена ошибка обновления файла ssl_options.conf для службы nginx при обновлении пакета. |
Список изменений v7.4.0 (июль 2019)
|
---|
Обновление ПО: – nginx 1.16.0 Основные исправления: – nginx обновлен до версии 1.16.0, добавлена поддержка TLS 1.3. – В сборку nginx добавлен модуль PageSpeed (только для CentOS 7). – Обновлены настройки сайтов в связи с deprecated-опцией ssl on для nginx версии 1.16.0 и выше.– Для отдачи через nginx добавлены svg и woff2. – Исправлено автоматической определение смены IP-адреса для сетевого интерфейса. – Исправлена работа push-сервера после изменения IP-адреса машины. – Исправлено поведение, при котором файл resolv.conf очищался при конфигурации сетевого интерфейса, если указать DNS-сервер.– Исправлены некоторые фразы в меню виртуальной машины. – Добавлена возможность обновить PHP до версии 7.2. – Добавлено включение и выключение дополнительных модулей PHP в меню (curl, zip, dom, phar, xdebug, imagick). – Исправлены конфигурационные файлы окружения - заменена устаревшая опция mbstring.internal_encoding для версии PHP 7.0 и выше.– OpenVZ: исправлена установка и настройка виртуальной машины на OpenVZ-окружении. – OpenVZ: исправлена ошибка запуска сервисов роли мониторинг на OpenVZ-окружении. – Исправлена установка и настройка виртуальной машины на ОС, где полностью или частично отсутствуют iptables-модули. – Добавлена возможность выбора межсетевого экрана для CentOS 7 при первоначальной установке с помощью sh-скриптов. Добавлены опции: -F будет использоваться firewalld, -I будет использоваться iptables. По умолчанию используется iptables.– Исправлена ошибка пакета percona-release, возникающая при установке окружения sh-скриптом на чистый CentOS 6 или 7. – Исправлена ошибка при обновлении машин, возникающая при обновлении пакета percona-release. – Исправлена ссылка на пакет percona-release в задачах раздела MySQL. – Добавлена возможность настроить и откатить ssl-сертификаты для push-сервера, настроенного с помощью nginx-push-stream-module. – Исправлена процедура отката Lets Encrypt сертификата к начальному: сертификат удаляется для всех сайтов, на которых используется; удаляется его упоминание из настроек dehydrated. – Исправлена процедура автопродления Lets Encrypt сертификатов. – Исправлена работа NodeJS Push сервера для VMBitrix.CRM. – Добавлена возможность включить и выключить мониторинг через меню в VMBitrix.CRM. – Исправлены ошибки конфигурирования nagios и munin при включении мониторинга. – Исправлено отображение данных и графиков нагрузки сервера для сервиса munin на CentOS 7. – NTLM-настройки сайта теперь используют ssl-сертификат сайта в случаях: NTLM настроен, настраиваем ssl-сертификат сайта; ssl-сертификат сайта настроен, настраиваем NTLM. – Исправлена процедура введения хоста в ActiveDirectory. – Добавлена возможность использовать существующие NTLM-настройки для новых сайтов. – Уменьшили максимальное количество ядер ОС с 5 до 3. – Исправлено обновление конфигурации httpd при удаленном сайте по умолчанию. – Исправлен запуск сервиса crond при установке окружения sh-скриптом на CentOS 6. – Исправлена ошибка рассинхронизации времени в случае отсутствия файла /etc/localtime .– Исправлена ошибка отсутствия меню настройки localhost в случае отсутствия настроенного сетевого интерфейса (IP-адреса). – Исправлены ошибки в мастере включения Sphinx. – Для сайта типа link наличие папки images у сайта типа ext_kernel теперь не обязательно.– Virtual Hardware Version поднята до 12-ой версии в образах для VMWare и ESXi/vSphere. – Исправлена ошибка работы образа для 5-го поколения машин в Amazon EC2. Примечание: iptables теперь будет всегда использоваться по умолчанию для новых установок и образов. Если же у вас старый образ или установка до версии 7.4.0, то ничего не изменится: на CentOS 6 – iptables, на CentOS 7 – firewalld. Если же у вас новая установка или образ:
|
Обсуждение стабильной версии 7.4.x на форуме.
Список изменений v7.3.4 (декабрь 2018)
|
---|
Основные исправления: - Пакет push-server обновлен для корректной работы на CentOS 7.6. Исправлена ошибка запуска службы push-server через systemd. |
Список изменений v7.3.3 (сентябрь 2018)
|
---|
Основные исправления: - Добавлено автоматическое включение PHP-расширений zip и dom. Они стали обязательными, так как необходимы для работы модуля Генератор документов (documentgenerator). |
Список изменений v7.3.2 (август 2018)
|
---|
Основные исправления: - Добавлена возможность включить и выключить yum-репозиторий, хранящий бета версии пакетов виртуальной машины. - Исправлена опечатка в фразе меню, из-за которой не работало восстановление сертификата по умолчанию для сайта. |
Список изменений v7.3.1 (июль 2018)
|
---|
Обновление ПО: - push-server 2.0.0 Основные исправления: - Исправлено отображение пунктов обновления MySQL и PHP, если версия MySQL сервера 5.5 и PHP обновлен до 7.0. - Добавлено копирование цепочки сертификатов при настройке собственного ssl сертификата. - Облегчена генерация dhparam. - Исправлена блокировка работы меню при запущенном сценарии настройки. - Исправлен выход из меню для нескольких пунктов. - Исправлено поведение меню при включение мониторинга. |
Список изменений v7.3.0 (май 2018)
|
---|
Обновление ПО: - php 7.1 (устанавливается по умолчанию на новой виртмашине) - nginx 1.14.0 - hostname 1.0.0 Основные исправления: - Добавлено использование php версии 7.1 по умолчанию. - Исправлена настройка сертификатов при настроенном https доступе к сайту. - Исправления по настройкам пакета (опция в dbconn.php и зависимости от ethtool). |
Обсуждение стабильной версии 7.3.x на форуме.
Список изменений v7.2.2 (декабрь 2017)
|
---|
Основные исправления: -- Исправили ошибку дублирования настроек ntlm для сервиса httpd-scale. |
Список изменений v7.2.1 (декабрь 2017)
|
---|
Основные исправления: -- Ошибка при создание сайта с указанием расширенных параметров (bitrix_utils.sh: line 160: read: `-r': not a valid identifier). -- Фраза в настройках почты для сайта. |
Список изменений v7.2.0 (декабрь 2017)
|
---|
Обновление ПО: - nginx 1.12.2 Основные исправления: WEB01: Добавлена поддержка установки сертификатов (собственных и Lets Encrypt) для сайтов типа kernel и link. WEB02: Добавлена возможность вернуть "дефолтный" ssl сертификат сайта. WEB03: Исправлены ошибки настройки web-кластера. HOST01: Добавлена возможность изменения имени хоста после создания пула серверов. MYSQL01: Исправлена процедура обновления настроек MySQL серверов в пуле. SITE01: Фиксы безопасности для конфигурационных файлов nginx и httpd. SITE02: Исправлены ошибки создания сайтов в случае, если на сервере нет ни одного рабочего сайта. MONITOR01: Добавлено удаление серверов с мониторинга при их удаление из пула серверов. |
Обсуждение версии 7.2.x на форуме.
«1С-Битрикс: Веб-окружение» - Linux (BitrixEnv) будет полезно:
«1С-Битрикс: Веб-окружение» - Linux позволяет быстро и с минимальными затратами развернуть оптимальное окружение для работы продуктов и решений «1С-Битрикс» на Linux-платформе CentOS 7 (x86_64):
Рассмотрим установку «1С-Битрикс: Веб-окружение» - Linux на оборудовании с уже установленной CentOS 7 (Minimal) (x86_64).
yum clean all && yum update
Загружаем скрипт «1С-Битрикс: Веб-окружение» - Linux и запускаем его командами:
wget https://repo.bitrix.info/yum/bitrix-env.sh && chmod +x bitrix-env.sh && ./bitrix-env.sh
yum install wget
reboot
:
После перезагрузки сервера снова продолжите установку BitrixEnv:
./bitrix-env.sh
exit
С версии 7.1 появилась возможность создания пула в «тихом» режиме, когда после установки окружения VMBitrix запускается сразу создание пула с нужным именем хоста и паролем для root MySQL.
./bitrix-env.sh [-s] [-p [-H hostname]] [-F] [-m mysql_version] [-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). -F
– Будет использоваться в качестве файрвола firewalld. -I
– Будет использоваться в качестве файрвола iptables (по умолчанию). -M
– Пароль root для MySQL (Mysql password for root user).-m 5.7
– установить MySQL 5.7 (по умолчанию).-m 8.0
– установить MySQL 8.0.Пример использования:
Запустить установку окружения в «тихом» режиме, использовать файрвол firewalld, создать пул с именем хоста server1, MySQL 8.0 и задать пароль root пользователя MySQL - 111111.
./bitrix-env.sh -s -p -H server1 -F -m 8.0 -M '111111'
Узнать список всех ключей запуска установки можно командами для VMBitrix и VMBitrix.CRM соответственно:
./bitrix-env.sh -h ./bitrix-env-crm.sh -h
Для перехода к выполнению любого действия в меню виртуальной машины введите число и нажмите Enter. Например, для настройки локального виртуального сервера в строке наберите 2 (Manage localhost) и нажмите Enter.
Чтобы вернуться из командной строки (если нажали 0. Exit или Ctrl+C) обратно в меню VMBitrix, введите в консоли команду:
/root/menu.sh
Работа с файлами в VMBitrix осуществляется по протоколам SSH / SFTP. Протоколы FTP и SCP по умолчанию не поддерживаются.
Каждая платформа имеет свои термины, используемые в работе. Чтобы без проблем ориентироваться в документации, учебных курсах, в помощь вам приведен словарь терминов системы.
Загрузите подходящий вам дистрибутив настроенной виртуальной машины BitrixVM.
С:\BitrixVM\
и запустите виртуальную машину с помощью подходящего ПО:
Linux
CentOS 64-bit
root
, а в поле Password пароль: bitrix
.
bitrix
) и нажмите Enter. Аналогично происходит смена пароля пользователя bitrix:
Виртуальный сервер готов для дальнейшего использования.
exit
Посмотреть краткий процесс установки BitrixVM для запуска сайта на «1С-Битрикс: Управление сайтом» можно в видеороликах на нашем Youtube канале:
Для перехода к выполнению любого действия меню виртуальной машины введите число и нажмите Enter. Например, для настройки локального виртуального сервера в строке наберите 2 (Manage localhost) и нажмите Enter.
Чтобы вернуться в вашу ОС, нажмите Ctrl+Alt (VMWare Player).
Чтобы вернуться из командной строки (если нажали 0. Exit) обратно в меню виртуальной машины, введите в консоли команду:
/root/menu.sh
Если вы запускаете несколько хостов в одной BitrixVM на локальном компьютере или в пределах вашей локальной сети, то можно указать для этих сайтов вместо IP свои выдуманные домены, предварительно прописав в файле hosts операционной системы или на сервере DHCP вашей сети. Тогда вы сможете обращаться к сайтам по доменным именам, но только в пределах вашего компьютера или вашей локальной сети.
Если при работе с BitrixVM возникли ошибки работы мастеров, то логи мастеров можно просмотреть в папке /opt/webdir/temp/
.
VMBitrix.CRM собирается на базе BitrixVM. Это готовое решение для CRM – внутри машины тоже самое, что и в основной машине BitrixVM.
Но у него есть отличия:
При старте сразу:
Скачать его можно с сайта 1С-Битрикс под нужный вид виртуализации.
Далее нужно только установить Битрикс24.CRM (или восстановить копию), настроить почту и ssl-сертификат. И у вас готовый Битрикс24 с CRM!
Для отдельного сервера на базе CentOS 7 можно загрузить скрипт установки VMbitrix.CRM через консоль и запустить его командами:
wget http://repo.bitrix.info/yum/bitrix-env-crm.sh && chmod +x bitrix-env-crm.sh && ./bitrix-env-crm.sh
Также для VMBitrix.CRM есть вариант поставки exe-файла для тех, кто хочет в пару кликов познакомиться с Битрикс24.CRM и не обладает достаточными техническими знаниями. Совместим с Windows 7, 8, 10, Windows Server 2008 2012 2016.
Этот инсталлятор:
После останется установить Битрикс24.CRM или восстановить копию проекта.
Установка и перенос продуктов «1С-Битрикс» может быть осуществлена несколькими способами.
Для установки продукта «1С-Битрикс» нужно:
Перейти по адресу [dw]bitrix url[/dw][di][/di], указанному в BitrixVM или BitrixEnv в браузере. Откроется страница с выбором варианта установки:
Для продолжения необходимо выбрать один из вариантов:
Установить - в этом случае будет запущен мастер, который позволяет скачать и установить новый сайт средствами продуктов компании «1C-Битрикс». Шаги этого варианта аналогичны шагам, рассмотренным в главе Установка продукта с помощью BitrixSetup.
Восстановить копию - в этом случае будет запущен мастер, с помощью которого можно будет перенести существующий проект (восстановить проект из резервной копии).
Что должно быть готово перед переносом?
Для переноса сайта с хостинга (облака) или локального сервера на виртуальную среду BitrixVM или BitrixEnv необходимы: архив сайта и настроенная виртуальная среда BitrixVM или BitrixEnv.
После успешного создания архива сайта он будет доступен на странице [dw]Список резервных копий[/dw][di][/di] (Настройки > Инструменты > Список резервных копий) .
Воспользуйтесь командой [dw]Получить ссылку для переноса[/dw][di][/di] в меню действий (ссылка доступна только для локально размещенной копии) и в появившемся окне скопируйте её в буфер обмена:
Также можно скачать архив сайта на локальный компьютер с помощью пункта меню Скачать.
Перенос сайта в виртуальную среду BitrixVM/BitrixEnv
Запустить предварительно настроенную виртуальную среду BitrixVM или BitrixEnv.
В адресной строке браузера ввести http://адрес_виртуальной_машины/ (можно указать домен или ip-адрес).
Настройки подключения к MySQL по умолчанию в BitrixVM/BitrixEnv берутся из /home/bitrix/www/bitrix/php_interface/dbconn.php
.
Можно указать собственные параметры подключения к MySQL - в этом случае необходимо еще выбрать опцию Создать базу данных, если не существует.
Ошибка "Call to undefined function mysqli_init()"
При переходе на новую версию платформы BitrixVM/BitrixEnv может возникнуть ошибка - "Call to undefined function mysqli_init()". Причина ошибки в том, что раньше в БД MySQL использовалось расширение mysql (объявлено устаревшим в PHP 5.5.0), а в новых версиях - mysqli.
Решение проблемы:
\bitrix\php_interface\dbconn.php
добавить:
define("BX_USE_MYSQLI", true);
\bitrix\.settings.php
:
'className' => '\\Bitrix\\Main\\DB\\MysqlConnection',поменять на:
'className' => '\\Bitrix\\Main\\DB\\MysqliConnection',
/etc/php.d/30-mysqli.ini
(или в подобном):
extension=mysqli.so
Cделать рестарт httpd:
service httpd restart
systemctl restart httpd.service
Возможные проблемы и их решение |
При установке BitrixVM могут возникать ошибки, связанные с особенностями вашего ПК или с дистрибутивом.
Ниже список типовых проблем и способы их решения:
Не нашли свою проблему в списке? Переустановка часто помогает: удалите виртуальную машину, затем снова ее установите и скачайте дистрибутив продукта.
Программа для виртуальных машин (например, VMWare или VirtualBox) не поддерживает оборудование компьютера и выдает ошибку о несовместимости с процессором «Unsupported CPU detected. The host CPU does not support the necessary hardware requirements».
Как решить:
При запуске виртуальной машины появляется черный экран и сразу пропадает, а BitrixVM не стартует. Или появляется ошибка включающая слова [dw]VT-x, AMD-V, virtualization[/dw][di]Формулировка может быть вида «This host does not support "Intel EPT" hardware assisted MMU virtualization» или «This host supports Intel VT-x, but Intel VT-x is disabled».[/di].
Как решить:
Вы запускаете виртуальную машину и появляются ошибки, связанные с адаптером (adapter). Или сайт не открывается по IP и отображает сообщение «Не удается получить доступ к сайту».
Как решить:
Поле [dw]bitrix url[/dw][di][/di] отсутствует и IP4 имеет статус undefined.
Как решить:
При попытке открыть сайт по [dw]bitrix url[/dw][di][/di] после установки BitrixVM появляется ошибка «[dw]502 Bad Gateway/Bitrix Environment[/dw][di][/di]» или сообщение о том, что «Время ожидания ответа истекло».
Как решить:
Во время скачивания дистрибутива с сервера:
Как решить:
Процесс скачивания дистрибутива не быстрый и иногда файл скачивается с ошибками. Это может проявиться по-разному: ошибками в мастере установки или символами �. Пример пользователя:
Как решить: удалите виртуальную машину, вновь установите её и скачайте дистрибутив продукта.
Разработка виртуальной машины — процесс долгий и возможны ситуации, когда версии PHP или MySQL отстают от требований дистрибутива. В этом случае мастер установки обязательно подскажет вам, что их нужно обновить:
Как решить: обновите PHP и MySQL через меню BitrixVM.
Сначала необходимо выполнить подготовительные работы:
Подготовительные работы по настройке сервера выполнены и стало доступно [dw]меню виртуальной машины[/dw][di][/di]. Теперь можно обновить PHP и MySQL. Подробно об этом написано в уроке 8. Обновление PHP и MySQL (8. Update PHP and MySQL) отдельного курса по виртуальной машине.
Для начала работы с сервисами нужно создать и настроить пул сервера. Для этого нужно выбрать пункт главного меню 1. Create Management pool of server и ввести название сервера в данном пуле.
Мастер создания пула откроет все необходимые порты в CentOS для корректной работы сервисов продуктов «1С-Битрикс»:
Для большинства проектов достаточно всего лишь одного сервера в пуле, который создается на начальном этапе установки BitrixEnv (см выше). Добавление дополнительных может понадобится для масштабирования системы и распределения нагрузки между несколькими физическими серверами. Это делается назначением специальных ролей каждому серверу в пуле. Если у вас нет дополнительных физических машин, то необходимости добавления их в пул нет.
После создания пула в основном меню добавятся новые пункты в главном меню:
Добавление нового сервера в пул (кластер) осуществляется с помощью меню 1. Manage servers in the pool > 1. Add new host to the pool.
Для этого необходимо задать ip-адрес или DNS-имя сервера, выбрать короткое имя (в примере - server2) и ввести пароль root для подключаемого сервера:
Таким образом, можно добавлять любое количество серверов в пул:
Теперь можно управлять любым сервером пула с одной машины.
/opt/webdir/temp
.Удаление хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage servers in the pool > 2. Remove host from the pool . Если на хосте есть хоть какие-то роли, то удаление хоста невозможно.
Для этого необходимо задать ip-адрес или DNS-имя хоста удаляемого из пула сервера:
После подтверждения сервер будет удален из пула:
/opt/webdir/temp
.Перезагрузка хоста, находящегося в пуле, осуществляется с помощью меню 1. Manage servers in the pool > 3. Reboot host.
Для этого необходимо задать имя хоста (в данном примере - server2) и согласиться на перезапуск сервера:
С помощью менеджера пула можно удаленно обновлять Веб-окружение и компоненты системы на любом хосте, входящем в пул.
Например, в пул добавлена виртуальная машина версии 7.4.0, нам нужно обновить ее до 7.4.х.
Таким же образом можно обновлять включенные в пул виртуальные машины ранних версий.
/opt/webdir/temp
.Смена пароля для пользователя bitrix осуществляется через пункт меню 1. Manage servers in the pool > 5. Change 'bitrix' user password on host.
Будет выдан запрос имени хоста, на котором нужно сменить старый пароль пользователя bitrix, указать новый и дать согласие на смену:
passwd
.Настройка таймзоны – очень важный параметр, который обязательно нужно проверить и при необходимости настроить правильно. Параметр влияет на синхронизацию с 1С, календари, заказы и многое другое, где требуется дата и время.
Дата и время на сервере – это не одна конкретная дата и время, а фактически три различных времени:
Каждое из них – со своим часовым поясом.
Europe/Moscow (MSK, UTC+03)
. Смена таймзоны происходит через пункт меню веб-окружения 1. Manage servers in the pool > 6. Configure pool timezone, и меняет дату и время в трёх местах сразу. Это очень важный момент, чтобы все три места работали с одинаковыми параметрами.
Удаление конфигурации пула осуществляется с помощью меню 1. Manage servers in the pool > 7. Remove pool configuration. После подтверждения конфигурация пула будет удалена:
Меню же вернется к своему первоначальному состоянию:
/opt/webdir/temp
.Обновлять версии PHP и MySQL необходимо, исходя из рекомендуемых системных требований продуктов «1С-Битрикс».
В процессе обновления VMBitrix они автоматически не обновляются. Обновить их нужно в ручном режиме с помощью соответствующего пункта меню виртуальной машины 1. Manage servers in the pool - 8. Update PHP and MySQL.
Укажите для обновления машину с конкретным именем хоста hostname:
Далее можно выбрать варианты, что именно обновить:
Для обновления версии выберите подходящий пункт Update PHP to version х.х:
Аналогичным способом можно и понизить версию PHP, выбрав нужную с помощью пункта меню Downgrade PHP to version х.х. Для VMbitrix.CRM минимальная версия – 7.0.
Если вы обновили VMBitrix до версии 7.1 и выше, то у вас появится возможность обновить версию MySQL до 5.7 Percona DB. Сделать это можно, выбрав пункт Upgrade MySQL to 5.7 version:
После обновления MySQL до версии 5.7 появится возможность обновить MySQL до версии 8.0 – Upgrade MySQL to 8.0 version:
/opt/webdir/temp
.
Если обновления объёмные
|
---|
Чтобы избежать проблем при обновлении нескольких версий самой Виртуальной машины (BitrixVM), а также PHP или SQL, сделайте это в пошаговом режиме. Примерно в таком порядке:
|
Смена имени хоста в пуле осуществляется через пункт меню 1. Manage servers in the pool > 9. Change hostname.
Будет выдан запрос имени хоста, на котором нужно сменить его старое имя, указать новое и дать согласие на смену:
После успешного выполнения задачи, будет сохранено новое название:
При разработке своих решений на основе виртуальной машины BitrixEnv/VMBitrix.CRM, может понадобиться отслеживание изменений в ее версиях файлов и новых возможностей. Для этого вы можете включить репозиторий бета-версии BitrixEnv/VMBitrix.CRM или подключить репозиторий исходников виртуальной машины и отслеживать все изменения.
Если у вас стабильный вариант, вам нужно обновить BitrixEnv/VMBitrix.CRM до 7.3.2 или выше.
Затем необходимо обязательно обновить пакеты через меню машины либо командой:
yum clean all && yum update
Выполнить команду:
yum clean allВ строке со списком репозиториев для беты будет
bitrix-beta
, для стабильной bitrix
. Например:
Cleaning repos: base bitrix-beta bitrix-source epel ...
Чтобы задать имя хоста локального сервера, нужно перейти в главном меню 2. Manage localhost - 1. Configure hostname.
Далее согласиться на изменение и ввести название Input hostname, например, server1 (по умолчанию это localhost.localdomain):
После чего системе будет присвоено новое имя:
При первом старте BitrixVM получение IP-адреса сервером происходит автоматически, если в сети есть настроенный DHCP-сервер.
Чтобы с помощью него сменить или обновить IP-адрес локального сервера, нужно:
Для задания IP-адреса в ручном режиме необходимо:
Чтобы перезапустить сервер виртуальной машины BitrixVM, нужно перейти в главном меню 2. Manage localhost - 4. Reboot server.
Далее согласиться на перезапуск сервера:
Чтобы выключить сервер виртуальной машины BitrixVM, нужно перейти в главном меню 2. Manage localhost - 5. Shutdown server.
Далее согласиться на остановку сервера:
Для обновления локальной виртуальной машины необходимо выбрать в административном меню пункт 2. Manage localhost - 6. Update server и согласиться на обновление.
Скрипт автоматически проверит обновления компонентов и произведет их установку.
Failing package is: Percona-Server-Client-57-5.7.25-28.1.el7.x86_64 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PerconaТо нужно выполнить команду обновления пакета Percona:
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
И далее запустить обновление заново через меню.
Если после обновления, что-то перестанет работать, то можно вернуть полностью или частично старые файлы настроек соответствующей службы, т.к. конфигурационные файлы при обновлении не перезаписываются, а сохраняются в файлах *.ori.(метка времени).
mv -f /etc/php.d/(имя модуля).ini.disabled /etc/php.d/(имя модуля).ini service httpd restart
Если в процессе обновления появится ошибка, что недостаточно места в загрузочном разделе /boot:
At least 26MB more space needed on the /boot filesystem.То нужно в /etc/yum.conf установить
installonly_limit=2
. package-cleanup --oldkernels --count=2
/opt/webdir/temp
.При разработке своих решений на основе виртуальной машины BitrixEnv/VMBitrix.CRM, может понадобиться отслеживание изменений в ее версиях файлов и новых возможностей. Для этого вы можете включить репозиторий бета-версии BitrixEnv/VMBitrix.CRM или подключить репозиторий исходников виртуальной машины и отслеживать все изменения.
Если у вас стабильная версия машины, вам нужно обновить BitrixEnv/VMBitrix.CRM до 7.3.2 или выше.
Затем необходимо обязательно обновить пакеты через меню машины либо командой:
yum clean all && yum update
Выполнить команду:
yum clean allВ строке со списком репозиториев для беты будет
bitrix-beta
, для стабильной bitrix
. Например:
Cleaning repos: base bitrix-beta bitrix-source epel ...
Чтобы обновить настройки для всех MySQL-серверов, нужно перейти в главном меню 3. Configure MySQL service for the pool - 1. Update settings for all MySQL servers:
Опция обновляет конфигурацию одного или нескольких MySQL-серверов в пуле (если такое имеется) и приводит их к дефолтным настройкам для виртуальной машины.
/opt/webdir/temp
.Если вам понадобилось сменить пароль root MySQL-сервера, нужно перейти в главном меню 3. Configure MySQL service for the pool - 2.Change password for MySQL root user.
Далее выбрать нужный сервер (имя хоста), согласиться на изменение и ввести новый пароль.
Остановить или запустить MySQL-сервер можно в главном меню 3. Configure MySQL service for the pool - 3. Stop/Start MySQL service on the server .
Далее выбрать нужный сервер (имя хоста), согласиться на остановку или старт:
В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластерную конфигурацию master-slave «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».
Ключевые особенности:
Схема «master - slave» реализуется средствами MySQL. Платформа «1С-Битрикс» позволяет гибко балансировать нагрузку между серверами, участвующими в репликации.
Для создания slave сервера MySQL нужно:
/opt/webdir/temp
.Для переноса master сервера MySQL на другую машину необходимо:
Таким образом, мы перенесли master сервер MySQL с машины server1 на server2.
/opt/webdir/temp
.Для удаления slave сервера MySQL необходимо:
Таким образом, мы освободили ресурсы машины server1 под другие роли.
/opt/webdir/temp
.Продукты «1С-Битрикс» позволяют использовать пул серверов memcached для работы с кешем данных.
Это обеспечивает:
Для создания memcached сервера нужно:
/opt/webdir/temp
.Чтобы обновить настройки для всех memcached -серверов, нужно перейти в главном меню 4. Configure memcached servers - 2. Update settings on all memcached servers:
Эта опция запускает проверку текущей конфигурации одного или нескольких memcached-серверов в пуле (если такие имеются).
/opt/webdir/temp
.Для удаления memcached сервера необходимо:
/opt/webdir/temp
.При разворачивании проектов на базе BitrixVM/BitrixEnv необходимо следить за состоянием сервера и отдельных его компонентов.
В составе BitrixVM/BitrixEnv уже имеются системы мониторинга - Munin и Nagios, которые имеют большое количество различных компонентов по отслеживанию функционирования всех систем сервера или нескольких серверов в составе кластера.
Для начала работы систем мониторинга необходимо:
Логины / пароли по умолчанию (рекомендуется сменить на свои):
Nagios: nagiosadmin / nagiosBitrixMon
Munin: admin / muninBitrixMon
Далее нужно будет указать e-mail для системных уведомлений Nagios и данные почтового сервера для отправки e-mail. Если отказаться, будет по умолчанию использоваться e-mail root-пользователя:
y
и введите логин и пароль для доступа к SMTP-серверу, в противном случае - n
.auto
, plain
, scram-sha-1
, cram-md5
, gssapi
, external
, digest-md5
, login
, ntlm
.y
, в противном случае - n
.Затем мастер сделает необходимые настройки и запустит сервисы мониторинга сервера.
/opt/webdir/temp
.Для мониторинга сервера из браузера нужно зайти по адресам и авторизоваться под учетными записями мониторинга:
Проверить работу нотификаций можно легко:
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 и Munin необходимо:
/opt/webdir/temp
.Если запущены системы мониторинга серверов и был добавлен новый хост в кластер, то система сама отследит новую машину и запустит задачу на добавление этой машины в мониторинг.
Пункт меню 5. Configure pool monitoring > 3. Add new host(s) on monitoring позволяет вручную запустить добавление нового хоста в систему мониторинга, если по каким-либо причинам он не добавился в мониторинг:
/opt/webdir/temp
.Мастер создания дополнительных сайтов, позволяет развернуть на одной виртуальной машине несколько сайтов, как на независимых установках «1С-Битрикс», так и в рамках многосайтовости.
Для добавления дополнительного сайта необходимо:
/etc/hosts
на виртуальной машине, а также на всех компьютерах, с которых будет осуществляться доступ к данному сайту. UTF-8
или windows 1251
(для ядра типа kernel и ext_kernel).y
(для ядра типа kernel и ext_kernel)./home/bitrix/ext_www/{название_хоста}
, в которой будут:
/home/bitrix/ext_www/{название_хоста}
, то в списке сайтов виртуальной машины данное ядро не появится до тех пор, пока не будет создан хотя бы один сайт (link) на это ядро./opt/webdir/temp
.Для удаления записи о дополнительном сайте необходимо в административном меню выбрать пункт 6. Configure pool sites > 2. Delete site и выбрать директорию удаляемого сайта (Enter site directory):
/opt/webdir/temp
.По умолчанию в виртуальной машине cron уже включен. Если по каким-либо причинам нужно отключить эту службу, то для этого необходимо:
Аналогичным способом осуществляется и включение службы:
Для настройки SMTP-клиента выполните следующее:
y
и введите логин и пароль для доступа к SMTP-серверу, в противном случае - n
.auto
, plain
, scram-sha-1
, cram-md5
, gssapi
, external
, digest-md5
, login
, ntlm
(например для yandex.ru достаточно auto
, а для mail.ru - plain
).y
, в противном случае - n
.Дождаться пока задача по настройке SMTP будет закончена.
В логах msmtp можно всегда посмотреть ошибки отправки писем. Находятся логи в директории /home/bitrix/.
Для каждого сайта свой лог msmtp, в названии лога будет указано имя сайта – msmtp_{SiteName}.log. Например для сайта по умолчанию лог будет иметь имя msmtp_default.log.
/opt/webdir/temp
.Здесь представлены настройки некоторых почтовых сервисов.
Доступно подключение как через обычный пароль, так и через пароль приложения (рекомендуемый).
Доступно подключение как через обычный пароль (с подтверждением аккаунта), так и через пароль приложения (рекомендуемый).
Доступно подключение как через обычный пароль, так и через пароль приложения (рекомендуемый).
Дополнительно
Настройки для других smtp сервисов можно взять по ссылкам:
В логах msmtp можно всегда посмотреть ошибки отправки писем. Находятся логи в директории /home/bitrix/.
Для каждого сайта свой лог msmtp, в названии лога будет указано имя сайта – msmtp_{SiteName}.log. Например для сайта по умолчанию лог будет иметь имя msmtp_default.log.
Например, у Яндекса и Google по умолчанию лимит на отправку – 500 писем в сутки. Если в письме несколько получателей, то письмо каждому из них считается отдельным письмом. Этот ежесуточный лимит может изменяться на основании их собственных алгоритмов подсчета благонадежности пользователя.
По умолчанию в виртуальной машине включена поддержка доступа к сайтам через протоколы HTTP и HTTPS.
Если необходимо оставить доступ к сайту только по защищенному протоколу HTTPS, то для этого нужно:
Аналогичным способом осуществляется возврат доступа к сайту по протоколу HTTP:
/opt/webdir/temp
.При разворачивании проектов на базе BitrixVM/BitrixEnv, часто встает задача создания резервной копии проекта по расписанию.
В BitrixVM/BitrixEnv есть функционал автоматического резервного копирования сайта и базы данных. Бекап будет создан по расписанию в виде архива .tar.gz и записан в директории /home/bitrix/backup/archive/
.
У данного способа есть как преимущества, так и недостатки в сравнении с встроенным в продукты «1С-Битрикс» механизмом создания резервной копии:
Для создания расписания автоматического резервного копирования средствами BitrixVM/BitrixEnv необходимо:
Если необходимо выполнить более точную настройку бэкапов, можно воспользоваться утилитой командной строки:
/opt/webdir/bin/bx-sites -a backup -d dbcp --enable --minute=10 --hour=18 --day=any --month=any --weekday=any
/etc/crontab
) добавляется задача резервного копирования проекта.
Бэкап делается для ядра (сайта типа kernel и ext_kernel) и всех его link, если такие существуют. Для этого создается задание в crontab-файле. Например:
10 22 * * * bitrix /opt/webdir/bin/bx_backup.sh sitemanager /home/bitrix/backup/archive
В качестве первой опции указывается имя БД, второй опцией указывается каталог, в котором будет создан архив.
В итоге скрипт создаст архив следующего вида: www_backup_
Внутри архива должны присутствовать следующие файлы:
/home/bitrix/mysql_dump__DD.MM.YYYY_.sql
-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
Как уже сказано выше, в бэкап включается:
/home/bitrix/mysql_dump_<db>.sql
);Например команда:
/opt/webdir/bin/bx_backup.sh sitemanager /home/bitrix/backup/archive
создает в директории /home/bitrix/backup/archive/ архив www_backup_<DBName>_DD.MM.YYYY_<random_string>.tar.gz, например www_backup_sitemanager_09.03.2023_zJ34ogIj.tar.gz:
Для восстановления нужно распаковать бэкап в DocumentRoot
ядра. В примере рассмотрим директорию для сайта по умолчанию /home/bitrix/www:
tar -xvzf /home/bitrix/backup/archive/www_backup_sitemanager_09.03.2023_zJ34ogIj.tar.gz -C /home/bitrix/www/
После чего нужно восстановить БД:
mysql sitemanager < /home/bitrix/www/home/bitrix/mysql_dump_sitemanager_09.03.2023_zJ34ogIj_after_connect.sql
Аналогичной командой нужно восстановить другой файл с бекапом базы данных сайта:
mysql sitemanager < /home/bitrix/www/home/bitrix/mysql_dump_sitemanager_09.03.2023_zJ34ogIj.sql
Затем восстановите данные дополнительных сайтов типа link, если они есть:
rsync -av /home/bitrix/www/home/bitrix/ext_www/<site_name> /home/bitrix/ext_www/
Далее удалите дамп базы данных и бэкапы дополнительных сайтов в целях безопасности.
rm -fr /home/bitrix/www/home/bitrix/*
Если копия восстанавливается на другом сервере, то сначала нужно создать восстанавливаемые сайты в меню VMBitrix. Также пароль от БД в архиве не подойдет к БД нового сервера, так как пароли генерируются случайным образом после установки новой виртуальной машины.
То есть после восстановления нужно сменить пароль пользователя базы данных. Эти данные можно взять в секции connections
файла /bitrix/.settings.php после распаковки архива бэкапа (для сайта по умолчанию пользователь базы данных – bitrix0
).
Сменить пароль можно SQL запросом в консоли mysql:
SET PASSWORD FOR 'bitrix0'@'localhost' = PASSWORD('new_pass');
Затем восстановить дампы базы данных и бэкапы дополнительных сайтов.
Аналогичные действия нужно провести, если в качестве DocumentRoot
для сайтов использовалась директория /home/bitrix/ext_www.
Настройка NTLM-авторизации...
После включения и настройки механизм начинает работать следующим образом:
Более подробно ознакомиться с работой механизма можно в уроке NTLM-авторизация в стороннем окружении курса Администратор. Базовый.
Рассмотрим настройку NTLM-авторизации на примере:
Продукт «1С-Битрикс» готов к использованию NTLM-авторизации, осталось настроить виртуальную машину.
Для настройки виртуальной машины необходимо подключитьcя к ней под пользователем root, выбрать пункт меню 6. Configure pool sites > 7. Configure NTLM auth for all sites и ввести необходимые данные:
После подтверждения корректности введенных данных мастер настроит и запустит все необходимые службы, а также подключит виртуальную машину в домен.
net ads testjoin
Настройка завершена, для успешной NTLM-авторизации осталось проверить настройки браузеров.
Для успешной работы механизма нужно, чтобы веб-сервер находился в зоне Local Intranet (при необходимости нужно добавить):
Добавить веб-сервер к списку доверенных URI для автоматической NTLM-авторизации (через параметр network.automatic-ntlm-auth.trusted-uris
на странице Firefox: about:config)
Мастер позволяет управлять работой сервисов XMPP и SMTP с помощью Cron. Это может понадобится, если необходимо рассылать jabber- и почтовые сообщения в случае, если на сайте нет активности, т.е если все события на сайте работают на хитах.
Для управления необходимо:
Аналогичным образом отключается данные опции:
/opt/webdir/temp
.Управление настройками композитного кеша для NGINX находятся в меню виртуальной машины: 6. Configure pool sites > 9. Configure nginx for composite:
Эта настройка выполняет следующие действия:
/etc/nginx/bx/maps
. Например, включен или выключен композит для https-запросов.Для включения или обновления настроек:
/opt/webdir/bin/bx-sites -o json -a composite --enable --site=default
Для отключения настроек:
/opt/webdir/bin/bx-sites -o json -a composite --disable --site=default
/opt/webdir/temp
.После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.
Заголовки при использовании Композита в BitrixVM могут быть такие:
X-Bitrix-Composite:Nginx (file)
- отдача страниц - NGINX, хранение - файлы;X-Bitrix-Composite:Nginx (memcached)
- отдача страниц - NGINX, хранение - memcached;X-Bitrix-Composite:Cache (200)
- отдача страниц - PHP, хранение - файлы.Условия разделены на две группы:
Настройки определяются в файле: /etc/nginx/bx/maps/composite_settings.conf
. NGINX не использует технологию Композитный сайт, если соблюдается хотя бы одно условие:
BX_ACTION_TYPE
,BX_AJAX
,ncc
,bxajaxid
,sessid
,Определение условий сделано через 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, где:
NGINX не будет использовать композитный кеш, если выполняется хотя бы одно из условий:
~EXCLUDE_PARAMS
в .config.php),DOMAINS
в .config.php),~INCLUDE_MASK
в .config.php),~EXCLUDE_MASK
в .config.php).Определение условий сделано через http_ngx_map_module:
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 будет искать в композитном кеше (ключ для memcached хранилища, файл в случае хранения на файлах). Он нужен для того, чтобы привести запрос на сайт (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; }
Действуют следующие правила:
Проверки для включения технологии на стороне NGINX используются в конфигурационном файле сайта, который в виртуальном окружении находится в каталоге /etc/nginx/bx/site_enabled
. В случае стандартной конфигурации, файл обычно содержит следующие настройки:
# Include parameters common to all websites include bx/conf/bitrix.conf;
При включенной технологии Композитный сайт, настройки зависят от выбранного хранилища.
Указанные в этом подразделе настройки производить не нужно. Здесь для ознакомления дано описание того, что происходит при включении настроек NGINX на технологию Композитный сайт в BitrixVM.
/bitrix/html_pages/.config.php
опция STORAGE содержит значение files
./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; }
/bitrix/html_pages/.config.php
опция STORAGE содержит значение memcached
или memcached_cluster
.
/etc/nginx/bx/site_enabled
, должно быть прописано:
# устанавливаем параметры подключения для memcached memcached_connect_timeout 1s; memcached_read_timeout 1s; memcached_send_timeout 1s; memcached_gzip_flag 65536; # ключ поиска 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; # если все совпало, отправляем запрос в memcached if ($use_composite_cache = "ABC") { add_header X-Bitrix-Composite "Nginx (memcached)"; memcached_pass localhost:11211; } proxy_pass $proxyserver; } location @apache { proxy_pass $proxyserver; }
После завершения настроек NGINX возникает вопрос: как проверить, через что отдаются страницы - через PHP или NGINX при использовании BitrixVM? Для такой проверки просмотрите заголовки ответа сервера.
Заголовки при использовании Композита в BitrixVM могут быть такие:
X-Bitrix-Composite:Nginx (file)
- отдача страниц - NGINX, хранение - файлы;X-Bitrix-Composite:Nginx (memcached)
- отдача страниц - NGINX, хранение - memcached;X-Bitrix-Composite:Cache (200)
- отдача страниц - PHP, хранение - файлы.proxy_ignore_client_abort
нужно делать в крайних случаях, обычно это делать не требуется. Лучше это делать вручную и для конкретных location
, а не глобально на весь сервер. В следующих версиях BitrixVM/BitrixEnv этот пункт меню будет переработан. Включение параметра nginx proxy_ignore_client_abort
может быть полезным при неполадках в работе Телефонии, Открытых линиях. Данный параметр определяет, закрывать ли соединение с проксированным сервером в случае, если клиент закрыл соединение, не дождавшись ответа.
Для управления необходимо:
proxy_ignore_client_abort
:
Аналогичным образом отключается данный параметр:
/opt/webdir/temp
.Если по каким-либо причинам на сайтах появились серьезные ошибки: отсутствие модулей на сайте или нет подключения к БД (не получается подключиться с данными настроек сайта), то в меню виртуальной машины появляется пункт меню 6. Manage sites in the pool > 11. Show sites with errors:
Выбрав этот пункт меню, отобразится список сайтов с кратким описанием ошибки (в данном примере - нет соединения с базой данных mysql):
Использование Sphinx в качестве поискового механизма позволит значительно увеличить скорость поиска и снизит нагрузку на сервер.
Для установки Sphinx на сервер необходимо:
/opt/webdir/temp
.Чтобы обновить настройки для всех Sphinx-инстансов, нужно перейти в главном меню 7. Configure Sphinx service for the pool > 2. Update sphinx instance on server (add index):
Эта опция запускает проверку текущей конфигурации одного или нескольких Sphinx-инстансов в пуле (если такие имеются) и запускает принудительную переиндексацию.
/opt/webdir/temp
.Для удаления Sphinx-инстанса с сервера необходимо:
/opt/webdir/temp
.В «1C-Битрикс: Виртуальная машина» можно быстро развернуть кластеризацию веб-сервера в «1С-Битрикс: Управление сайтом» и «Битрикс24 в коробке».
При разделении проекта на несколько веб-серверов необходимо решить две задачи:
Для создания роли веб-сервера нужно:
/opt/webdir/temp
.В разделе 8. Manage pool web servers > 2. Manage PHP extensions можно включить дополнительные модули PHP, которые могут понадобится в продуктах «1C-Битрикс».
На данный момент можно включить модуль SSH2 для PHP:
Выключается данный модуль аналогично:
/opt/webdir/temp
.Начиная с версии BitrixVM 7.2.0, добавилась возможность подключения SSL-сертификатов как бесплатного Let's Encrypt, так и своего собственного, выпущенного любым авторизованным центром сертификации.
Центр сертификации Let’s Encrypt выдает SSL-сертификаты с проверкой домена (DV, Domain-validated certificate) бесплатно, срок их действия – 90 дней. Они начального уровня и подтверждают домен, а также шифруют и защищают данные при передаче с помощью протокола https. Установить его себе на сайт могут как физические лица, так и организации. Подойдут для небольших сайтов и маленьких проектов, когда нет необходимости в большом доверии со стороны клиентов и посетителей сайта. В BitrixVM SSL-сертификаты Let’s Encrypt выпускаются в течение нескольких минут, а продление производится автоматически, примерно за месяц до истечения срока действия.
SSL-сертификаты, предполагающие более высокое доверие к вашим продуктам, компании и сервисам, выпускают центры сертификации. При этом проводится более тщательная проверка:
SSL-сертификаты с проверкой компании (OV, Organization validation) – кроме защиты информации гарантируется принадлежность домена конкретной организации. Выдается только юридическим лицам с подтвержденным номером телефона. На сайте с таким сертификатом посетитель может найти информацию об организации-владельце сайта, обычно, просто щелкнув по иконке замочка.
SSL-сертификаты с расширенной проверкой (EV, Extended validation) – то же, что и OV, только проверяется уже налоговая и коммерческая деятельность компании, причем более тщательно. На сайте рядом с замочком появляется название компании. Чаще всего встречаются у банков и онлайн-систем с большим количеством посетителей.
Собственные SSL-сертификаты, выпущенные авторизованными центрами, нужно выпускать и продлевать самостоятельно. В BitrixVM их нужно подключать каждый раз, когда происходит их перевыпуск в центре сертификации.
Для создания SSL-сертификата Let’s Encrypt нужно:
и подтвердить ввод:
Проверить выпущенный сертификат можно легко – перейти на ваш сайт по протоколу https, у валидного сертификата будет замочек:
Срок действия – 90 дней. Перевыпуск происходит автоматически за 20 дней до окончания срока действия.
С версии BitrixVM 7.4.0 проверка сертификатов автоматически производится еженедельно в субботу в 2 часа ночи по cron-у.
Если вам нужно вручную обновить сертификат, запустите его получение для существующего домена. Система проверит и при необходимости обновит сертификаты.
Также вы можете вручную командой:
/home/bitrix/dehydrated/dehydrated -c
Система проверит сроки действия и при необходимости запустит обновление.
Лог обновления можно посмотреть по пути: /home/bitrix/dehydrated_update.log.
Подробнее о лимитах Let’s Encrypt читайте в статье Rate Limits.
Если у вас есть свой сертификат, выпущенный любым авторизованным центром, то можно также его подключить к сайту в BitrixVM.
У вас должны быть следующие файлы: приватный ключ (private key), цепочка сертификатов (certificate chain) и сам сертификат (certificate).
Для подключения своего SSL-сертификата нужно:
Пути получились такие:
/home/bitrix/ssl/test2.b24test.site_privkey.pem
/home/bitrix/ssl/test2.b24test.site_cert.pem
/home/bitrix/ssl/test2.b24test.site_chain.pem
Проверку результата можно выполнить легко – перейти на ваш сайт по протоколу https, у валидного сертификата будет зеленый замочек:
Поддерживается ввод нескольких сайтов, через запятую. Следить за сроком действия своего сертификата вы должны сами. Перевыпуск осуществляется также владельцем сайта. После перевыпуска нового сертификата нужно будет заново его импортировать.
Если что-то пошло не так или вы хотите восстановить самоподписанный сертификат, который создается при первом запуске BitrixVM, то для этого нужно:
/home/bitrix/dehydrated/certs/test2.b24test.site/fullchain.pem
) и подтвердить действие:
Для удаления веб-сервера необходимо:
/opt/webdir/temp
.По умолчанию в VMBitrix для Push&Pull используется модуль Nginx-PushStreamModule. Главный его недостаток – если сервис падает по какой-либо причине, то недоставленные сообщения теряются, что порождает высокую нагрузку на PHP-бэкенд из-за особенностей работы модуля nginx. Новый модуль на NodeJS лишен этих недостатков.
По умолчанию в VMBitrix.CRM для Push&Pull сервера используется модуль на NodeJS.
Модуль сервера очередей Nginx-PushStreamModule устарел и может работать нестабильно (зависание сообщений, падения). В результате чего сообщения могут не доставляться, это вызывает высокую нагрузку на службу PHP из-за особенностей работы модуля Nginx. Также он ограничен в функционале – в нем нет поддержки protobuf и персональных каналов, которые работают без сервера, нет возможности опроса публичного канала, чтобы узнать, кто в сети, и т.д.
Поэтому крайне рекомендуется использовать вместо устаревшего Nginx-PushStreamModule новый NodeJS-Pushserver.
Чтобы перейти на новый модуль NodeJS RTC вместо Nginx-PushStreamModule, нужно:
/opt/webdir/temp
.
Чтобы перейти с NodeJS RTC обратно на модуль Nginx-PushStreamModule, нужно:
/opt/webdir/temp
.Все изменения в виртуальной машине – настройки, запуск каких-либо служб, синхронизация и др. осуществляются с помощью скриптов – задач.
Просмотреть историю, а также выполняемые в данный момент задачи, можно с помощью пункта меню 10. Background pool tasks:
Просмотреть запущенную в данный момент задачу можно с помощью пункта меню 10. Background pool tasks > 1. View running tasks:
Для её остановки нужно перейти в пункт меню 10. Background pool tasks > 1. View running tasks > 1. Stop task и ввести идентификатор задачи:
Чтобы очистить историю нужно выбрать пункт меню 10. Background pool tasks > 2. Delete history:
Далее выбрать количество дней, за которое нужно оставить историю, и фильтр, по которому выбирать задачи (к примеру, выберем все задачи с TaskID common):
После этого будут выведены все задачи, удовлетворяющие заданному интервалу и фильтру, и далее запрос на очистку истории:
/opt/webdir/temp
. Сервис Конвертер файлов выполняет преобразование документов и видео для просмотра в постах или комментариях ленты Новостей и Задач, в Диске, а также осуществляет генерацию документов по шаблонам в CRM.
Роль Конвертер файлов в VMBitrix доступна начиная с версии 7.5.0.
Для работы роли необходимо, чтобы в «1С-Битрикс24» были установлены модули:
После установки модулей их настройка не требуется, новая роль при ее активации сама настроит нужные опции для вашего сайта.
Для настройки роли выполните следующие шаги:
vm1.local
):
configure_transformer_**********
, которая:
Для дальнейшей эксплуатации могут понадобиться другие учебные материалы:
/opt/webdir/temp
.Чтобы удалить роль Конвертер файлов, нужно:
/opt/webdir/temp
.При запуске виртуальной машины 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
/etc/nginx/bx/site_ext_enabled/
- конфигурационные файлы своих дополнительных сайтов для всего сервера (например, bx_ext.conf, bx_ext_custom1.conf, ext_custom_site.com.conf и т.п) /etc/nginx/bx/settings/
- конфигурационные файлы настроек для уровня http всего сервера (например, z_bx_custom.conf, z_bx_custom1.conf и т.п)/etc/nginx/bx/site_settings/<SITE_NAME>/
- персональные настройки конкретного сайта, начиная с версии BitrixVM 7.5 или бета версии 7.4.10 (например, /etc/nginx/bx/site_settings/site.com/myconfig.conf).PHP: /etc/php.d/z_bx_custom.ini
В случае, если в этих директориях нет конфигурационных файлов, то их можно создать самостоятельно.
Пример изменения параметров в файле z_bx_custom.cnf
|
---|
Пример из практики: У пользователя CRM Битрикс24 возникла ошибка при попытке конвертировать лида в сделку с большим количеством пользовательских полей. Сообщение об ошибке выдавалось такое: Row size too large (> 8126). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline. Проблема решилась и конвертация заработала корректно после внесения в файл /etc/mysql/conf.d/z_bx_custom.cnf таких настроек: innodb_file_format = Barracuda innodb_file_per_table = ON innodb_strict_mode = OFF |
При использование виртуальной машины BitrixVM или ami-образа BitrixVM, со временем может возникнуть проблема нехватки свободного места.
Решить эту проблему можно двумя способами:
Так как основной объем дискового пространства потребляется контентом сайтов и их резервными копиями, расположенными в /home/bitrix
, а также БД, расположенной в /var/lib/mysql
, то на отдельные диски следует выносить именно эти разделы.
Рассмотрим данную задачу на примере переноса на отдельный диск папки /home
с контентом сайтов и их резервными копиями.
fdisk -l
/dev/sdb
:
fdisk /dev/sdb
И командой n создаем новый раздел:
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 /mntCentOS 7
mkfs.ext4 /dev/sdb1 mount /dev/sdb1 /mnt systemctl stop httpd.service systemctl stop nginx.service mv -f /home/* /mnt umount /mnt
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 6mount /home service httpd start service nginx startCentOS 7
mount /home systemctl start httpd.service systemctl start nginx.service
Добавление дисков в других средах виртуализации или непосредственно на физическом сервере проходит аналогично.
/home/bitrix/www
вручную, то убедитесь, чтобы она имела права bitrix:bitrix
- 755 для директории и 644 - для файлов. Вторым способом увеличения дискового пространства в BitrixVM является увеличение размера уже существующего жесткого диска виртуальной машины.
Сначала измените размер системного диска на требуемый, например до 100Гб:
Изменить размер системного диска в VMWare
|
---|
В списке виртуальных машин VMWare Player выберите виртуальную машину BitrixVM и нажмите Edit virtual machine settings: В окне устройств выберите Hard Disk, размер которого нужно увеличить, и активируйте в меню Utilities пункт Expand: В открывшемся окне Expand Disk Capacity в поле Maximum disk size (GB) укажите необходимый объем виртуального диска в гигабайтах (в данном примере - 100Гб): |
Изменить размер системного диска в VirtualBox
|
---|
В меню VirtualBox File выберите Virtual Media Manager: Далее выберите ваш виртуальный диск, нажмите на кнопку Properties и укажите необходимый объем диска: |
Далее необходимо запустить виртуальную машину BitrixVM, авторизоваться под root и перейти в режим командной строки (консоль), выбрав пункт меню 0. Exit в виртуальной машине.
fdisk -c -u -l
где для диска /dev/sda
:
/dev/sda
:
fdisk -c -u /dev/sda
Partition number (1-4): 3
:
Partition number (1-4): 3
; reboot
/dev/sda3
:
resize2fs /dev/sda3
Проверить, что раздел увеличен можно с помощью команды df:
Изменение размера дисков в других средах виртуализации проходит аналогично.
Пусть размер системного диска был увеличен с 20 ГБ до 100Гб, как было сделано ранее в VMWare или VirtualBox (пункт 1).
Тогда действия по изменению размера LVM-раздела будут такими:
fdisk -l
df -h
Здесь мы также видим и запоминаем имя группы томов и имя тома – centos_vb1-root
(у вас они будут другие):
8e
) на неразмеченной области. Для этого начинаем работу с устройством sda c помощью команды:
fdisk /dev/sda
Partition number (1-3, default 3): 3
(так как у нас было 2 логических раздела sda1 и sda2 – см. п.1);Partition number (1-3, default 3): 3
;8e
;reboot
pvcreate /dev/sda3
vgextend /dev/centos_vb1 /dev/sda3
lvextend -l+100%FREE /dev/centos_vb1/root
vgscan vgchange -ay
file -s /dev/sda1
Видим, что файловая система XFS.
xfs_growfs /dev/centos_vb1/root
centos_vb1
– имя группы томов и root
– имя тома из п.2):
resize2fs /dev/centos_vb1/root
– для ext4; resize_reiserfs /dev/centos_vb1/root
– для reiserfs; df -h
Виртуальная машина BitrixVM поставляется с swap-разделом 256 МБ, а в образе ami он по умолчанию не подключен. Поэтому в процессе эксплуатации может возникнуть необходимость в расширении раздела подкачки.
Как и в случае с увеличением свободного места, наиболее простой способ - добавить дополнительный диск и разместить раздел подкачки на нем, либо создать файл подкачки.
Для этого:
dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /dev/sdb1или в файле swap-раздел:
mkswap /swapfile
swapon /dev/sdb1или файл подкачки:
chmod 600 /swapfile swapon /swapfile
/etc/fstab
, чтобы не включать после каждой перезагрузки вручную:
/dev/sdb1 none swap sw 0 0или о файле подкачки:
/swapfile none swap sw 0 0
Если некорректно настроен Memcached (доступен снаружи), то этим могут воспользоваться злоумышленники для взлома сайта.
Необходимо проверить опцию -l <ip>
в его настройках. Обращение к Memcached должно быть разрешено только c вашего сайта.
В случае, если в проекте планируется использовать memcached, необходимо произвести его настройку в соответствии с предполагаемой нагрузкой.
Для этого необходимо:
/etc/sysconfig/memcached
задать следующие параметры:
MAXCONN = "1024"
- количество одновременных подключений (по умолчанию 1024);CACHESIZE="1024"
- объем выделяемой памяти для кеша (по умолчанию 64MB);OPTIONS="-t 8"
- количество потоков memcached (по умолчанию 4).MAXCONN
, CACHESIZE
и OPTIONS
подбираются экспериментальным путем в зависимости от характера нагрузки и от имеющихся ресурсов.
Оценить объем памяти, необходимой для кеширования (параметр CACHESIZE
), можно по размеру вашего файлового кеша. Если у вас на проекте файловый кеш занимает 3 GB, то использование memcached c 256МБ памяти не будет эффективным за счет частого вытеснения.
CentOS 6:
service memcached restart
CentOS 7:
systemctl restart memcached.service
/bitrix/php_interface/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");
И в файле /bitrix/.settings_extra.php
(если его нет, то создать):
<?php return array( 'cache' => array( 'value' => array( 'type' => 'memcache', 'memcache' => array( 'host' => '127.0.0.1', 'port' => '11211', ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), ), ); ?>
В случае, если используется один сервер, то для улучшения производительности можно настроить работу с memcached через сокет:
В файле /etc/sysconfig/memcached задать параметры:
USER="bitrix"
- пользователь, от которого будет запущен memcached; OPTIONS="-t 8 -s /tmp/memcached.sock"
- количество потоков и путь к сокету.CentOS 6:
service memcached restart
CentOS 7:
systemctl restart memcached.service
/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");
И в файле /bitrix/.settings_extra.php
(если его нет, то создать):
<?php return array( 'cache' => array( 'value' => array( 'type' => 'memcache', 'memcache' => array( 'host' => 'unix:///tmp/memcached.sock', 'port' => '0', ), 'sid' => $_SERVER["DOCUMENT_ROOT"]."#01" ), ), ); ?>
$_SERVER["DOCUMENT_ROOT"
]. Иначе для двух сайтов кеш будет отличаться, так-как папки сайтов разные.При обновлении старых сайтов в кодировке Windows-1251, созданных в VMBitrix версии 7.4.3 или ниже, могут быть следующие ошибки:
Не работает Система обновлений продуктов «1С-Битрикс» – требует наличия параметра mb_internal_encoding('Windows-1251');
в dbconn.php.
При включенных предупреждениях Система обновлений не работает из-за предупреждения: «PHP Warning: htmlspecialchars(): charset `latin' not supported, assuming utf-8».
Проверка системы выдает ошибку «Строковые функции strtoupper и strtolower работают некорректно».
При обновлении VMBitrix до версии 7.5 и выше данные ошибки в установленных ранее сайтах в кодировке Windows-1251 автоматически не исправляются, поэтому вам нужно исправить их вручную для каждого такого сайта.
Добавьте в файл /bitrix/php_interface/dbconn.php сайта строку:
mb_internal_encoding('Windows-1251');
В конфигурационном файле Apache для вашего сайта /etc/httpd/bx/conf/bx_ext_[ваш_сайт].conf замените строку:
php_admin_value default_charset latinна такую:
php_admin_value default_charset cp1251
И перезапустите Apache:
systemctl restart httpd.service
Проверьте, есть ли локаль ru_RU.cp1251 в системе. Если ответ 0 – значит локали ru_RU.cp1251 нет, если 1 – есть:
locale -a | grep ru_RU.cp1251 -ic
Если локали ru_RU.cp1251 нет, выполните команду:
localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
Далее добавьте в файл /bitrix/php_interface/dbconn.php вашего сайта в кодировке windows-1251 две строки:
setlocale(LC_ALL, 'ru_RU.CP1251' ); setlocale(LC_NUMERIC, 'C' );
И перезапустите Apache:
systemctl restart httpd.service
Все готово. Проделайте эти действия для каждого сайта с кодировкой windows-1251, установленного ранее.
В случае необходимости подключения сетевого диска Windows в качестве хранилища для WebDAV можно воспользоваться следующей командой:
mount.cifs \\\\xxx.xxx.xxx.xxx\\folder /home/bitrix/www/docs/folder/smb -o user=XXXX,password=XXXX,uid=600,gid=600,file_mode=0777,noserverinoгде:
uid
- идентификатор пользователя bitrix;gid
- идентификатор группы bitrix;\\\\xxx.xxx.xxx.xxx\\folder
- путь к сетевому ресурсу \\xxx.xxx.xxx.xxx\folder (\ используется для экранирования символов);/home/bitrix/www/docs/folder/smb
- папка, куда будет смонтирован диск. На больших и не очень проектах часто возникает вопрос с переносом исполнения некоторых особо тяжелых агентов на Cron. Агент считается "тяжёлым", если время его выполнения более 10 минут.
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);
*/1 * * * * /usr/bin/php -f /home/bitrix/www/bitrix/modules/main/tools/cron_events.phpЗамените
/home/bitrix/www/
на свой путь к корню сайта.
После этого все агенты и отправка системных событий будут обрабатывается из-под cron, раз в 1 минуту.
Чтобы не увеличивалась очередь отправки почтовых сообщений, нужно изменить параметр, отвечающий за количество почтовых обрабатываемых за раз событий. Для этого выполняем в php-консоли следующую команду:
COption::SetOptionString("main", "mail_event_bulk", "20"); echo COption::GetOptionString("main", "mail_event_bulk", "5");
Если очередной запуск cron_events.php произошёл до завершения работы ранее запущенного скрипта, то запуска агентов не произойдет и скрипт завершит свою работу (т.к. агенты блокируются на время выполнения). В данном случае обработка ничем не отличается от обработки на хите, новый хит может произойти в тот момент, когда еще не отработали агенты на предыдущем.
Как правило, скрипты, выполненные из под cron, не имеют ограничения на время исполнения. Но если в скриптах используются методы для работы с БД, то можно столкнуться с ошибкой выполнения вложенных скриптов. Для избежания этой ошибки можно подправить значение в /bitrix/php_interface/dbconn.php
:
// если скрипт выполняется кроном, то лимит подключения к БД - 600 секунд, иначе - 60 @set_time_limit(php_sapi_name() == "cli" ? 600 : 60);
Для обеспечения более высокой производительности файловой системы рекомендуем отключать изменение метки времени при чтении файлов и директорий: noatime
, nodiratime
.
Для этого в /etc/fstab нужно отредактировать (добавить в текущую строку) параметры в строке со своим UUID:
UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16 / ext4 defaults,noatime,nodiratime 1 1где
UUID=abd9bdaa-e17d-40b3-aee5-37ef53a57b16
- уникальный идентификатор диска, который можно узнать в консоли по команде blkid
.
После перезагрузки новые настройки начнут действовать.
Чтобы применить новые настройки, не перезагружая сервер, можно выполнить перемонтирование разделов командой:
mount -o remount,noatime,nodiratime /
commit
. Для установки его в 120 секунд, например, необходимо добавить commit=120
. То есть набор опций монтирования будет defaults,noatime,commit=120
.
По умолчанию сброс данных и метаданных на диск происходит каждые 5 сек. Откладывание времени сброса, так же может уменьшить фрагментацию файлов на диске, если есть файлы, в которые часто происходит дописывание данных. Например логи.
Для упрощения работы с Bitrix Framework
в виртуальную машину включён Xdebug. Работает он по схеме:
Перед изменением настроек надо переименовать файл xdebug.ini.disabled в xdebug.ini и перезапустить httpd.
Для настройки машины воспользуйтесь следующим примером:
$ cat /etc/php.d/xdebug.ini ; Enable xdebug extension module zend_extension=/usr/lib64/php/modules/xdebug.so xdebug.remote_enable=on xdebug.remote_host=192.168.205.1 xdebug.remote_port=9000
При разработке своих решений на основе виртуальной машины BitrixEnv/VMBitrix.CRM, может понадобиться отслеживание изменений в версиях файлов. Для этого вы можете подключить репозиторий исходников виртуальной машины.
Добавляем файл для репозитория /etc/yum.repos.d/bitrix-source-stable.repo
с содержимым:
[bitrix-source-stable] name=$OS $releasever - source failovermethod=priority baseurl=https://repo.bitrix.info/yum/SRPMS enabled=1 gpgcheck=1 gpgkey=https://repo.bitrix.info/yum/RPM-GPG-KEY-BitrixEnv
Проверяем, что есть пакет yum-utils:
yum clean all && yum install yum-utils
Скачиваем исходники виртуальной машины:
yumdownloader --source bitrix-env
Примерный ответ в консоли для обычной VMBitrix
|
---|
[root@qa-new ~]# yumdownloader --source bitrix-env Loaded plugins: etckeeper, fastestmirror Enabling epel-source repository Enabling updates-source repository Enabling base-source repository Enabling extras-source repository Loading mirror speeds from cached hostfile epel-source/x86_64/metalink | 14 kB 00:00:00 * base: ftp.heanet.ie * epel: s3-mirror-eu-west-1.fedoraproject.org * epel-source: mirror.sax.uk.as61049.net * extras: ftp.heanet.ie * remi: rpms.remirepo.net * remi-php70: rpms.remirepo.net * remi-safe: rpms.remirepo.net * updates: ftp.heanet.ie base-source | 2.9 kB 00:00:00 epel-source | 3.5 kB 00:00:00 extras-source | 2.9 kB 00:00:00 updates-source | 2.9 kB 00:00:00 (1/5): updates-source/7/primary_db | 17 kB 00:00:01 (2/5): epel-source/x86_64/updateinfo | 921 kB 00:00:01 (3/5): extras-source/7/primary_db | 39 kB 00:00:01 (4/5): base-source/7/primary_db | 1.0 MB 00:00:01 (5/5): epel-source/x86_64/primary_db | 2.3 MB 00:00:02 No source RPM found for bitrix-env-7.1-0.el7.centos.noarch No source RPM found for bitrix-env-7.0-0.el7.centos.noarch No source RPM found for bitrix-env-5.2-1.el7.centos.noarch No source RPM found for bitrix-env-7.2-1.el7.centos.noarch No source RPM found for bitrix-env-7.3-0.el7.centos.noarch No source RPM found for bitrix-env-5.1-6.el7.centos.noarch No source RPM found for bitrix-env-7.2-2.el7.centos.noarch No source RPM found for bitrix-env-5.1-7.el7.centos.noarch No source RPM found for bitrix-env-5.1-8.el7.centos.noarch No source RPM found for bitrix-env-7.0-1.el7.centos.noarch No source RPM found for bitrix-env-7.2-0.el7.centos.noarch No source RPM found for bitrix-env-5.1-9.el7.centos.noarch No source RPM found for bitrix-env-5.2-0.el7.centos.noarch bitrix-env-7.3-0.fc27.src.rpm | 7.8 MB 00:00:01 [root@qa-new ~]# |
yumdownloader --source bitrix-env-crm
Примерный ответ в консоли для VMBitrix.CRM
|
---|
[root@qa-new ~]# yumdownloader --source bitrix-env-crm Loaded plugins: etckeeper, fastestmirror Enabling epel-source repository Enabling updates-source repository Enabling base-source repository Enabling extras-source repository Loading mirror speeds from cached hostfile * base: ftp.heanet.ie * epel: s3-mirror-eu-west-1.fedoraproject.org * epel-source: mirror.sax.uk.as61049.net * extras: ftp.heanet.ie * remi: rpms.remirepo.net * remi-php70: rpms.remirepo.net * remi-safe: rpms.remirepo.net * updates: ftp.heanet.ie No source RPM found for bitrix-env-crm-7.2-1.el7.centos.noarch No source RPM found for bitrix-env-crm-7.2-0.el7.centos.noarch No source RPM found for bitrix-env-crm-7.2-2.el7.centos.noarch No source RPM found for bitrix-env-crm-7.3-0.el7.centos.noarch bitrix-env-crm-7.3-0.fc27.src.rpm | 7.8 MB 00:00:02 [root@qa-new ~]# |
Добавляем файл для репозитория /etc/yum.repos.d/bitrix-source-beta.repo
с содержимым:
[bitrix-source-beta] name=$OS $releasever - source failovermethod=priority baseurl=https://repo.bitrix.info/yum-beta/SRPMS enabled=1 gpgcheck=1 gpgkey=https://repo.bitrix.info/yum/RPM-GPG-KEY-BitrixEnv
Проверяем, что есть пакет yum-utils:
yum clean all && yum install yum-utils
Скачиваем исходники виртуальной машины:
yumdownloader --source bitrix-env
yumdownloader --source bitrix-env-crm
Помимо [ds]включения некоторых php-расширений из меню BitrixEnv[/ds][di]В разделе 8. Manage web nodes in the pool > 2. Manage PHP extensions можно включить дополнительные модули PHP, которые могут понадобится в продуктах «1C-Битрикс».
Подробнее ...[/di] можно включать нужные расширения вручную.
Конфигурационные ini-файлы доступных php-расширений находятся в директории /etc/php.d/
:
Чтобы вручную включить нужное расширение, нужно файл {имя_расширения}.ini.disabled переименовать в {имя_расширения}.ini и перезапустить сервис Apache – httpd.
Например, нам нужно включить расширение dom.
Переходим в директорию сервера /etc/php.d/
:
cd /etc/php.d/
Выводим список файлов в директории:
ls
Находим в списке файл 20-dom.ini.disabled, переименуем его в 20-dom.ini и сохраним с заменой текущего:
mv 20-dom.ini.disabled 20-dom.ini
/etc/php.d/
, то при обновлении PHP или виртуальной машины dom-расширение будет деактивировано. Чтобы этого не произошло, нужно оставлять только один файл 20-dom.ini с активированным расширением.Далее перезапустим сервис Apache – httpd:
CentOS 6:
service httpd restart
CentOS 7:
systemctl restart httpd.service
Все готово, расширение dom работает:
Также вы можете установить любое php-расширение самостоятельно.
Например установим расширение php-imap.
Сначала нужно найти его имя с помощью команды:
yum list php-imap*
Далее установить командой:
yum install php-imap
При установке будет создан файл /etc/php.d/20-imap.ini.
Затем нужно перезапустить сервис httpd.
Все готово, php-расширение imap работает:
Очень частая ситуация, когда BitrixVM располагают внутри локальной сети офиса и проксируют запросы на нее из внешней сети Интернет.
Под проксированием будем понимать http-прокси, который имеет внешний адрес и позволяет организовать подключение пользователей к сайту, расположенному на виртуальной машине BitrixVM, а также сетевое оборудование, которое позволяет на уровне TCP/IP организовать подключение.
Основная особенность в данном случае – это организация работы web-сокетов (ws/wss протоколов), так как бывают ситуации, когда требуются дополнительные настройки для того, чтобы сетевое оборудование не прерывало соединение по таймауту.
Настройку сетевого оборудования мы обсуждать не будем – предположим, что уже все настроено, поддержка web-сокетов включена.
Опишем ситуацию, когда понадобилось для работы перенести порт для ws/wss протоколов.
Создаем конфигурационный файл /etc/nginx/bx/site_ext_enabled/rtc_ext.conf:
server { listen 1137; listen 1139 default_server ssl; #access_log off; server_name _; # ssl settings include bx/conf/ssl.conf; # Include im subscrider handlers include bx/conf/im_subscrider.conf; location / { deny all; } }
Не забываем перезапустить nginx после того, как внесли все коррективы.
CentOS 6:
service nginx restart
CentOS 7:
systemctl restart nginx.service
Открываем порты в виртуальной машине BitrixVM:
iptables:
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1137 -j ACCEPT iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 1139 -j ACCEPT iptables-save > /etc/sysconfig/iptables
firewalld:
firewall-cmd --permanent --add-port=1137/tcp firewall-cmd --permanent --add-port=1139/tcp firewall-cmd --reload
Добавляем выбранные порты в конфигурационный файл bitrix/.settings.php:
'pull_s1' => 'BEGIN GENERATED PUSH SETTINGS. DON\'T DELETE COMMENT!!!!', 'pull' => Array( 'value' => array( ... 'path_to_websocket' => 'ws://#DOMAIN#:1137/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#:1139/bitrix/subws/', ... ), ), 'pull_e1' => 'END GENERATED PUSH SETTINGS. DON\'T DELETE COMMENT!!!!',
И затем проверяем работу через браузер.
Предположим, что в качестве внешнего прокси выступает nginx сервер.
При желании можно данные настройки адаптировать и для других прокси-сервисов.
Вне зависимости от того, как организована у вас работа балансера – единственная точка входа или он обслуживает только запросы клиентов из внешних сетей, а BitrixVM запросы внутренней сети – на него нужно перенести настройки Push-server.
Переносим настройки проксирования запросов push на балансер – можно взять конфигурационный файл виртуальной машины bx/conf/im_subscrider.conf за основу (можно прям его скопировать на балансер):
location ~* ^/bitrix/subws/ { access_log off; proxy_pass http://nodejs_sub; # http://blog.martinfjordvald.com/2013/02/websockets-in-nginx/ # 12h+0.5 proxy_max_temp_file_size 0; proxy_read_timeout 43800; proxy_http_version 1.1; proxy_set_header Upgrade $replace_upgrade; proxy_set_header Connection $connection_upgrade; } location ~* ^/bitrix/sub/ { access_log off; rewrite ^/bitrix/sub/(.*)$ /bitrix/subws/$1 break; proxy_pass http://nodejs_sub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; } location ~* ^/bitrix/rest/ { access_log off; proxy_pass http://nodejs_pub; proxy_max_temp_file_size 0; proxy_read_timeout 43800; }
Данный файл подключаем к серверу, на котором настроено проксирование запросов на виртуальную машину.
Верхний конфигурационный файл зависит от bx/settings/rtc-im_settings.conf, в котором определяются следующие параметры:
Upgrade
и Connection
через переменные:
# if connection ti not set map $http_upgrade $connection_upgrade { default upgrade; '' 'close'; } map $http_upgrade $replace_upgrade { default $http_upgrade; '' "websocket"; }
upstream nodejs_sub { ip_hash; keepalive 1024; server push:8010; server push:8011; server push:8012; server push:8013; server push:8014; server push:8015; } upstream nodejs_pub { ip_hash; keepalive 1024; server push:9010; server push:9011; }
Данный файл bx/settings/rtc-im_settings.conf тоже можно скопировать и подключить на уровне http
-секции на балансере.
Далее на push-server необходимо открыть порты 8010-8015 и 9010-9011 для доступа с балансера.
iptables:
iptables -I INPUT -p tcp --match multiport --dport 8010:8015 -j ACCEPT iptables -I INPUT -p tcp --match multiport --dport 9010:9011 -j ACCEPT iptables-save > /etc/sysconfig/iptables
firewalld:
firewall-cmd --permanent --add-port=8010-8015/tcp firewall-cmd --permanent --add-port=9010-9011/tcp firewall-cmd --reload
Предположим, мы проксируем http и https сайта test.example.org на 80 порт виртуальной машины BitrixVM.
Включим модуль real_ip в BitrixVM – создаем конфигурационный файл bx/settings/real_ip.conf:
set_real_ip_from BALANCER_IP; real_ip_header X-Forwarded-For;
В качестве real_ip_header
нужно указать заголовок балансера, который он передает на бэкенд (виртуальную машину BitrixVM). В set_real_ip_from
– IP-адрес балансера.
Перезапускаем nginx.
CentOS 6:
service nginx restart
CentOS 7:
systemctl restart nginx.service
Далее настраиваем передачу протокола, по которому клиент работает с сервером.
Нам нужно, чтобы балансер передавал на бэкенд-сервер информацию о протоколе:
proxy_set_header X-Forwarded-Proto $scheme;
На бэкенде (виртуальная машина BitrixVM) делаем конфигурацию для настройки переменных в файле bx/settings/schema.conf:
map $http_x_forwarded_proto $balancer_port { default 80; "https" 443; } map $http_x_forwarded_proto $balancer_https { default "NO"; "https" "YES"; }
Тогда на бэкенде переменная $http_x_forwarded_proto
будет содержать значение http
или https
в зависимости от протокола подключения.
Далее нам потребуется конфигурационный файл сайта:
сайт по умолчанию – /etc/nginx/bx/site_enabled/s1.confВ конфигурационном файле сайта нас интересует часть:
proxy_set_header Host $host:80;
Меняем указанную выше часть на:
proxy_set_header Host $host:$balancer_port; proxy_set_header HTTPS $balancer_https;
Перезапускаем nginx:
CentOS 6:
service nginx restart
CentOS 7:
systemctl restart nginx.service
Все готово.
Для настройки проксирования телефонии можно использовать правило:
location ~* ^/(pub/imconnector/|pub/imbot.php|services/telephony/info_receiver.php|bitrix/tools/voximplant/) { proxy_ignore_client_abort on; proxy_pass $proxyserver; }
О других настройках локальной сети при использовании телефонии рассказывается в соответствующем уроке курса Администратор сервиса Битрикс24.
В главе описывается API, помощью которого можно подключить процедуру заказа/создания машины в управлении пулом в продуктах «1С-Битрикс».
Вся работа с провайдерами осуществляется с помощью плагинов, расположенных в определенном каталоге (на текущий момент всё управление сделано на файлах): /opt/webdir/providers.
Для каждого провайдера предусмотрены:
Скрипт плагина, который будет использован в web-интерфейсе продуктов «1С-Битрикс», должен быть раcположен по адресу:
/opt/webdir/providers/{provider_name}/bin/{provider_name}Для подключения в пул плагин провайдера должен поддерживать следующие аргументы командной строки:
{ "options": [ "help", "configs", "order", "order_status" ], "status": "enabled" }
Массив options должен содержать список поддерживаемых опций (например, в данном случае отсутствует опция init, которая позволяет подключиться на этапе создания мастер сервера).
Опция status может содержать следующие значения: disabled
или enabled
, что позволяет определить включен или выключен провайдер на конкретном сервере.
{ "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С-Битрикс».
На текущий момент поддерживается два параметра по каждой конфигурации:
{"task_id":"24"}
task_id должен содержать номер задания, который используется для дальнейшего опроса и старта добавления машины по завершению.
{ "server_password": "XXXXXXXXXXXXXX", "status": "finished", "server": "xxx.xxx.xxx.xxx", "task_id": "24" }где:
in_progress
- находится на обработке со стороны провайдера/хостера;finished
- обработка завершена, можно добавлять машину в пул; error
- во время выполнения произошла ошибка. Любое из действий может сообщить об ошибке с помощью значений в полях error и error_message. Например:
{ "error_message": "get_task error N102, No task found", "error": 1 }
Данный скрипт нужен для встраивания плагинов провайдеров в web- интерфейс продуктов «1C-Битрикс».
На текущий момент реализованы следующие методы:
{ "params": { "providers": { "superprovider": { "status": "enabled" }, "amazon": { "error": 1, "message": "bxProvider::optionsProvider: Provider amazon not exist on the host" } } } }
В данном случае, это только включено или выключено, а так же ошибки, который возникли при запросе статуса.
В случае если провайдеров нет на хосте, список будет пустым:
{ "params": { "providers": { } } }
/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-интерфейсе.
/opt/webdir/bin/bx-provider -a install --provider amazon --archive /tmp/amazon-v01.tar.gz
/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" } } } }
/opt/webdir/bin/bx-provider -a order --provider superprovider --config_id 1 -o json { "params": { "provider_order": { "superprovider": { "task_id": "25" } } } }
/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" } } } }
/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 - это значит, что сервер из данного задания был добавлен в пул.
/opt/webdir/bin/bx-provider -a order_to_host --provider superprovider --task_id 25 -o json
Рассмотрим пул серверов из двух нод:
Созданием веб-кластера, решаются следующие задачи:
Через существующую реализацию кластера не решаются следующие задачи:
В текущих настройках выделяются два типа веб-серверов:
Первый сервер в группе всегда - это роль балансера и веб. Все дополнительные сервера - это роль веб. В случае Виртуальной машины - роль балансера не может быть перенесена. Если ее нужно вынести на отдельный сервер, то читайте следующий урок.
Настройка web-ноды включает в себя следующие шаги:
В BitrixVM представлено два сценария, которые настраивают веб-ноды:
Синхронизация файлов делается через lsyncd.
Принцип работы:
Каталоги, которые синхронизируются (с сервера с ролью балансер на остальные сервера):
- /etc/nginx/bx/conf,Между серверами с ролью веб - синхронизируются каталоги сайтов за исключением следующих подкаталогов:
- bitrix/cacheНастройка включает в себя следующие шаги:
Например, если мы создаем web-ноду на сервере vm03, то на сервере vm04, будет создан сервис lsyncd-vm03; на сервере vm03 - lsyncd-vm04.
/etc/tmpfiles.d/lsyncd.conf
./etc/lsyncd-<HOSTNAME>.conf
.
Основное различие между серверами: для сервера с ролью балансера (в примере vm04) файлы конфигурации будут содержать подкаталоги из /etc
и каталоги сайтов. Для всех остальных дополнительных нод файлы конфигурации содержат только каталоги сайтов.
Например, для конфигурации указанной выше. На сервере vm04 файл /etc/lsyncd-vm03.conf
будет содержать следующие каталоги:
sync { default.rsyncssh, host = "vm03", source = "/etc/nginx/bx/", targetdir = "/etc/nginx/bx/", exclude = { "site_enabled/http_balancer*.conf", "site_enabled/https_balancer*.conf", "site_enabled/upstream.conf", "site_enabled/pool_manager.conf", "site_ext_enabled/", "server_monitor.conf", "pool_passwords", } .... } -- httpd sync { default.rsyncssh, host = "vm03", source = "/etc/httpd/bx/conf/", targetdir = "/etc/httpd/bx/conf/", } sync { default.rsyncssh, host = "vm03", source = "/home/bitrix/www/", targetdir = "/home/bitrix/www/", exclude = { "bitrix/cache/", "bitrix/managed_cache/", "bitrix/stack_cache/", "upload/resize_cache/", "*.log", // учтите, что исключая "*.log", исключаются компоненты и модули, например bizproc.log },
А конфигурационный файл на сервере vm03 /etc/lsyncd-vm04.conf
будет содержать каталоги:
sync { default.rsyncssh, host = "vm04", source = "/home/bitrix/www", targetdir = "/home/bitrix/www", exclude = { "bitrix/cache/", "bitrix/managed_cache/", "bitrix/stack_cache/", "upload/resize_cache/", "*.log", // учтите, что исключая "*.log", исключаются компоненты и модули, например bizproc.log "bitrix/.settings.php", "php_interface/*.php", ... }
/var/log/lsyncd/daemon-<HOSTNAME>.status
Выполните следующие шаги:
Конфигурационные файлы: /etc/nginx/bx/site_enabled/http_balancer.conf
и https_balancer_<SITENAME>.conf
Настройки пула web-серверов содержаться в конфиге: /etc/nginx/bx/site_enabled/upstream.conf
.
Дополнительно на этом шаге в пуле за сервером закрепляется новая роль - web сервера.
Рассмотрим несложную конфигурацию, где:
Между нодами настроена синхронизация файлов в обе стороны, используется lsyncd.
Для этого на каждой ноде поднят дополнительный сервис lsyncd-<имя_сервера>, где имя сервера - это идентификатор хоста в пуле Виртуальной машины с которым выполняется синхронизация. В нашем примере на сервере srv1, можно найти сервис lsyncd-srv2, который будет синхронизировать файлы с сервера srv1 на srv2. Синхронизация файлов выполняется по протоколу SSH+Rsync с авторизацией по ключу пользователем bitrix Виртуальной машины BitrixVM.
Логи сервиса можно найти в каталоге /var/log/lsyncd
. Например, daemon-srv2.log - будет содержать лог синхронизации с серверов srv2, а daemon-srv2.status - текущий статус синхронизации. При этом основной сервер синхронизирует следующие каталоги:
/etc/httpd/bx/conf/ /etc/nginx/bx/ <каталог(и) сайта(ов)>
На дополнительных серверах, синхронизируются только каталоги для сайтов.
Из синхронизации на основном и дополнительных серверах исключены - подкаталоги содержащие кеш для сайтов, на дополнительных еще исключаются конфигурационные файлы:
"bitrix/cache/", "bitrix/managed_cache/", "bitrix/stack_cache/", "upload/resize_cache/", "*.log", "bitrix/.settings.php", "php_interface/*.php",
Какие есть возможности у такой конфигурации:
Теперь рассмотрим, что будет если одна из нод выйдет из строя.
Простой вариант - выходит из строя дополнительный web-сервер.
Есть большая вероятность, что вы этого можете просто не заметить этой поломки потому, что NGINX сервер помечает свои бэкенд-сервера как нерабочие только после нескольких ошибок. NGINX продолжает использовать те сервера, которые отвечают в обычном режиме. Чтобы не пропустить такой выход из строя - настройте внутренний мониторинг Виртуальной машины или любой другой мониторинг.
Если дополнительный сервер рабочий, но необходимо вывести его из эксплуатации, то используйте предусмотренный пункт в меню Виртуальной машины. Если такой возможности нет, то можно отключить вручную, убрав его из upstream серверов NGINX и выключив синхронизацию lsyncd конфигов.
По шагам на нашем примере:
/etc/nginx/bx/site_enabled/upstream.conf
:
upstream bx_cluster { .. server srv2:8080; }
systemctl restart nginx
systemctl stop lsyncd-srv2 systemctl disable lsyncd-srv2
systemctl stop lsyncd-srv1 systemctl disable lsyncd-srv1
Сложный вариант - выход из строя основного web-сервера. Его вы не пропустите скорее всего, но мониторинг тоже лучше настроить.
Ситуация тяжёлая, но не паникуйте: у вас есть все необходимые конфигурационные файлы на дополнительной ноде (не все включены в использование, но это легко поправить).
ln -sf /etc/nginx/bx/site_avaliable/http* /etc/nginx/bx/site_enabled/ ln -sf /etc/nginx/bx/site_avaliable/upstream.conf /etc/nginx/bx/site_enabled/
/etc/nginx/bx/site_enabled/upstream.conf
):
upstream bx_cluster { ip_hash; server srv1:8080; ... keepalive 10; }
nginx -t systemctl restart nginx
В этой главе будет описано, как сделать образ виртуальной машины BitrixVM для клонирования.
Это пригодится специалистам, которые делают минимальную настройку виртуальной машины BitrixVM и потом клонируют ее, а полученный клон используют дальше для развертывания.
Рассмотрим установку часто используемых сервисов виртмашины:
Существует 2 способа перенести виртуальную машину BitrixVM – ручное создание клона существующей машины с необходимыми сервисами и автоматическое развертывание готового образа (рекомендуемый).
План создания клона виртуальной машины BitrixVM выглядит примерно так:
Данный шаг необходим, чтобы получить доступ к настройкам сервера, установки push-server и memcached.
Если на чистом сервере в меню выбрать пункт 1. Create Management pool of server, то он как раз проведет по необходимым настройкам.
Либо можно выполнить следующую команду:
/opt/webdir/bin/wrapper_ansible_conf -a create -H SERVER_NAME -I NET_INTERFACEгде:
-H SERVER_NAME
– это имя сервера, которое будет использовано в настройках.-I NET_INTERFACE
– это сетевой интерфейс, чей IP-адрес будет использован в настройках пула.
Данная команда вернет ID задания, завершения которого нужно дождаться, чтобы продолжить дальше:
message ... Run configuration pool job task_id=common_7874274840 All operations complete
Дождаться завершения можно, отслеживая состояние лог-файла:
tailf /opt/webdir/temp/common_7874274840/status ... srv1 : ok=75 changed=30 unreachable=0 failed=0
Если в полях unreachable
и failed
будут нулевые значения, значит все хорошо и можно продолжать.
/opt/webdir/bin/bx-sites -a push_configure_nodejs -H SERVER_NAME
Дожидаемся завершения задания.
info:bxDaemon:pushserver_2042054462:7097:1594650283::running:::
По умолчанию сценарий виртуальной машины настроит сервис на использование на рабочем IP-адресе, чтобы в случае подключения других машины в пул они могли использовать его.
Предполагается, что образ будет использован для копирования виртуальной машины, поэтому адрес на новой установке, скорее всего, будет другой и указанные настойки не сработают. Чтобы это обойти, мы меняем адрес сервиса на localhost
, который есть на любом Linux-хосте.
Для этого в файле /etc/sysconfig/push-server-multi меняем параметр на:
WS_HOST=127.0.0.1
И пересоздаем конфиги push-server:
systemctl stop push-server /etc/init.d/push-server-multi reset
Nginx проксирует запросы на push-server на основание имени хоста. Чтобы он правильно определил, куда и как проксировать, меняем запись в /etc/hosts:
127.0.0.1 SERVER_NAME
Устанавливаем memcached сервер:
/opt/webdir/bin/bx-mc -a create -s SERVER_NAME
Тут про адрес при копировании можно не задумываться, т.к. сервис слушает все и доступ ограничивается настройками iptables/firewalld.
Если машина в пуле одна, то это стоит сделать хотя бы для того, чтобы на новой машине создать заново ssh-ключи и другие настройки безопасности.
Если в пуле несколько машин, то не рекомендуется оставлять настройки пула при копирование, т.к. в пуле существуют механизмы распознавания смены адреса и новая машина может взять на себя обязанности мастера.
Для этого нужно удалить файлы и каталоги конфигурации для ansible:
rm -rf /etc/ansible/{host_vars,group_vars,hosts,ansible-roles}
Или выполнить команду ansible:
/opt/webdir/bin/wrapper_ansible_conf -a delete_pool
Удаляем правила Udev для интерфейсов:
/bin/rm -f /etc/udev/rules.d/70*
Очищаем записи MAC-адресов и UUID устройств:
/bin/sed -i ‘/^(HWADDR|UUID)=/d’ /etc/sysconfig/network-scripts/ifcfg-eth0
Удаляем ssh-ключи. При старте новая машина создаст для себя новые ключи:
/bin/rm –f /etc/ssh/*key*
Очищаем логи сценариев:
/bin/rm -fr /opt/webdir/temp/* /bin/rm -fr /opt/webdir/logs/*
При разворачивании клонированного образа на новом месте рекомендуется настроить пул управления, чтобы иметь возможность дальнейшего управления виртуальной машиной.
Если копия (образ) делается для бэкапа и воссоздание из нее будет всегда той же самой машины, т.е. нет смены адреса, нет смены ключей, пул остается там, где был, то можно не выполнять вышеописанные действия.
Можно настраивать чистый образ автоматически. Для этого просто добавьте приведенные выше команды в свой сценарий или bash-скрипт:
# создание пула /opt/webdir/bin/wrapper_ansible_conf -a create -H SERVER_NAME -I NET_INTERFACE # настройка пуш-сервера /opt/webdir/bin/bx-sites -a push_configure_nodejs -H SERVER_NAME # настройка memcached сервиса /opt/webdir/bin/bx-mc -a create -s SERVER_NAME
Вы получаете работоспособную установку без необходимости решать проблемы смены адреса при копировании шаблона.
Каждый запуск – это будет фоновое задание, статус которого можно отслеживать, как показано выше.
В главе описаны настройки, необходимые для установки продуктов 1С-Битрикс: Управление сайтом
и 1С-Битрикс24 коробочная версия
на другие окружения.
Дополнительно
В главе описаны настройки окружения для операционной системы Debian 11 для установки на неё продуктов "1С-Битрикс24 (коробочная версия)" и "1С-Битрикс: Управление сайтом". Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Установку необходимо выполнять с диска с минимальным набором ПО, остальное будет установлено по сети во время настройки.
В процессе установки выберите сервер с минимальной настройкой, в противном случае получите декстоп. Дальнейшая настройка будет показана на базе такой установки.
В качестве менеджера пакетов используется apt/apt-get
. Обновите систему до последней стабильной версии. Отключите selinux:
su - apt update && apt upgrade echo 'SELINUX=disabled' > /etc/selinux/config reboot
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Ниже приведен весь список пакетов, который нам понадобится для "1С-Битрикс24 коробочная версия". Для "1С-Битрикс: Управление сайтом" не нужен только push-server.
В дефолтном репозитории нет PHP 8.0, но есть сторонние, которые позволяют поставить необходимое ПО.
apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
Используйте репозиторий: packages.sury.org.
Настройте репозиторий, симпортируйте ключ репозитория, обновите список пакетов:
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | \ sudo tee /etc/apt/sources.list.d/sury-php.list wget -qO - https://packages.sury.org/php/apt.gpg | \ sudo apt-key add - apt update
Установите apache 2.4 и php 8.0:
# apt install apache2 -y # apt install php8.0 php8.0-cli \ php8.0-common php8.0-gd php8.0-ldap \ php8.0-mbstring php8.0-mysql \ php8.0-opcache \ php-pear php8.0-apcu php-geoip \ php8.0-mcrypt php8.0-memcache\ php8.0-zip php8.0-pspell php8.0-xml -y
Установите nginx (1.18 версия):
apt install nginx -y
Установите MariaDB сервер (10.5 версия):
apt -y install mariadb-server mariadb-common
Установите node и npm (push-server) - 12.22:
apt install nodejs npm -y
Установите redis - 6.0:
apt install redis -y
Рабочий каталог для сайта - /var/www/html/bx-site
. Пользователь для web окружения - nginx, группа apache.
Конфигурация Nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # параменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основный блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает все возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве.
su - rsync -av debian/nginx/ /etc/nginx/
В сервисе используются имена для проксирования на определенные службы:
Чтобы заработала конфигурация, необходимо прописать службы в локальных адресах. Если сервисы расположены на другом хосте, то укажите здесь правильный адрес.
echo "127.0.0.1 push httpd" >> /etc/hosts
По умолчанию в Debian Apache2 сервер использует 80 порт и поставлен на автозапуск. Поэтому перед запуском nginx сервера, на время выключите Apache2 (на данный момент он еще не настроен). Остановите Apache2:
systemctl stop apache2
Запустите Nginx:
systemctl --now enable nginx
В данной версии установки централизованное хранилище конфигов:
/etc/php/8.0 |---- apache2 | |-> conf.d/ | |-> php.ini |---- cli | |-> conf.d/ | |-> php.ini |---- mods-available |->.ini
Файлы conf.d внутри каталогов /apache2
и /cli
содержат ссылки на mods-available. То есть в дефолтной конфигурации и модуль apache2 и командная строка будут содержать одинаковый набор модулей с одинаковыми параметрами.
Добавьте настройки для следующих опций:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
bitrexenv.ini
:
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Конфигурационные файлы для PHP расположены в папке debian/php.d.
su - rsync -av debian/php.d/ /etc/php/8.0/mods-available/ ln -sf /etc/php/8.0/mods-available/zbx-bitrix.ini /etc/php/8.0/apache2/conf.d/99-bitrix.ini ln -sf /etc/php/8.0/mods-available/zbx-bitrix.ini /etc/php/8.0/cli/conf.d/99-bitrix.ini
По умолчанию конфигурация Apache устроена следующим образом:
# /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mods-enabled # | |-- *.load # | `-- *.conf # |-- conf-enabled # | `-- *.conf # `-- sites-enabled # |-- 000-default.conf # `-- *.conf
Основное, что нужно изменить:
/var/www/html/bx-site
,/sites-enabled/000-default.conf
- это ссылка на файл в каталоге /sites-available
.Конфигурационные файлы для apache можно найти в папке debian/apache2.
su - rsync -av debian/apache2/ /etc/apache2/
Настройте следующие файлы:
sites-available/000-default.conf
- настройки сайтаОтключите листинг каталогов в Apache:
a2dismod --force autoindex
Включите модуль rewrite:
a2enmod rewrite
Запустите сервис:
systemctl --now enable apache2
Что нужно добавить:
Конфигурационные файлы для БД расположены в папке debian/mysql .
su - rsync -av debian/mysql/ /etc/mysql/
Измените следующие файлы:
/etc/mysql/my-bx.d/
,my-bx.d/zbx-custom.cnf
- сюда прописываем настройки, указанные выше.Запустите сервис:
systemctl --now enable mariadb systemctl restart mariadb
Настройте сервис через mysql_secure_installation:
mysql_secure_installation ... Switch to unix_socket authentication [Y/n] n ... skipping. Change the root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success!
Данный сервис необходим для организации push-server.
Основное, что важно в конфигурационном файле:
Конфигурационные файлы для redis можно найти в папке debian/redis.
su - rsync -av debian/redis/redis.conf /etc/redis/redis.conf usermod -g www-data redis chown root:www-data /etc/redis/ /var/log/redis/ [[ ! -d /etc/systemd/system/redis.service.d ]] && mkdir /etc/systemd/system/redis.service.d echo -e '[Service]\nGroup=www-data' > /etc/systemd/system/redis.service.d/custom.conf systemctl daemon-reload
Запустите сервис
systemctl enable redis-server.service systemctl restart redis-server.service
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) - публичные и проксируются со стандартных портов 80/443, запросы публикации (pub) доступны только с внутреннего адреса сервера.
Nodejs-процессы делятся на два типа:
Для запуска push-server понадобится:
Скачайте архив:
su - cd /opt wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz npm install --production ./push-server-0.3.0.tgz
Установка должна закончиться строкой:
added 1 package, and audited 145 packages in 13s 16 packages are looking for funding run `npm fund` for details
Для удобства можно сделать так:
ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
Скопируйте файлы сервиса и основной конфигурационный сайт:
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi mkdir /etc/sysconfig cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
Отредактируйте конфигурационный файл /etc/sysconfig/push-server-multi
. Исправьте/добавьте параметры:
Пример:
GROUP=www-data SECURITY_KEY="PUTTHEPRIVATEKEYHERE" RUN_DIR=/tmp/push-server REDIS_SOCK=/var/run/redis/redis.sock
Создайте пользователя:
useradd -g www-data bitrix
Каждый nodejs процесс будет запущен как отдельный процесс. Сгенерируйте конфигурационные файлы:
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Создайте каталог через tmpfiles.d.
echo 'd /tmp/push-server 0770 bitrix www-data -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
Создайте каталог логов:
[[ ! -d /var/log/push-server ]] && mkdir /var/log/push-server chown bitrix:www-data /var/log/push-server
Изменяйте пользователя в конфигурационном файле сервиса /etc/systemd/system/push-server.service
:
[Service] User=bitrix Group=www-data ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ...
Переконфигурируйте файл:
systemctl daemon-reload
Запустите сервис
systemctl --now enable push-server
Перейдите в конфигурацию push-модуля (настройки сайта), включите использование локального push-сервера (последняя версия). Дополнительно нужно указать секретный ключ, который настраивали в файле /etc/sysconfig/push-server-multi
.
Создайте рабочий каталог:
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown www-data:www-data /var/www/html/bx-site -R
Аналогичным образом скачайте нужный дистрибутив и установите его в каталог: /var/www/html/bx-site
.
Создайте базу данных и пользователя:
create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';
Необходимо заменить PASSWORD на пароль, который будет использоваться для доступа к БД.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'PUTTHEPRIVATEKEYHERE', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
/etc/sysconfig/push-server-multi
в соответствующем ключе. Если все хорошо, то после перезапуска службы httpd:systemctl restart apache2
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы Astra 1.7 для установки на неё продуктов "1С-Битрикс24 (коробочная версия)" и "1С-Битрикс: Управление сайтом". Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Установку можно выполнять с диска с минимальным набором ПО, остальное будет установлено по сети во время настройки.
В процессе установки выбираем сервер с минимальной настройкой, в противном случае получим декстоп. Дальнейшая настройка будет показана на базе такой установки.
В качестве менеджера пакетов используется apt/apt-get
. Обновляем систему до последней стабильной версии.
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Весь список пакетов, который нам понадобится для работы "Битрикс24" (для "1С-Битрикс: Управление сайтом" push сервер не нужен.):
mariadb
Подключите репозитории в файле /etc/apt/sources.list
, добавив запись вида:
# Основной репозиторий deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free # Оперативные обновления основного репозитория deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-update/ 1.7_x86-64 main contrib non-free # Базовый репозиторий deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free # Расширенный репозиторий deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free # Расширенный репозиторий (компонент astra-ce) deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 astra-ce
Обновитесь:
apt update && apt upgrade
Установите необходимые пакеты:
apt install mariadb-server mariadb-client
PHP и Apache
Для начала уставите apache2:
apt install apache2 apache2-dev
Рекомендуется использовать PHP 8.0. В дефолтном репозитории его нет и необходимо собрать его самостоятельно.
apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2 \ autoconf build-essential curl libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \ libreadline-dev libzip-dev libzip4 \ openssl pkg-config zlib1g-dev libsqlite3-dev sqlite3 libonig-dev \ libpq-dev git autoconf bison re2c libpng-dev libldap2-dev \ libfreetype6-dev libfreetype6 libjpeg-dev libxslt1-dev
Скачайте исходники:
cd /usr/local/src wget https://www.php.net/distributions/php-8.0.23.tar.gz cd php-8.0.23 ./configure \ --prefix=/usr \ --with-config-file-path=/etc/php/8.0 \ --sysconfdir=/etc/php/8.0 \ --enable-mysqlnd \ --with-pdo-mysql \ --with-pdo-mysql=mysqlnd \ --enable-bcmath \ --enable-cli \ --with-apxs2=/usr/bin/apxs2 \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --enable-mbstring \ --enable-phpdbg \ --enable-shmop \ --enable-sockets \ --enable-sysvmsg \ --enable-sysvsem \ --enable-sysvshm \ --with-zlib \ --with-curl \ --with-pear \ --with-openssl \ --enable-pcntl \ --enable-gd \ --with-jpeg \ --with-mysqli \ --with-readline \ --with-freetype \ --enable-session \ --with-xsl \ --with-openssl \ --enable-opcache make make test make install cp php.ini-development /etc/php/8.0/php.ini
nginx
Установите nginx (1.18 версия)
apt install nginx -y
push-server
Установите node и npm (push-server) - 12.22
apt install nodejs npm -y
redis
Установите redis - 6.0
apt install redis -y
Рабочий каталог для сайта - /var/www/html/bx-site
. Пользователь для web окружения - nginx, группа apache.
Конфигурация nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # параменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основный блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает все возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx размещены в папке astra/nginx
rsync -av astra/nginx/ /etc/nginx/
В сервисе используются имена для проксирования на определенные службы:
echo "127.0.0.1 push httpd" >> /etc/hosts
По умолчанию в Astra Apache2 сервер использует 80 порт и поставлен в автозапуск. Поэтому перед запуском nginx сервера, мы на время выключаем apache2 (мы его еще не настраивали). Останавливаем apache2:
systemctl stop apache2
Запустите Nginx
systemctl --now enable nginx
В данной версии установки централизованное хранилище конфигов:
/etc/php/8.0 | |-> php.ini
Как минимум, нам нужно добавить настройки для следующих опций:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для PHP размещены в папке astra/php.d
su - cd bx-os/astra # добавляем конфиг для opcache cat ./php.d/opcache.ini >> /etc/php/8.0/php.ini # остальные настройки cat ./php.d/zbx-bitrix.ini >> /etc/php/8.0/php.ini # создаем каталог для логов mkdir /var/log/php chown www-data:www-data /var/log/php
По умолчанию конфигурация Apache устроена следующим образом:
# /etc/apache2/ # |-- apache2.conf # | `-- ports.conf # |-- mods-enabled # | |-- *.load # | `-- *.conf # |-- conf-enabled # | `-- *.conf # `-- sites-enabled # |-- 000-default.conf # `-- *.conf
Основное, что нужно изменить:
/var/www/html/bx-site
,sites-enabled/000-default.conf
- это ссылка на файл в каталоге /sites-available
. Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Apache размещены в папке astra/apache2
rsync -av astra/apache2/ /etc/apache2/
Настройте следующие файлы:
sites-available/000-default.conf
- настройки сайтаmods-available/php.conf
- конфгурация php модуляapache2/apache2.conf
- выключаем AstraModeОтключите листинг каталогов в Apache:
a2dismod --force autoindex
Включите модуль rewrite:
a2enmod rewrite
Включите php модуль:
a2enmod php
Запустите сервис:
systemctl --now enable apache2
Необходимые настройки:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для MariaDB размещены в папке astra/my.cnf.d
su - rsync -av astra/mysql/ /etc/mysql/
Измените следующие файлы:
/etc/mysql/my-bx.d/
;my-bx.d/zbx-custom.cnf
- пропишите настройки, указанные выше.Запустите сервис:
systemctl --now enable mariadb systemctl restart mariadb
Настройте сервис через mysql_secure_installation.
mysql_secure_installation ... Switch to unix_socket authentication [Y/n] n ... skipping. Change the root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success!
Данный сервис необходим для организации работы push-server.
Основное, что важно в конфиге:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Redis размещены в папке astra/redis
su - rsync -av astra/redis/redis.conf /etc/redis/redis.conf usermod -g www-data redis chown root:www-data /etc/redis/ /var/log/redis/ [[ ! -d /etc/systemd/system/redis-server.service.d ]] && mkdir /etc/systemd/system/redis-server.service.d echo -e '[Service]\nGroup=www-data' > /etc/systemd/system/redis-server.service.d/custom.conf systemctl daemon-reload
Запустите сервис:
systemctl enable redis-server.service systemctl restart redis-server.service
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) - публичные и проксируются со стандартных портов 80/443, запросы публикации (pub) доступны только с внутреннего адреса сервера.
Процессы Nodejs делятся на два типа:
Для запуска push-server понадобится:
Скачайте архив:
su - cd /opt wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
added 1 package, and audited 145 packages in 13s 16 packages are looking for funding run `npm fund` for details
Для удобства можно использовать:
ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
Скопируйте файлы сервиса и основной конфиг:
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi mkdir /etc/sysconfig cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
Редактируйте конфигурационный файл /etc/sysconfig/push-server-multi
. Нужно исправить/добавить параметры:
Пример
GROUP=www-data SECURITY_KEY="PUTTHEPRIVATEKEYHERE" RUN_DIR=/tmp/push-server REDIS_SOCK=/var/run/redis/redis.sock
Создайте пользователя:
useradd -g www-data bitrix
Каждый nodejs процесс будет запущен как отдельный процесс. Сгенерируйте конфиги:
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Создайте каталог через tmpfiles.d.
echo 'd /tmp/push-server 0770 bitrix www-data -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
Создайте каталог логов:
[[ ! -d /var/log/push-server ]] && mkdir /var/log/push-server chown bitrix:www-data /var/log/push-server
Измените пользователя в конфигурационном файле сервиса /etc/systemd/system/push-server.service
:
[Service] User=bitrix Group=www-data ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ...
Переконфигурируйте
systemctl daemon-reload
и затем запустите сервис:
systemctl --now enable push-server
В [dw]настройках push модуля[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di] в административном разделе сайта включите использование [dw]локального пуш сервера (последняя версия)[/dw][di].[/di]. Дополнительно нужно будет указать секретный ключ, который вы настраивали в файле /etc/sysconfig/push-server
.
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown www-data:www-data /var/www/html/bx-site -RАналогичным образом можно скачать нужный дистрибутив и установить его в каталог:
/var/www/html/bx-site
.create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.\* to 'bitrix'@'localhost';Необходимо заменить PASSWORD на пароль, который будете использовать для доступа к БД.
'host' => '127.0.0.1', 'database' => 'portal', 'login' => 'bitrix', 'password' => 'PASSWORD'
Пароль измените на тот, который вводили на этапе создания аккаунта.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'PUTTHEPRIVATEKEYHERE', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
systemctl restart httpd2
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы SUSE Linux Enterprise Server 15 для установки на неё продуктов 1С-Битрикс24 коробочная версия
и 1С-Битрикс: Управление сайтом
. Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Начнем с установки дистрибутива SUSE Linux Enterprise Server 15 (SLES 15). В процессе установки доступен выбор дополнительных модулей и расширений. Нам потребуется сервер с минимальной настройкой.
Также потребуется выполнить активацию подписки. Её можно произвести во время установки. Либо настроить уже после установки командой:
SUSEConnect -e EMAIL_ADDRESS -r REGISTER_CODE
Подписка привязывается к аккаунту. Поэтому при активации в качестве email_address и password указывайте те данные, с помощью которых Вы регистрировались на официальном сайте SUSE.
В качестве менеджера пакетов SUSE использует [dw]zypper[/dw][di]Zypper - консольный менеджер пакетов, основанный на библиотеке libzypp, используется в дистрибутиве GNU/Linux openSUSE.[/di].
zypper refresh zypper update
# модули python SUSEConnect --product sle-module-python2/15.2/x86_64 # для php и nodejs (push-server) SUSEConnect --product sle-module-web-scripting/15.2/x86_64
Все доступные репозитории можно посмотреть c помощью команды:
SUSEConnect --list-extensions
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Ниже приведен весь список пакетов, который нам понадобится для 1С-Битрикс24 коробочная версия
. Для 1С-Битрикс: Управление сайтом
из этого набора не нужен только push-server.
Установка по шагам
zypper -n install apache2 zypper -n install php7 php7 php7 \ php7 php7-opcache php7-zip php7-posix \ php7-zlib php7-openssl php7-mbstring \ php7-bz2 php7-curl php7-iconv \ php7-json php7-pecl php7-devel php7-sockets \ php7-gd apache2-mod_php7 php7-mysql
С 01.02.2023 ограничивается поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая - 8.1 и выше. Поэтому после установки необходимо обновить PHP до версии не ниже 8.0.
zypper -n install nginx
zypper -n install mariadb
zypper -n install nodejs10
zypper -n install redis
Выполним конфигурацию Nginx.
/var/www/html/bx-site
.Конфигурация nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # переменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основные блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает все те же возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: sles15/nginx
.
Разместите их в директории /etc/nginx/
.
В сервисе используются имена для проксирования на определенные службы:
Чтобы заработала конфигурация, необходимо прописать их в локальных адресах. Если сервисы расположены на другом хосте, укажите здесь правильный адрес:
echo "127.0.0.1 push httpd" >> /etc/hosts
Запустите сервис:
systemctl --now enable nginx
Добавьте правила для firewalld:
firewall-cmd --zone=public --add-service=https --permanent firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
В данной версии установки хранилище конфигов централизованное: -- /etc/php7/conf.d
Минимально необходимо добавить такие настройки:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для PHP расположены в папке: sles15/php.d
.
Разместите их в директории /etc/php7/conf.d/
.
Установите в качестве владельца пользователя и группу root:
chown root:root /etc/php7/conf.d/ -R
По умолчанию Apache настроен на дефолтный сайт в каталоге /var/www/html
.
Основное, что требуется сделать для настройки конфигурации Apache:
var/www/html/bx-site
; Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Apache расположены в папке: sles15/httpd
.
Разместите их в директории /etc/apache2/
.
Настроить требуется два файла:
vhosts.d/default.conf
- заменить каталог в описании сайта на var/www/html/bx-site
;httpd/listen.conf
- указать для Listen порт 8090.После этого запустите сервис:
systemctl --now enable apache2
Для конфигурации MariaDB требуется выполнить такие настройки:
READ-COMMITTED
;O_DIRECT
(желательная, но не обязательная настройка); Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для MariaDB находятся в папке: sles15/my.cnf.d
.
Разместите их в директории /etc/my.cnf.d/
.
Запустите сервис:
systemctl --now enable mariadb
Настройки сервис выполняются через mysql_secure_installation.
Данный сервис нам нужен для организации Push-сервера.
Основное, что нам важно установить в конфигурации:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Redis расположены в папке: sles15/redis
.
Разместите их в директории /etc/redis/
.
su - usermod -g www redis chown -R redis:www /etc/redis/ /var/log/redis/ /var/lib/redis/ mkdir /etc/systemd/system/redis@.service.d echo -e '[Service]\nGroup=www' > /etc/systemd/system/redis@.service.d/custom.conf systemctl daemon-reload
Запустите сервис
systemctl --now enable redis@default
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) - публичные и проксируются со стандартных портов 80/443. Запросы публикации (pub) доступны только с внутреннего адреса сервера.
Nodejs-процессы делятся на два типа:
Для запуска Push-сервера нам понадобятся:
Для установки понадобится Python и утилита make:
zypper install python3 make wget -y
Выполните действия:
wget https://repo.bitrix.info/vm/push-server-0.2.2.tgzили с сайта архив push-server-0.2.2.tgz и разместите его в директории
/opt
. Выполните установку:
su - cd /opt npm install --production ./push-server-0.2.2.tgz
Установка закончится строкой:
+ push-server@0.2.2 added 65 packages from 78 contributors and audited 65 packages in 45.77s
su - ln -sf /opt/node_modules/push-server/logs /var/log/push-server ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
echo 'd /tmp/push-server 0770 wwwrun www -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
Отредактируйте конфигурационный файл /etc/sysconfig/push-server-multi
. В нём нужно исправить/добавить параметры:
cat /dev/urandom |tr -dc A-Za-z0-9 | head -c 128
Пример настроек параметров:
GROUP=www USER=wwwrun SECURITY_KEY="SECURITYKEY123456" RUN_DIR=/tmp/push-server REDIS_SOCK=/var/run/redis/default.sock
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате [dw]json[/dw][di]push-server-sub-80XX.json
push-server-pub-90XX.json[/di] будут размещены в каталоге: /etc/push-server/
.
/etc/systemd/system/push-server.service
:
[Service] User=wwwrun Group=www ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ...
chown wwwrun:www /opt/node_modules/push-server/logs /tmp/push-server -RH
systemctl daemon-reload
systemctl --now enable push-server
/etc/sysconfig/push-server-multi
.Создайте рабочий каталог:
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown www-data:www-data /var/www/html/bx-site -R
Аналогичным образом можно скачать нужный дистрибутив и установить его в каталог: /var/www/html/bx-site
.
Создайте базу данных и пользователя:
create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';
Необходимо заменить PASSWORD на пароль, который будет использоваться для доступа к БД.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'PUTTHEPRIVATEKEYHERE', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
Обратите внимание, что signature_key должен содержать тот же ключ, который указан в /etc/sysconfig/push-server-multi
в соответствующем ключе. Если все хорошо, то после перезапуска apache2:
systemctl restart apache2
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы RedHat8 для установки на неё продуктов 1С-Битрикс24 (коробочная версия)
и 1С-Битрикс: Управление сайтом
. Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Для начала необходимо установить дистрибутив Red Hat Enterprise Linux 8 (RedHat8). В процессе установки выберите сервер с минимальными настройками.
По завершении установки нужно активизировать подписку, иначе не будут работать установки и обновления системы:
subscription-manager register --username email_address --password password --auto-attach
Подписка привязана к аккаунту. В качестве email_address и password укажите тот, с помощью которого регистрировались на сайте RedHat.
Для установки можно использовать только официальные репозитории от RedHat.
В качестве менеджера пакетов используется dnf. Обновите систему до последней стабильной версии. Отключите selinux
su - dnf update -y echo 'SELINUX=disabled' > /etc/sysconfig/selinux reboot
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Ниже приведен весь список пакетов, который нам понадобится для 1С-Битрикс24 коробочная версия
. Для 1С-Битрикс: Управление сайтом
не нужен только push-server.
dnf -y install httpd dnf -y install php php php-cli php-common \ php-devel php-gd php-json php-mbstring \ php-mysqlnd php-opcache php-pdo php-pear \ php-pecl-apcu php-pecl-zip php-process php-xml php-ldap
С 01.02.2023 ограничивается поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версия PHP – 8.1 и выше. Поэтому после установки необходимо обновить PHP до версии не ниже 8.0.
dnf install nginx -y
dnf install mariadb -y
dnf install nodejs -y
dnf install redis -y
Выполните конфигурацию Nginx.
/var/www/html/bx-site
.Конфигурация nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # переменные, используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основный блок с включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает все те же возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redhat8/nginx
.
Разместите их в директории /etc/nginx/
.
В сервисе используются имена для проксирования на определенные службы:
Чтобы заработала конфигурация, необходимо прописать их в локальных адресах. Если сервисы расположены на другом хосте, укажите здесь правильный адрес:
echo "127.0.0.1 push httpd" >> /etc/hosts
Запустите сервис:
systemctl --now enable nginx
Добавьте правила для firewalld:
firewall-cmd --zone=public --add-service=https --permanent firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
В данной версии установки централизованное хранилище конфигов: /etc/php.d
.
Минимальные настройки, которые необходимо добавить:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redhat8/php.d
.
Разместите их в директории /etc/php.d/
.
По умолчанию Apache настроен на дефолтный сайт в каталоге /var/www/html
.
Основные действия для настройки конфигурации Apache:
var/www/html/bx-site
;
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redhat8/httpd
.
Разместите их в директории /etc/httpd/
.
Необходимо настроить файлы:
conf.d/default.conf
– в описании сайта замените каталог на conf/httpd.conf
;conf/httpd.conf
– в Listen замените порт на 8090;conf.modules.d
– меняем на 00-mpm.conf.Модуль php для apache работает только с менеджером процессов prefork. Включите его.
Запустите сервис:
systemctl --now enable httpd
Для конфигурации MariaDB выполните следующие настройки:
READ-COMMITTED
;O_DIRECT
(рекомендованная, но не обязательная настройка);
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redhat8/my.cnf.d
.
Разместите их в директории /etc/my.cnf.d/
.
Запустите сервис:
systemctl --now enable mariadb
Настройка сервиса выполняется через mysql_secure_installation.
Данный сервис необходим для организации Push-сервера.
Основные настройки, которые необходимо выполнить в конфигураторе:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redhat8/redis
.
Разместите их в директории /etc/redis/
и выполните команды:
su - usermod -g apache redis chown root:apache /etc/redis/ /var/log/redis/ mkdir /etc/systemd/system/redis.service.d echo -e '[Service]\nGroup=apache' > /etc/systemd/system/redis.service.d/custom.conf systemctl daemon-reload
Запустите сервис:
systemctl --now enable redis
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) – публичные, проксируются со стандартных портов 80/443. Запросы публикации (pub) – доступны только с внутреннего адреса сервера.
Nodejs-процессы делятся на два типа:
Для запуска Push-сервера необходимы:
Для установки понадобится Python и утилита make:
dnf install python3 make -y
Выполните следующие действия:
su - cd /opt wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz npm install --production ./push-server-0.3.0.tgz
/opt
. Далее выполните установку:
su - cd /opt npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
+ push-server@0.3.0 added 65 packages in 46.522s
su - ln -sf /opt/node_modules/push-server/logs /var/log/push-server ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
echo 'd /tmp/push-server 0770 apache apache -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
Отредактируйте конфигурационный файл /etc/sysconfig/push-server-multi
. В нём нужно исправить/добавить параметры:
cat /dev/urandom |tr -dc A-Za-z0-9 | head -c 128
Пример настроек параметров:
GROUP=apache SECURITY_KEY="SECURITYKEY123456" RUN_DIR=/tmp/push-server
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате [dw]json[/dw][di]push-server-sub-80XX.json
push-server-pub-90XX.json[/di] будут размещены в каталоге: /etc/push-server/
.
/etc/systemd/system/push-server.service
измените пользователя:
[Service] User=apache Group=apache ExecStart=/usr/local/bin/push-server-multi systemd_start ...
chown wwwrun:www /opt/node_modules/push-server/logs /tmp/push-server -RH
systemctl daemon-reload
systemctl --now enable push-server
/etc/sysconfig/push-server-multi
.
Создайте рабочий каталог:
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown www-data:www-data /var/www/html/bx-site -R
Аналогичным образом можно скачать нужный дистрибутив и установить его в каталог: /var/www/html/bx-site
.
Создайте базу данных и пользователя:
create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';
Необходимо заменить PASSWORD на пароль, который будет использоваться для доступа к БД.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'PUTTHEPRIVATEKEYHERE', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
Обратите внимание, что signature_key должен содержать тот же ключ, который указан в /etc/sysconfig/push-server-multi
в соответствующем ключе. Если все хорошо, то после перезапуска httpd:
systemctl restart httpd
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы РЕД ОС 7.2 для установки на неё продуктов 1С-Битрикс24 (коробочная версия)
и 1С-Битрикс: Управление сайтом
. Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Для начала необходимо установить дистрибутив РЕД ОС 7.2. В процессе установки выберите сервер с минимальными настройками (в противном случае в результате получите десктоп).
Для установки можно использовать только официальные репозитории РЕД ОС. Вам понадобится версия 7.2 (в поставке версия php 7.1, а в репозитории доступна 7.2).
В качестве менеджера пакетов используется yum. Обновите систему до последней стабильной версии и отключите selinux:
su - yum update -y echo 'SELINUX=disabled' > /etc/sysconfig/selinux reboot
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Ниже приведен список всех пакетов, которые понадобятся для 1С-Битрикс24 (коробочная версия)
. Для 1С-Битрикс: Управление сайтом
список аналогичен (не нужно устанавливать только push-server).
# yum install httpd -y # yum -y install php php-cli php-common \ php-devel php-gd \ php-imap php-json php-ldap php-mbstring \ php-mysqlnd php-opcache php-pdo \ php-pear php-pear-DB php-pecl-apcu \ php-pecl-apcu-bc php-pecl-geoip \ php-pecl-mcrypt php-pecl-memcache \ php-pecl-ssh2 php-process php-pspell php-xml php-zipstream
С 01.02.2023 ограничивается поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версия PHP - 8.1 и выше. Поэтому после установки необходимо обновить PHP до версии не ниже 8.0.
yum install nginx -y
yum -y install mariadb-server mariadb
yum install nodejs -y
yum install redis -y
Настройте конфигурацию Nginx.
/var/www/html/bx-site
.Конфигурация nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # параменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основные блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает те же возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redos/nginx
.
Разместите их в директории /etc/nginx/
.
В сервисе используются имена для проксирования на определенные службы:
Чтобы заработала конфигурация, необходимо прописать их в локальных адресах. Если сервисы расположены на другом хосте, укажите здесь правильный адрес:
echo "127.0.0.1 push httpd" >> /etc/hosts
Запустите сервис:
systemctl --now enable nginx
В данной версии установки централизованное хранилище конфигов: /etc/php.d
.
Минимальные настройки, которые необходимо добавить:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для PHP расположены в папке: redos/php.d
.
Разместите их в директории /etc/php.d/
.
По умолчанию Apache настроен на дефолтный сайт в каталоге /var/www/html
.
Основные действия для настройки конфигурации Apache:
var/www/html/bx-site
; Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Apache расположены в папке: redos/httpd
.
Разместите их в директории /etc/httpd/
.
Необходимо настроить два файла:
conf.d/default.conf
– в описании сайта замените каталог на var/www/html/bx-site
;conf/httpd.conf
– в Listen замените порт на 8090.conf.modules.d/00-mpm.conf
- смена mpm event на prefork.Запустите сервис:
systemctl --now enable httpd
Для конфигурации MariaDB выполните следующие настройки:
READ-COMMITTED
;O_DIRECT
(рекомендованная, но не обязательная настройка); Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для MariaDB расположены в папке: redos/my.cnf.d
.
Разместите их в директории /etc/my.cnf.d/
.
Запустите сервис:
systemctl --now enable mariadb
Настройка сервиса выполняется через mysql_secure_installation.
Данный сервис необходим для организации Push-сервера.
Основные настройки, которые необходимо выполнить в конфигураторе:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redos/redis
.
Разместите их в директории /etc/redis/
и выполните команды:
su - usermod -g apache redis chown root:apache /etc/redis/ /var/log/redis/ [[ ! -d /etc/systemd/system/redis.service.d ]] && mkdir /etc/systemd/system/redis.service.d echo -e '[Service]\nGroup=apache' > /etc/systemd/system/redis.service.d/custom.conf systemctl daemon-reload
Запустите сервис:
systemctl --now enable redis
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) – публичные, проксируются со стандартных портов 80/443. Запросы публикации (pub) – доступны только с внутреннего адреса сервера.
Nodejs-процессы делятся на два типа:
Для запуска Push-сервера необходимы:
Выполните следующие действия:
su - cd /opt wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz npm install --production ./push-server-0.3.0.tgz
/opt
. Далее выполните установку:
su - cd /opt npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
added 73 packages, and audited 74 packages in 8s
su - ln -sf /opt/node_modules/push-server/logs /var/log/push-server
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
/etc/sysconfig/push-server-multi
исправьте (или добавьте, если их нет) следующие параметры:
cat /dev/urandom |tr -dc A-Za-z0-9 | head -c 128
Пример настроек параметров:
GROUP=apache SECURITY_KEY="SECURITYKEY123456" RUN_DIR=/tmp/push-server
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате [dw]json[/dw][di]push-server-sub-80XX.json
push-server-pub-90XX.json[/di] будут размещены в каталоге: /etc/push-server/
.
echo 'd /tmp/push-server 0770 apache apache -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
/etc/systemd/system/push-server.service
измените пользователя:
[Service] User=apache Group=apache ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ...
systemctl daemon-reload
systemctl --now enable push-server
/etc/sysconfig/push-server-multi
.
Создайте рабочий каталог:
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown apache:apache /var/www/html/bx-site -R
Аналогичным образом скачайте нужный дистрибутив и установите его в каталог: /var/www/html/bx-site
.
Создайте базу данных и пользователя:
create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';
Необходимо заменить 'PASSWORD'
, на пароль который будете использовать для доступа к БД.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'SECURITYKEY123456', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
/etc/sysconfig/push-server-multi
в соответствующем ключе. Если все хорошо, то после перезапуска httpd:
systemctl restart httpd
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы РЕД ОС 7.3 для установки на неё продуктов 1С-Битрикс24 (коробочная версия)
и 1С-Битрикс: Управление сайтом
. Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Для начала необходимо установить дистрибутив РЕД ОС 7.3. В процессе установки выбирите сервер с минимальной настройкой (в противном случае получите декстоп).
Для установки можно использовать только официальные репозитории от Ред ОС. Вам понадобятся обновления (в поставке версия php 7.4 , в репозитории доступна 8.1).
В качестве менеджера пакетов используется yum. Обновляем систему до последней стабильной версии. Отключаем selinux:
su - yum update -y echo 'SELINUX=disabled' > /etc/sysconfig/selinux reboot
Ниже приведен список всех пакетов, которые понадобятся для "1С-Битрикс24 (коробочная версия)". Для "1С-Битрикс: Управление сайтом" список аналогичен (не нужно устанавливать только push-server).
# yum install httpd -y # yum install -y php81-release # yum install -y \ php php-cli php-common php-devel \ php-gd php-imap php-json php-ldap \ php-mbstring php-mysqlnd php-opcache \ php-pdo php-pear php-pear-DB php-pecl-apcu \ php-pecl-mcrypt php-pecl-memcache \ php-process php-pspell php-xml php-zipstream
yum install nginx -y
yum -y install mariadb-server mariadb
yum install nodejs npm -y
yum install redis -y
Настройте конфигурацию Nginx:
/var/www/html/bx-site
.Конфигурация NGINX сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # параменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основный блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redos/nginx
.
rsync -av redos/nginx/ /etc/nginx/
В сервисе используются имена для проксирования на определенные службы:
Чтобы заработала конфигурация, необходимо прописать их в локальных адресах. Если сервисы расположены на другом хосте, указываем здесь правильный адрес.
echo "127.0.0.1 push httpd" >> /etc/hosts
Запускаем сервис
systemctl --now enable nginx
В данной версии установки централизованное хранилище конфигов: /etc/php.d
.
Минимальные настройки, которые необходимо добавить:
opcache.max_accelerated_files = 100000 opcache.revalidate_freq = 0
display_errors = Off error_reporting = E_ALL error_log = '/var/log/php/error.log' ; Set some more PHP parameters enable_dl = Off short_open_tag = On allow_url_fopen = On # Security headers mail.add_x_header = Off expose_php = Off ...
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для PHP расположены в папке: redos/php.d
.
su - cd /tmp hg clone http://hg.bx/repos/bx-os cd bx-os rsync -av redos/php.d/ /etc/php.d/
По умолчанию apache настроен на дефолтный сайт в каталоге /var/www/html
.
Основные действия для настройки конфигурации Apache:
/var/www/html/bx-site
, Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Apache расположены в папке: redos/httpd
.
su - cd /tmp hg clone http://hg.bx/repos/bx-os cd bx-os rsync -av redos/httpd/ /etc/httpd/
Мы настраиваем три файла:
conf.d/default.conf
– в описании сайта замените каталог на var/www/html/bx-site
;conf/httpd.conf
смена значения Listen на порт 8090conf.modules.d/00-mpm.conf
- смена mpm event на prefork.Запустите сервис:
systemctl --now enable httpd
Для конфигурации MariaDB выполните следующие настройки:
READ-COMMITTED
;O_DIRECT
(рекомендованная, но не обязательная настройка); Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для MariaDB расположены в папке: redos/my.cnf.d
.
Разместите их в директории /etc/my.cnf.d/
.
Запустите сервис:
systemctl --now enable mariadb
Настройка сервиса выполняется через mysql_secure_installation.
Данный сервис необходим для организации работы Push-сервера.
Основные настройки, которые необходимо выполнить в конфигураторе:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: redos/redis
.
Разместите их в директории /etc/redis/
и выполните команды:
su - usermod -g apache redis chown root:apache /etc/redis/ /var/log/redis/ [[ ! -d /etc/systemd/system/redis.service.d ]] && mkdir /etc/systemd/system/redis.service.d echo -e '[Service]\nGroup=apache' > /etc/systemd/system/redis.service.d/custom.conf systemctl daemon-reload
Запустите сервис:
systemctl --now enable redis
Схема работы
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Запросы получения сообщений (например, sub) – публичные, проксируются со стандартных портов 80/443. Запросы публикации (pub) – доступны только с внутреннего адреса сервера.
Nodejs-процессы делятся на два типа:
Для запуска Push-сервера необходимы:
Выполните следующие действия:
su - cd /opt wget https://repo.bitrix.info/vm/push-server-0.3.0.tgz npm install --production ./push-server-0.3.0.tgz
/opt
. Далее выполните установку:
su - cd /opt npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
added 73 packages, and audited 74 packages in 8s
su - ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
/etc/sysconfig/push-server-multi
исправьте (или добавьте, если их нет) следующие параметры:
cat /dev/urandom |tr -dc A-Za-z0-9 | head -c 128
Пример настроек параметров:
GROUP=apache SECURITY_KEY="PUTTHEPRIVATEKEYHERE" RUN_DIR=/tmp/push-server
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате [dw]json[/dw][di]push-server-sub-80XX.json
push-server-pub-90XX.json[/di] будут размещены в каталоге: /etc/push-server/
.
echo 'd /tmp/push-server 0770 apache apache -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
Создайте каталог логов:
mkdir /var/log/push-server chown apache:apache /var/log/push-server
/etc/systemd/system/push-server.service
измените пользователя:
[Service] User=apache Group=apache ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ...
systemctl daemon-reload
systemctl --now enable push-server
/etc/sysconfig/push-server-multi
.
Создайте рабочий каталог:
mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown apache:apache /var/www/html/bx-site -R
Аналогичным образом скачайте нужный дистрибутив и установите его в каталог: /var/www/html/bx-site
.
Создайте базу данных и пользователя:
create database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';
Необходимо заменить 'PASSWORD'
, на пароль который будете использовать для доступа к БД.
Для работы портала необходимо настроить push-server. Сервис запущен, необходимо сделать настройки.
Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'PUTTHEPRIVATEKEYHERE', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
systemctl restart httpd
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
В главе описаны настройки окружения для операционной системы ALT 8 SP Server для установки на неё продуктов 1С-Битрикс24 коробочная версия
и 1С-Битрикс: Управление сайтом
. Рассмотрена установка и настройка самой операционной системы, установка необходимых пакетов и конфигурация сервисов.
Начнем с установки продукта Alt 8 SP Server. В процессе установки доступен выбор набора пакетов. Выберите набор пакетов для организации web-сервера. Остальные (например, такие как сервер печати, samba сервер и т.п.) отключите.
Внимание: Дальнейшая настройка будет показана именно на базе такой установки.
Дополнительно подключите репозитории, т.к. на установочном диске есть не все нужные нам пакеты.
В качестве менеджера пакетов используем apt-get.
su - apt-repo rm all vim /etc/apt/sources.list.d/altsp-C.list # <-- в этом файле раскомментируйте нужное зеркало, которое зависит от типа установки apt-get update apt-get dist-upgrade update-kernel -t un-def reboot
su - remove-old-kernels -t un-def
Обязательно нужно открыть порты:
Остальные порты для:
нужно открывать, если только они используются. Можно выбрать произвольные порты, а можно те же, что используются в CentOS:
Ниже приведен весь список пакетов, который нам понадобится для 1С-Битрикс24 коробочная версия
. Для 1С-Битрикс: Управление сайтом
из этого набора не нужен только push-server.
Установка по шагам:
Если Вы выбрали минимальную установку (а не web-сервер), то просто поставьте все пакеты из списка ниже:
su - apt-get install apache2-mods apache2-htcacheclean \ apache2-cgi-bin-test-cgi apache2-htpasswd \ apache2-httpd-prefork apache2-mod_php7 \ apache2-mod_cache_disk apache2 \ apache2-datadirs apache2-cgi-bin-printenv \ apache2-htcacheclean-control apache2-html \ apache2-ab apache2-base apache2-httpd-worker apache2-cgi-bin apache2-icons apt-get install php7-mcrypt php7-imap \ php7 php7-xsl php7-gd php7-memcache \ php7-exif php7-zip php7-mbstring \ php7-fileinfo apache2-mod_php7 \ php7-libs php7-dom php7-xmlrpc php7-dba php7-curl \ php7-mysqli php7-openssl php7-opcache
С 01.02.2023 ограничивается поддержка наших продуктов на PHP версии ниже 8.0. Рекомендуемая версия PHP – 8.1 и выше. Поэтому после установки необходимо обновить PHP до версии не ниже 8.0.
su - apt-get install nginx
su - apt-get install mariadb-server mariadb-client
su - apt-get install node npm
su - apt-get install redis
Выполним конфигурацию Nginx.
/var/www/html/bx-site
.Конфигурация nginx сервера:
/etc/nginx/nginx.conf # основной конфигурационный файл |_conf.d/upstreams.conf # конфигурация для upstream серверов: apache && push-server |_conf.d/maps-composite_settings.conf # переменные используемые для кеша |_conf.d/maps.conf # дополнительные переменные |_conf.d/http-add_header.conf # CORS заголовки |_sites-available/*.conf # подключаем сайты |_default.conf # сайт по умолчанию (настраиваем только 80 порт) |_conf.d/bx_temp.conf # конфигурация BX_TEMPORARY_FILES_DIRECTORY |_conf.d/bitrix.conf # дефолтная конфигурация сайта |_rtc.conf # проксирование запросов на push-server (публикация)
Дефолтная конфигурация сайта:
conf.d/bitrix.conf # основный блоки со включенным по умолчанию кешем в файлах |_conf.d/bitrix_general.conf # отдача статики, быстрая отдача для внешних хранилищ и прочее |_conf.d/errors.conf # обработка ошибок |_conf.d/im_subscrider.conf # проксирование запросов на push-server (получение) |_conf.d/bitrix_block.conf # блокировки по умолчанию
Конфигурация взята из виртуальной машины и может показаться избыточной, но фактически поддерживает все те же возможности, что и виртуальная машина.
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Nginx расположены в папке: alt8/nginx
.
Разместите их в директории /etc/nginx/
.
Для удобства, в конфигурационных файлах используются имена серверов httpd - apache2, сервис push push-server. По умолчанию они будут ставиться на локальную машину, поэтому прописываем следующие записи в /etc/hosts
:
127.0.0.1 httpd push
Если Вы планируете развернуть данные сервисы на отдельных хостах, то нужно прописать правильный IP в /etc/hosts
или сконфигурировать DNS сервер.
Запустите сервис:
systemctl --now enable nginx
В данной версии установки два местоположения для конфигов:
/etc/php/7.2/cli/php.d/
настройка CLI;/etc/php/7.2/apache2-mod_php/php.d/
настройки модуля Apache.Минимально необходимо добавить настройки для модуля Apache:
opcache.max_accelerated_files = 100000
opcache.revalidate_freq = 0
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для PHP находятся в папке: alt8/php.d
.
Разместите их в директории /etc/php/7.2/apache2-mod_php/php.d/
.
Можно проверить, что php нашел все модули без проблем и нет ошибок в конфигурации:
php -m
Создайте каталоги для сессий и загрузки файлов:
mkdir /tmp/php_upload /tmp/php_sessions chown apache2:_webserver /tmp/php_upload /tmp/php_sessions -R
Каталоги в /tmp
находятся под управлением tmpfiles, делаем настройку для них:
vim /etc/tmpfiles.d/bitrix.conf ---- d /tmp/php_sessions 0770 apache2 _webserver - d /tmp/php_upload 0770 apache2 _webserver - ----
По умолчанию Apache настроен на дефолтный сайт в каталоге /var/www/html
.
Основное, что требуется сделать для настройки конфигурации Apache:
var/www/html/bx-site
; Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Apache находятся в папке: alt8/httpd2
.
Разместите их в директории /etc/httpd2/
.
Настроить требуется три файла:
conf/ports-available/http.conf
- указать новый порт: 8090;conf/sites-available/default.conf
- заменить каталог в описании сайта на var/www/html/bx-site
;conf/httpd2.conf
- изменить группу пользователя на _webserver.Отключите приватный Tmp каталог для сервиса httpd:
mkdir /etc/systemd/system/httpd2.service.d echo -e "[Service]\nPrivateTmp=false\n" /etc/systemd/system/httpd2.service.d/custom.conf systemctl daemon-reload
После этого запустите сервис:
systemctl --now enable httpd2
Для конфигурации MariaDB требуется выполнить такие настройки:
READ-COMMITTED
;O_DIRECT
(желательная, но не обязательная настройка); Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для MariaDB находятся в папке: alt8/my.cnf.d
.
Разместите их в директории /etc/my.cnf.d/
.
Запустите сервис:
systemctl --now enable mariadb
Настройте пароль для доступа к серверу и прочие опции безопасности через скрипт:
mysql_secure_installation ..... Set root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB without having to have a user account created for them. This is intended only for testing, and to make the installation go a bit smoother. You should remove them before moving into a production environment. Remove anonymous users? [Y/n] y ... Success! Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y ...
Данный сервис нам нужен для организации Push-сервера.
Основное, что нам важно установить в конфигурации:
Все конфигурационные файлы можно скачать в архиве. Конфигурационные файлы для Redis находятся в папке: alt8/redis
.
Разместите их в директории /etc/redis/
и выполните:
su - usermod -g apache2 \_redis chown root:apache2 /etc/redis/ /var/log/redis/ mkdir /etc/systemd/system/redis.service.d echo -e '[Service]\nGroup=apache2' > /etc/systemd/system/redis.service.d/custom.conf systemctl daemon-reload
Запустите сервис:
systemctl --now enable redis
Схема работы:
----------------------- --------------------------------------------------- | nginx: 0.0.0.0:80 | -> /bitrix/sub|/bitrix/subws -> | node server.js --config push-server-sub-80XX.json | ----------------------- --------------------------------------------------- ----------------------- --------------------------------------------------- | nginx: 127.0.0.1:8895 | -> /bitrix/pub -> | node server.js --config push-server-pub-90XX.json | ----------------------- ---------------------------------------------------
Nginx проксирует запрос на push-сервис выбранного типа. Публикация сообщений ограничена для локальной ноды.
Nodejs-процессы делятся на два типа:
Для запуска Push-сервера нам понадобятся:
Выполните действия:
wget https://repo.bitrix.info/vm/push-server-0.3.0.tgzи разместите его в директории
/opt
. Выполните установку:
su - cd /opt npm install --production ./push-server-0.3.0.tgz
Установка закончится строкой:
+ push-server@0.3.0 added 144 packages from 151 contributors and audited 144 packages in 10.388s
su - ln -sf /opt/node_modules/push-server/etc/push-server /etc/push-server
su - cd /opt/node_modules/push-server cp etc/init.d/push-server-multi /usr/local/bin/push-server-multi cp etc/sysconfig/push-server-multi /etc/sysconfig/push-server-multi cp etc/push-server/push-server.service /etc/systemd/system/ ln -sf /opt/node_modules/push-server /opt/push-server
/etc/sysconfig/push-server-multi
. В нём нужно исправить/добавить параметры:
Пример настроек параметров:
USER=apache2 GROUP=_webserver SECURITY_KEY="SECURITYKEY123456" RUN_DIR=/tmp/push-server
/usr/local/bin/push-server-multi configs pub /usr/local/bin/push-server-multi configs sub
Сгенерированные конфигурации в формате [dw]json[/dw][di]push-server-sub-80XX.json
push-server-pub-90XX.json[/di] будут размещены в каталоге: /etc/push-server/
.
echo 'd /tmp/push-server 0770 apache2 _webserver -' > /etc/tmpfiles.d/push-server.conf systemd-tmpfiles --remove --create
mkdir /var/log/push-server chown apache2:_webserver /var/log/push-server
/etc/systemd/system/push-server.service
[Service] User=apache2 Group=_webserver ExecStart=/usr/local/bin/push-server-multi systemd_start ExecStop=/usr/local/bin/push-server-multi stop ....
systemctl daemon-reload
systemctl --now enable push-server
/etc/sysconfig/push-server-multi
.mkdir /var/www/html/bx-site cd /var/www/html/bx-site wget https://www.1c-bitrix.ru/download/scripts/bitrixsetup.php chown apache2:_webserver /var/www/html/bx-site -RАналогичным образом можно скачать нужный дистрибутив и установить его в каталог:
/var/www/html/bx-site
.reate database portal; CREATE USER 'bitrix'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON portal.* to 'bitrix'@'localhost';Необходимо заменить PASSWORD на пароль, который будете использовать для доступа к БД.
Для работы портала необходимо настроить push-server. Настройки могут быть выполнены через [dw]административный раздел портала[/dw][di]Настройки производятся на странице http://_имя_сайта_/bitrix/admin/settings.php?lang=ru&mid=pull
Подробнее...[/di], а можно добавить их в конфигурационный файл. Покажем как это делается вторым способом.
Исправьте конфигурационный файл /var/www/html/bx-site/bitrix/.settings.php
, добавив следующую секцию:
return array ( 'pull' => Array( 'value' => array( 'path_to_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener' => 'http://#DOMAIN#/bitrix/sub/', 'path_to_modern_listener_secure' => 'https://#DOMAIN#/bitrix/sub/', 'path_to_mobile_listener' => 'http://#DOMAIN#:8893/bitrix/sub/', 'path_to_mobile_listener_secure' => 'https://#DOMAIN#:8894/bitrix/sub/', 'path_to_websocket' => 'ws://#DOMAIN#/bitrix/subws/', 'path_to_websocket_secure' => 'wss://#DOMAIN#/bitrix/subws/', 'path_to_publish' => 'http://localhost:8895/bitrix/pub/', 'path_to_publish_web' => 'http://#DOMAIN#/bitrix/rest/', 'path_to_publish_web_secure' => 'https://#DOMAIN#/bitrix/rest/', 'nginx_version' => '4', 'nginx_command_per_hit' => '100', 'nginx' => 'Y', 'nginx_headers' => 'N', 'push' => 'Y', 'websocket' => 'Y', 'signature_key' => 'SECURITYKEY123456', 'signature_algo' => 'sha1', 'guest' => 'N', ), ), ...
systemctl restart httpd2
Вы увидите запросы к push-server:
Request URL: ws://sitename/bitrix/subws/?CHANNEL_ID=.... Request Method: GET Status Code: 101 Switching Protocols
Монитор производительности показывает скорость работы сайта на хостинге, выявляет узкие места (скрипты на сайте, которые потребляют наибольшее число системных ресурсов) и основные ошибки настройки сервера.
Подробнее про оптимальную настройку сервера можно посмотреть в главе [ds]Конфигурирование веб-систем для оптимальной работы[/ds][di]Типовые настройки серверного программного обеспечения рассчитаны на минимальное оборудование и статические HTML-приложения. Внесение некоторых конфигурационных изменений в серверное ПО позволяет в несколько раз увеличить производительность системы в целом, сократить время генерации страниц, увеличить устойчивость системы к пиковым нагрузкам.
Подробнее ...[/di].
Глобальные параметры модуля определяются на странице настроек Монитор производительности (Настройки > Настройки продукта > Настройки модулей > Монитор производительности).
Для настройки модуля доступны следующие опции:
Если монитор включен, то в поле Активность монитора будет отображен статус Работает, при этом ниже будет выведена информация: До окончания активности осталось: (часов:минут:секунд).
Вкладка Генератор таблетов предназначена для разработчиков. На ней включается автоматическая генерация таблетов для ORM и настраиваются параметры генератора.
Настройка прав доступа производится типовым для Bitrix Framework способом. Подробнее про [ds]настройку доступа[/ds][di]Настройка прав доступа к модулям системы позволяет определить диапазон допустимых действий пользователя над модулем и его контентом. Управление правами доступа к модулям выполняется:
Подробнее ...[/di] к модулям.
Для оценки производительности в публичной части сайта используется кнопка [dw]Отладка[/dw][di][/di], которая позволяет отображать статистику прямо на странице:
Статистика в целом по странице отображается внизу страницы:
Ссылка Всего SQL запросов позволяет отобразить более подробную информацию обо всех запросах на странице в специальной форме (см. ниже).
Для просмотра информации о запросах компонента, необходимо выбрать пункт меню Статистика включаемых областей и затем использовать ссылку вида Запросов: n, отображаемую в информационной области, которая расположена рядом с компонентом:
Откроется форма, в которой будет отображена [dw]информация о запросах[/dw][di]В нижней части формы отображается детальная информация о каждом запросе. Для отображения информации о другом запросе компонента необходимо использовать ссылку в верхней части формы.[/di]:Данные о кеше выводятся во всплывающем окне:
Важнейшим показателем качества работы любого сайта является скорость его загрузки. Если посетителю вашего ресурса придется ждать загрузки страницы хотя бы несколько секунд, с высокой долей вероятности он уйдет.
Скорость сайта - комплексный показатель комфортности работы с сайтом для посетителей. [dw]Инструмент[/dw][di]Доступен после установки обновления main 14.9.0 и только для русских версий продуктов "1C-Битрикс: Управление сайтом".[/di] учитывает качество разработки сайта, качество хостинга и доступность сайта по сети. Рассчитывается для 1000 последних посетителей сайта. Скорость сайта фактически показывает, как быстро отобразился сайт для большинства из этих 1000 посетителей.
В отличие от большинства сервисов, замеряющих скорость загрузки сайта из внешних точек, скорость загрузки ресурса инструментом Скорость сайта проверяется на хитах реальных пользователей. Так как посетители все время меняются, то и данные меняются вместе с ними.
На Рабочем столе в административной части есть гаджет, показывающий текущую скорость загрузки страниц вашего сайта:
Как считается Скорость сайта | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Для подсчёта данных скорости сайта в этом инструменте используется стандартная функция любого современного браузера: Navigation Timing API. В браузере есть объект performance с ключом timing, который возвращает временные отметки этапов запроса к странице:
События полного цикла загрузки страницы:
Скоростью сайта считается время между Технология подсчёта значения Скорость сайта следующая: из 1250 последних хитов вычитаются 250 (20%) самых медленных. Для оставшихся считается [ds]медиана,[/ds][di]
Медиа́на (от лат. mediāna — середина) в математической статистике — число, характеризующее выборку (например, набор чисел). Если все элементы выборки различны, то медиана — это такое число выборки, что ровно половина из элементов выборки больше него, а другая половина меньше него. В более общем случае медиану можно найти, упорядочив элементы выборки по возрастанию или убыванию и взяв средний элемент.
Примечание: 20% "плохих" хитов откидываются, чтобы исключить ошибку, связанную с неустойчивыми каналами связи (мобильный интернет, связь в средствах транспорта и подобные).
На Скорость сайта оказывают влияние различные факторы: производительность и настройки сервера, скорость "интернета" (доставки страничек сайта до посетителей), качество разработки сайта и использование различных технологий, ускоряющих его работу. Например, сторонние подключаемые скрипты, которые долго загружаются и исполняются, могут в итоге увеличивать общее время отображения страницы. Сюда же входит правильность настройки сервера и его производительность, которую можно оценить на странице [ds]Монитор производительности[/ds][di]Для оценки производительности необходимо перейти в раздел Монитор производительности (Настройки > Производительность > Панель производительности).... |
Для просмотра подробной информации о скорости загрузки сайта перейдите на страницу Скорость сайта (Настройки > Производительность > Скорость сайта).
В самом верху страницы выбирается сайт, для которого будет показана статистика. В списке доступны адреса всех сайтов, привязанных к лицензионному ключу. Ниже отображается оценочная характеристика скорости работы сайта:
Чтобы оперативно контролировать скорость работы сайта прямо с этой же страницы можно перейти к настройкам в [ds]Панели производительности[/ds][di]Для оценки производительности необходимо перейти в раздел Монитор производительности (Настройки > Производительность > Панель производительности).
Подробнее ...[/di], [ds]Композитного сайта[/ds][di]Для включения технологии необходимо понять какой режим вы хотите использовать (автоматический или ручной) и нажать кнопку включения на нужной закладке. Активизация одного из режимов делает неактивной кнопку включения другого режима.
Подробнее ...[/di] и [ds]CDN[/ds][di]После включения поддержки CDN ссылки на статические файлы сайта (картинки, файлы стилей css, скрипты js) будут заменены. Вместо локальных URL'ов будут использоваться служебные имена серверов сети CDN. При этом не потребуется вносить никакие изменения в DNS и не нужно заботиться о сбросе кеша CDN при обновлении файлов.
Подробнее ...[/di].
Выводить только лишь средний показатель не эффективно. Страницы могут различаться как по количеству контента, так и по количеству скриптов и времени их выполнения. Для этого доступна соответствующая диаграмма, которая показывает, как распределились страницы и какие из них влияют на ухудшение среднего результата:
На диаграмме показано время, с которым страницу увидел посетитель, и количество страниц, загруженных с таким временем. Если подвести курсор к конкретному столбцу диаграммы, то будут отображены 10 страниц с худшими показателями времени загрузки.
Еще ниже представлен график, отображающий статистику последних посещений сайта на разных этапах загрузки страницы:
Чтобы собиралась статистика по нагрузке страниц, должен быть включен Монитор производительности (в настройках модуля, опция Включить монитор).
На странице Монитор производительности: страницы (Настройки > Производительность > Страницы) можно просмотреть отчет по нагружаемости страниц:
Переход по ссылке с названием страницы позволяет просмотреть все её хиты на странице Хиты.
На странице Монитор производительности: компоненты (Настройки > Производительность > Компоненты) можно просмотреть отчет по используемым на страницах сайта компонентам или включаемым областям:
Переход по ссылке в графе Запросы позволяет просмотреть все SQL Запросы компонента на странице SQL Запросы.
Здесь же можно включить группировку по компонентам, если необходимо увидеть общую картину по использованию того или иного компонента.
Учёт хитов |
На странице Монитор производительности: хиты (Настройки > Производительность > Хиты) выводится отчет по [dw]хитам[/dw][di]Хит - это запрос к веб-серверу для получения файла (веб-страницы, изображения, JavaScript'а, таблицы стилей и т. д.).
Подробнее...[/di]:
Переход по ссылке >> позволяет перейти на желаемую страницу в публичную часть сайта и просмотреть [dw]детальную статистику[/dw][di][/di].
Переход по ссылке с названием страницы (или по ссылке в графе Запросы) позволяет просмотреть все SQL запросы хита на странице SQL Запросы.
Переход по ссылке в графе Компоненты позволяет просмотреть отчет по используемым компонентам для хита на странице Компоненты.
Отчёт по SQL запросам |
На странице Монитор производительности: запросы (Настройки > Производительность > SQL запросы) отображается отчет, если в настройках модуля включены опции [dw]Вести журнал запросов и Сохранять стек вызова для SQL запросов.[/dw][di][/di]:
Двойной клик по строке таблицы с запросом или пункт меню действий План исполнения позволит просмотреть план исполнения запроса [dw]в новом окне[/dw][di][/di].
После проведения теста в панели производительности наведение указателя мыши на текст запроса вызовет его стек. В первой строке отображается исходная функция, вызвавшая его:
Файлы кеша |
Информация о файлах кеша доступна при включённой в настройках модуля Монитор производительности опции [dw]Вести журнал кеширования[/dw][di][/di]. В этом случае эта информация отобразится на странице Кеширование (Настройки > Производительность > Кеширование).
Кнопка Группировка позволяет выбрать режим отображения данных в таблице:
Ссылки в таблице позволяют применять фильтр, согласно выбранному полю. Для полей таблицы в колонке Файл ссылка с названием позволяет перейти к просмотру содержимого этого файла.
Документация по теме: |
Просмотреть их можно наа странице Таблицы в базе данных (Настройки > Производительность > Таблицы ):
Показ столбца Размер индексов добавлен с версии модуля 23.0.0.
Работая со списком таблиц вы можете использовать:
Переход по ссылке с именем таблицы позволяет просмотреть её содержимое.
При открытии таблицы из списка, вы увидите список всех её записей. На такой странице доступны следующие возможности:
Поясним на примере. Выберем таблицу b_search_content и в контекстном меню конкретной записи (в примере: ID=41) укажем выборку строки [dw]из связанной таблицы[/dw][di][/di] (b_search_content_text). Выполнится выборка тех строк таблицы b_search_content_text, где SEARCH_CONTENT_ID
=41.
Индексы
Заочно нельзя сказать какие [ds]индексы[/ds][di]Поиско́вый и́ндекс - структура данных, которая содержит информацию о документах и используется при поиске на сайте.
Подробнее ...[/di] необходимо создавать, надо всегда рассматривать конкретную ситуацию. Они нужны для конкретных выборок на конкретных проектах. В зависимости от архитектуры и логики проекта медленные запросы получаются у каждого свои, и для них нужны свои индексы, часто составные.
Страницы Анализ индексов и Список индексов - инструмент анализа и рекомендаций по созданию индексов.
Анализ индексов лучше производить после получения списка медленных запросов. Для этого в настройках модуля включите [dw]соответствующую опцию[/dw][di][/di] и установите время, после которого запрос будет считаться медленным. Рекомендуемое время работы монитора - [dw]сутки[/dw][di] Данное время работы можно установить, если отмечена опция Записывать только медленные SQL запросы. В противном случае время работы монитора составляет до 1 часа. [/di], но, опять же, надо учитывать реалии конкретного проекта.
После получения списка медленных запросов на странице Анализ индексов (Настройки > Производительность > Индексы > Анализ индексов) необходимо воспользоваться кнопкой Выполнить анализ собранных SQL запросов и отобразится список всех запросов, которые были совершены за это время, отсортированных по имени таблицы:
В общем списке в первую очередь нужно обращать внимание на запросы с большей продолжительностью и на большое их количество. Но и в случае больших величин у этих параметров не на каждый запрос стоит создавать индекс (возможно нужно просто исправить код компонента). Косвенным критерием успешности создания индекса служит время выполнения запроса до и после создания индекса.
При необходимости можно посмотреть план выполнения любого запроса. Команда Детальный анализ позволяет перейти к анализу конкретного запроса и созданию его индекса.
На этой странице жирным шрифтом выделяются таблица и колонки, к которым обращается запрос.
[dw]Структура таблицы[/dw][di][/di] - информационная закладка. Главное в ней - размер таблицы. И если размер большой (к примеру, больше 100 мегабайт), то построение и удаление индексов лучше проводить в часы наименьшей нагрузки на сайт.
[dw]Анализ запросов[/dw][di][/di] - закладка с собственно анализом запроса. При принятии решения о создании индекса учитывайте, селективен ли этот запрос и процент [dw]селективности[/dw][di]Селективность индекса – это отношение количества различных проиндексированных значений к общему количеству строк в таблице. Индекс с высокой селективностью хорош тем, что позволяет Базе данных при поиске соответствий отфильтровывать больше строк. Подробнее...[/di]. Информация об этом выводится в таблице.
Создание индекса - закладка, на которой непосредственно принимается решение о создании (или нет) индекса. Те запросы, по которым не нужно создавать индекс, можно внести в список Не предлагать создавать.
Запросы, по которым принято решение, пропадают из списка запросов и появляются на странице Список индексов.
Страница Список индексов (Настройки > Производительность > Индексы > Список индексов) отображает результаты ваших решений по анализу тех или иных запросов. "Зелёный" статус - индекс создан, "красный" статус - индекс не будет создаваться.
На странице Монитор производительности: настройки PHP (Настройки > Производительность > PHP) отображается сводная таблица Параметры окружения с анализом параметров PHP.
С помощью ссылки Настройки PHP можно перейти на страницу с подробной информацией (phpinfo).
На странице Монитор производительности: журнал ошибок PHP (Настройки > Производительность > Ошибки PHP (N)) можно просмотреть журнал регистрации ошибок PHP, где N - общее количество ошибок.
Журнал ошибок PHP ошибок хранится в базе. Удалить журнал ошибок PHP можно с помощью опции [dw]Удалить собранные ранее данные[/dw][di]Доступна только при отключенном мониторе
[/di] в настройках модуля Монитор производительности.
Наблюдаем за сервером |
На странице Монитор производительности: сервер БД (Настройки > Производительность > Сервер БД) отображается сводная статистика производительности сервера базы данных и рекомендации:
Значения, отличающиеся от рекомендуемых, выделяются цветом:
История работы над производительностью |
На странице История замеров производительности (Настройки > Производительность > История) выводятся результаты прошлых замеров производительности.
В таблице отображается производительность системы с указанием даты замера.
Вы узнаете, как протестировать производительность, определить проблему и поправить "узкие" места сайта.
Для оценки производительности перейдите в раздел Монитор производительности (Настройки > Производительность > Панель производительности).
Нажатие кнопки Тестировать производительность позволит вам определить слабые места настройки хостинга. Важно понимать, что цифры в строке Конфигурация могут отличаться в разы при изменении нагрузки на сервер: если нагрузки нет, производительность может быть высокой, если есть – она сможет снизиться. Это связано с тем, что данные цифры показывают скорость открытия пустой страницы сайта и, естественно, зависят от общей загрузки сервера.
Проблема далеко не всегда кроется в хостинге, она может быть и в самом сайте. Модуль позволяет определить проблему и исправить её. Для этого требуется запустить тест производительности в течение некоторого времени – для [dw]малопосещаемых проектов[/dw][di]Если сайт малопосещаемый, рекомендуется самому открывать различные страницы сайта для сбора статистики модуля.[/di] – час, для посещаемых можно выбрать меньшее время. Система будет фиксировать посещения и собирать статистику о времени выполнения каждой страницы, числе SQL запросов и другие параметры.
Если [dw]Производительность = 18,66[/dw][di][/di], то публичная страница сайта с пустым шаблоном (например, версия для печати), с пустой рабочей областью будет создаваться за 1/18,66 или 0,0536 сек. Если говорить проще, то сервер сгенерирует 18 (пустых, но с подключением ядра) страниц в секунду. То есть чем выше число, тем производительнее работает сайт.
Умножив 18 (страниц в секунду) на 60 получим, что сервер может генерировать около 1080 пустых, но с подключением ядра, страниц в минуту. Так, если посещаемость ресурса составляет всего 1000 человек в день, то производительность сервера будет [dw]на пределе[/dw][di]Предполагается, что эта 1000 посетителей вдруг зашла на сайт одномоментно.[/di]. Естественно, в реальных условиях производительность будет ниже, в зависимости от "нагруженности" различных страниц сайта, нагрузки на сам сервер и других условий.
Показатель производительности не вычисляется на основе производительности файловой системы, работы базы, сессий и почты. Эти цифры нужны для того, чтобы помочь системному администратору найти узкое место (если такое есть). Величина производительности всегда обратна величине среднего времени отклика.
При оценке производительности учтите что:
/bitrix/php_interface/init.php
. Во вкладке отображаются текущие показатели производительности подсистем сервера и сравнение их с показателями эталонной системы.
Если какая-то подсистема не удовлетворяет оптимальным условиям, то будет выведена ссылка с рекомендациями по исправлению в колонке Примечание.
Монитор производительности не имеет прямого доступа к системным ресурсам, поэтому оценки, полученные средствами PHP, в большей степени отражают работу PHP, чем сервера.
Во вкладке отображаются текущие настройки продукта, непосредственно влияющие на производительность, с соответствующими рекомендациями для оптимальной работы продукта.
Клик по рекомендации – переход на страницу системы, где выполняются эти настройки.
В этой вкладке отображается список страниц сайта, среднего времени выполнения и предполагаемых ошибок разработчика.
Например, ошибка, которую предлагается исправить, - некэшированные компоненты.
Чтобы увидеть причину ошибки, нажмите на адрес страницы в колонке 20 самых нагружающих страниц.
Список адресов и статистики выполнения для страницы /catalog/index.php
:
Обратите внимание – на странице /catalog/index.php
размещён комплексный компонент Каталог с включенным ЧПУ, поэтому реальные URL для этой страницы – разные. Приведенная таблица отсортирована по уменьшению времени выполнения страницы, и хорошо видно, что если в первый раз страница открывалась 1,5 секунды, то в последующие разы с постоянным уменьшением времени. При этом сработало кэширование компонентов, и, как следствие - уменьшение времени на выполнение SQL-запросов.
Проверим, какие компоненты выполняются на этой странице. Для этого нажмите на число в колонке Компоненты нужной страницы. Список компонентов и их характеристики для хита 14 по адресу /catalog/t-shirts/t-shirt-men-s-fire/
.
[dw]Вы увидите[/dw][di][/di] список компонентов, подключаемых на странице, число SQL-запросов из них и тип кэширования. В этом списке ищутся те некэшированное компоненты, о которых сообщал монитор производительности.
Аналогичным образом просматривается список SQL-запросов на этой странице (для данного хита). Для определения, какой из компонентов не кэшируется вернитесь на страницу Монитор производительности: хиты и нажмите на ссылку >> перед адресом страницы, откроется сводная статистика по странице. Здесь вы увидите, на каком именно этапе построения страницы сайта [dw]затрачивается максимальное время[/dw][di][/di].
Если на Панели управления нажата кнопка Отладка (Отладка > Суммарная статистика), то в этом окне будет отображён и [dw]список компонентов страницы[/dw][di][/di]. Любой из компонентов можно настроить, выбрав его из этого списка. Как правило, компоненты расположены в том же порядке, что и на странице диагностики.
Получаем количественные данные |
В модуле [ds]Монитор производительности[/ds][di]Монитор производительности показывает скорость работы сайта на хостинге, выявляет узкие места (скрипты на сайте, которые потребляют наибольшее число системных ресурсов) и основные ошибки настройки сервера.
Подробнее ...[/di] доступен встроенный инструмент тестирования нагрузки многопоточных и [ds]веб-кластерных[/ds][di]
Модуль Веб-кластер — это комбинация технологических решений, которые позволяют распределить один сайт на несколько серверов, решая тем самым несколько задач:
1) обеспечение высокой доступности сайта;
2) его масштабирование в условиях возрастающей нагрузки;
3) балансирование нагрузки, трафика, данных между несколькими серверами.
Подробнее...[/di] систем (Настройки > Производительность > Панель производительности, вкладка Масштабируемость).
Для проведения теста настройте форму. Поясним некоторые поля.
Также на тестируемом сайте необходимо на время проведения теста отключить опцию блокировки пользователя при большом количестве соединений ([dw]Блокировать?[/dw][di][/di]) в настройках модуля Веб-аналитика, вкладка Настройки, секция Ограничение активности.
Нажмите Начать тестирование, и в реальном времени будут строиться: таблица с результатами, графики генерации Страниц в секунду и Время генерации/получения страницы.
Таблица Результаты
Помимо колонок № теста и Соединений, пояснения к которым не требуются, в таблице также присутствуют следующие колонки:
200 ОК
;График Страниц в секунду
С увеличением количества одновременных соединений сервер должен отдавать больше страниц, поэтому при нормальных условиях график должен иметь тенденцию к росту. Если при росте нагрузки график имеет горизонтальный вид, то это значит, что настройки не оптимальны или сервер начинает уже не справляться.
В тесте с одинаковом количеством соединений график не должен иметь провалов.
График Время генерации/получения страницы
С увеличением количества одновременных соединений время отдачи страниц клиентам будет также увеличиваться (синий график), а время генерации не должно меняться в широких пределах (красный график).
Документация по теме: |
Перед сдачей проекта протестируйте сайт и найдите ошибки в верстке, неправильно настроенного кэширования и другие мелкие недочеты. Для этого скачайте два-три раза все страницы на жесткий диск. Для этой цели хорошо подходит бесплатная программа 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.
В первую очередь необходимо проверить наличие [ds]акселератора php[/ds][di]Наличие акселератора php просто жизненно необходимо, даже без дополнительных настроек страницы открываются в три раза быстрее, во столько же раз снижается нагрузка на процессор.
Подробнее ...[/di]. Это специальный модуль, который выполняет прекомпиляцию php скриптов, что позволяет уменьшить время работы скриптов в среднем в три раза.
Затем проверить, не включено ли расширение [ds]open_basedir[/ds][di]На shared хостинге сложно отделить клиентов друг от друга. Самый простой вариант: включить open_basedir, тогда на все операции с файлами происходит дополнительная проверка пути.
Подробнее ...[/di].
Наиболее просты в определении и легки для детектирования две проблемы:
Причины могут быть разные, но, пожалуй, одни из самых частых:
Для первой проблемы. В коде страниц сайта имеются битые ссылки, которые переадресуются на индексную или на 404 страницу. Такие несуществующие адреса легко отлавливаются после получасового теста Монитора производительности.
Для второй проблемы: после сбоя некоторые таблицы базы данных оказались повреждены. В результате нагрузка на MySQL возросла в сотни раз. 5-ти минутный тест Монитора производительности показал, что причина – в нескольких поврежденных таблицах в разделе Каталог.
Типовые настройки серверного программного обеспечения рассчитаны на минимальное оборудование и статические HTML-приложения. Внесение некоторых конфигурационных изменений в серверное ПО позволяет в несколько раз увеличить производительность системы в целом, сократить время генерации страниц, увеличить устойчивость системы к пиковым нагрузкам.
В этой главе приведены рекомендации по настройке серверного ПО, которые выполняются сотрудниками компании «Битрикс» при конфигурировании проектов с посещаемостью более 3-10 тысяч уникальных пользователей в день, либо при недостаточности системных ресурсов для обработки меньшей нагрузки.
Все рекомендации относятся в основном к UNIX-системам или Windows-системам, использующим веб-сервер Apache.
Рекомендованные решения не являются единственными возможными. Предполагается, что данные инструкции послужат руководством для создания и доработки данных рекомендаций в соответствии с имеющимися ресурсами, оборудованием, конфигурациями из нескольких серверов.
Веб-приложения отличаются от программ, работающих под управлением операционной системы, например, Windows.
Основное отличие – в задачах. Windows-приложение ожидает действий пользователя и работает постоянно, пока оно запущено. В случае веб-приложения посетитель сайта видит уже результат выполнения программы, которая, к этому времени, уже завершила свою работу и освободила ресурсы сервера для обслуживания других посетителей. При открытии другой (или этой же) страницы выполняется новый экземпляр программы, который, после выдачи данных пользователю, также завершается.
Таким образом, в операционной системе вам принадлежат все ресурсы компьютера, и почти неограниченное время, а в Веб вам принадлежит лишь совсем чуть-чуть памяти (обычно 32-256 мб) и немного времени (обычно не более 30-90 секунд). Кроме того, спецификой любого более-менее посещаемого проекта является необходимость обслуживать различное число посетителей в разное время суток, и простым увеличением ресурсов сервера добиться необходимого качества очень сложно.
В связи с этим конфигурирование веб-систем для работы с проектами на платформе Bitrix Framework имеет свои особенности.
Раньше HTML-проекты представляли собой обычный статический документ, который содержал специальные теги разметки. С точки зрения администратора веб-сайта, данные документы считываются веб-сервером и передаются по TCP/IP протоколу. Не выполняется никаких дополнительных приложений, не потребляется дополнительная память, не используется база данных. Это очень просто и удобно, но этого уже недостаточно для современных проектов.
Наличие программной среды в системе управления сайтом позволяет создавать динамические интернет-проекты, оперативно и легко управлять информацией, анализировать эффективность проектов, менять содержимое вашего сайта в зависимости от тех или иных потоков посетителей и многое другое. Можно сказать, что все современные веб-проекты создаются с использованием того или иного языка программирования.
Программный продукт "1C-Битрикс: Управление сайтом" разработан на языке программирования PHP. На данный момент поддерживается PHP версии 8.0.0 и выше.
Обратите внимание на отличие PHP от скриптов, написанных на других языках, например, на Perl или C: вместо того, чтобы создавать программу, которая занимается формированием HTML-кода и содержит бесчисленное множество предназначенных для этого команд, создается HTML-код с несколькими внедренными командами PHP. Код PHP отделяется специальными начальным и конечным тегами, которые позволяют процессору PHP определять начало и конец участка HTML-кода, содержащего PHP-скрипт.
Значительным отличием PHP от какого-либо кода, выполняющегося на стороне клиента, например, JavaScript, является то, что PHP-скрипты выполняются на сервере. Если бы у вас на сервере был размещен PHP-скрипт, клиент получил бы только результат выполнения скрипта, причем он не смог бы выяснить, какой именно код выполняется. Вы даже можете сконфигурировать свой сервер таким образом, чтобы HTML-файлы обрабатывались процессором PHP, так что клиенты даже не смогут узнать, получают ли они обычный HTML-файл или результат выполнения скрипта.
С точки зрения администратора, принципиально важен тот факт, что PHP является интерпретируемым языком и PHP-скрипт исполняется только на сервере. Интерпретируемый язык - это значит, что сколько бы раз вы не запрашивали страницу на языке программирования PHP, она будет каждый раз обрабатываться на сервере специальным интерпретатором PHP, будет проверяться синтаксис языка, правильность конструкций и вызовы функций, и только после этого, код PHP будет исполняться.
Таким образом, в отличие от обычных HTML-страниц, сайты на PHP потребляют больше оперативной памяти на один процесс веб-сервера. Веб-сервер может приступить к передаче страницы клиенту в большинстве случаев только после того, как страница готова и PHP выполнил свои инструкции. Это приводит к некоторому замедлению по сравнению с HTML-страницами в выдаче содержимого клиенту.
Дополнительным фактором, влияющим на производительность системы, является правильное использование баз данных. Все современные проекты для отображения динамической информации (новостей, каталога товаров и др.) используют СУБД (системы управления базами данных), а СУБД, в свою очередь, требует правильной настройки своих параметров.
База данных представляет собой независимое клиент-серверное приложение, которое запускается и работает в операционной системе. Внешние приложения соединяются с базой данных через TCP/IP или внутренние потоки, направляют SQL-запросы и получают в ответ от базы данных необходимые данные.
Возможно два типа соединения с базой данных для веб-приложения:
Обычное соединение устанавливается каждый раз во время выполнения страницы при первом обращении к базе данных. Установленное соединение освобождается (в большинстве случаев и закрывается) после завершения страницы.
Постоянное соединение (функции PHP обычно называются *_pconnect) устанавливается один раз при первом обращении к базе данных и при повторных обращениях, даже из других страниц, используются уже открытые соединения к базе данных.
Учитывая, что открытие соединения к базе данных - процесс относительно дорогой по ресурсам и времени (происходит установление TCP/IP соединения, выделяются буферы памяти, проводится проверка и авторизация, настраиваются перекодировщики и выполняется целый ряд других функций), использование постоянных соединений является предпочтительным, если это не приводит к превышению числа одновременных соединений с базой данных. Целесообразность применения постоянных соединений прямо пропорциональна частоте обращений к базе данных, то есть посещаемости сайта.
Например, если на сайте за 15 минут в среднем бывает по 100 посетителей, применение define("DBPersistent", true);
целесообразно, если по 5, то, конечно же, нет.
localhost
или localhost:port
, PHP в большинстве своем будет пытаться соединиться с локальным сокетом без использования TCP/IP. Если вы все же хотите использовать TCP/IP, используйте адрес 127.0.0.1 вместо localhost.
Соединение без использования TCP/IP дает наивысшие результаты по производительности, особенно при передаче больших объемов информации из базы данных. Но если база данных расположена на другой машине и избежать соединения по TCP/IP не удается, использование постоянного соединения становится еще более выгодным.
В большинстве случаев база данных работает на той же машине, что и PHP-приложение и веб-сервер. Но вполне возможна ситуация, когда база данных установлена на соседней машине или даже у другого провайдера. "1С-Битрикс: Управление сайтом" устанавливает соединение с сервером базы данных через стандартные библиотеки, которые идут в поставке языка программирования PHP.
В "1С-Битрикс: Управление сайтом" с версии 20.900.0 тип соединения с базой данных устанавливается в файле [dw]/bitrix/.settings.php
[/dw][di]В файле: /bitrix/php_interface/dbconn.php
до этой же версии[/di] в ядре D7.
Пример содержимого файла:
'connections' => array ( 'value' => array ( 'default' => array ( 'className' => '\\Bitrix\\Main\\DB\\MysqlConnection', 'host' => 'localhost:31006', 'database' => 'admin_bus', 'login' => 'admin_bus', 'password' => 'admin_bus', 'options' => 2, 'handlersocket' => array ( 'read' => 'handlersocket', ), ),
Используйте константу DBPersistent
, чтобы установить тип соединения с базой данных.
define("DBPersistent", false);
Использование постоянных соединений может потребовать некоторой настройки Apache и MySQL. Убедитесь, что вы не превысите максимальное число дозволенных соединений. Читайте дополнительную информацию в документации PHP относительно используемой вами базы данных.
Комплексное сочетание целого ряда факторов может привести к тому, что проект получает название «большой» и требует определенного конфигурирования и отношения:
Прежде чем переходить к выбору рекомендаций по конфигурированию, необходимо внимательнее изучить основные причины, которые приводят к нестабильной работе веб-сервера или даже к полному отказу в обслуживании. Четкое понимание причин позволит вам вдумчиво подходить к рекомендациям и максимально эффективно использовать все имеющиеся у вас аппаратные ресурсы.
Рассмотрим типичную схему работы веб-сервера:
При запросе страницы сайта происходит обращение к веб-серверу, который запускает интерпретатор PHP для выполнения скрипта. Далее программа выполняется, взаимодействует с СУБД и отдает результат выполнения клиенту. Кроме того, веб-сервер отдает клиенту сопутствующие файлы – картинки, документы, css файлы и другую статическую информацию.
В современных сайтах при открытии каждой страницы клиенту отдается несколько десятков файлов – от действительно результата выполнения PHP программы до статических картинок.
Важно отметить, что для отдачи каждого файла используется, как правило, отдельный процесс Apache, который занимает память веб-сервера. В 2012 году средний размер процесса Apache в памяти – от 64 до 500 мб, и очень легко занять всю оперативную память процессами веб-сервера.
Выделим несколько узких мест в приведенной схеме:
Работа веб-сервера 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 и продукта и не зависит от медленных каналов.
Это очень наглядный пример, который демонстрирует, насколько велико влияние медленных каналов пользователей на общую производительность веб-системы. Веб-сервер очень неэффективно расходует оперативную память на медленных каналах.
Немного забегая вперед отметим, что существуют методы, которые позволяют построить систему очень близкую к модели Б и полностью снять зависимость веб-системы от медленных каналов и увеличить производительность и устойчивость в несколько раз.
Рассмотрим остальные "узкие места".
До 60% рабочего времени веб-сервера тратят на повторную компиляцию PHP-кода перед исполнением. Ключевой способ снизить нагрузку на процессор – использовать прекомпиляторы PHP-кода, которые снижают нагрузку на систему за счет перевода PHP из интерпретируемого в частично компилируемый язык.
Если ваш проект работает на выделенном сервере, вы можете настроить взаимодействие с СУБД для уменьшения затрат времени на установку соединений. Для этого используется постоянные соединения с базой данных, что позволяет уменьшить общее время выполнения скрипта.
Установки по умолчанию для большинства СУБД рассчитаны на некие средние величины. Для повышения производительности необходимо оптимизировать эти настройки.
Также как и при передаче данных клиенту, для повышения производительности хостинга необходимо решить вопрос с медленными каналами связи, но уже применительно к статической информации. Все сказанное для первого пункта применимо и для отдачи статики.
Таким образом, при больших нагрузках проект может прекратить нормальное функционирование по следующим причинам:
Наилучшим способом для устранения перечисленных проблем является создание двухуровневой системы Front-End + Back-End для обработки запросов.
Рассмотрим пример конфигурации более детально. После применения оптимизации у нас должна получиться система примерно следующего вида:
Начнем с построения 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 уровня:
Как вы видите, появление Front-end позволяет нам снять целую категорию рисков и подготовить систему к дальнейшей работе
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 представляет собой обычный веб-сервер Apache, который исполняет PHP-приложения.
Back-end готов исполнять запросы на графические и статические документы, если вы используете кэширующий прокси-сервер для Front-end. Но очень важно, чтобы число запросов к статическим элементам через Back-end было минимальным и 99% запросов приходилось на выполнение именно PHP-страниц. Не забывайте, что использование Back-end для обработки статических запросов обходится очень дорого.
Конфигурируя Back-end, можно добиться значительного выигрыша в производительности и стабилизировать систему по расходу памяти. В большинстве случаев Back-end представляет собой обычный веб-сервер Apache, работающий на нестандартном порту, к примеру, на порту 88 и отвечающий только на запросы с localhost или IP адреса Front-end.
Рассмотрим процесс взаимодействия Front-End и Back-End при обработке запроса пользователя к обычной странице сайта.
Пример уменьшения объема занимаемой оперативной памяти и числа процессов при подключении Front-end сервера (без настройки на отдачу статических файлов).
В этом примере был подключен NGINX, который все запросы, в том числе и запросы к статике, передавал back-end (Apache). Никаких дополнительных настроек на Back-end не выполнялось. Время подключения nginx – 12:50.
Используемая веб-сервером память:
Число одновременно выполняемых процессов Apache:
Как показала практика, двухуровневая конфигурация Front-end + Back-end существенно разгружает машину, уменьшает объемы потребляемой памяти, значительно ускоряет время обработки запросов и позволяет больше памяти выделить для работы базы данных. Такая конфигурация также позволяет значительно разгрузить сервер при обработке большого числа статических файлов, например, музыки, дистрибутивов программных продуктов, презентаций и других схожих объектов. Например, простым подключением NGINX удалось снизить нагрузку на веб-сервер в 5 раз.
Даже создав двухуровневую конфигурацию, очень важно стабилизировать системы по расходу памяти независимо от нагрузки и защитить сервер от перегрузки.
Для стабилизации системы по расходу памяти и минимизации числа запущенных процессов Back-end мы рекомендуем в настройках сервера Apache установить параметр MaxClients в значении от 5 до 50, в зависимости от объема оперативной памяти. Значение этого параметра не должно превышать 80% от объема доступной памяти сервера за вычетом памяти, выделенной под СУБД. Устанавливая MaxClients, вы ограничиваете возможное число одновременно запущенных процессов Back-end. Тем самым, удается поставить жесткий лимит по потреблению памяти и исключить выход машины из строя при стрессовых нагрузках.
Зависание сервера при слишком большом значении 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 в процессе нагрузочного тестирования.
Обратите внимание, что очень важно настраивать время ожидания для 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 оперативной памяти, что позволит остальную память распределить для базы данных.
?show_page_exec_time=Y
) в пиковые моменты показывает стабильно минимальное значение, а визуально мы наблюдаем существенную задержку перед открытием страницы, то это может свидетельствовать о нехватке процессов Back-end. Иными словами о том, что запросы принимаются Front-end и долго удерживаются в ожидании высвобождения Back-end процессов.
В этом случае можно рекомендовать увеличить MaxClients, но обязательно с учетом общего баланса системы по расходу памяти.
Еще одно преимущество использования MaxClients связано с базами данных.
Наличие лимита позволяет включить постоянное соединение к базе данных (только если у вас свой сервер с 1-2-я проектами) и уменьшить время соединения с базой данных и число работающих процессов базы данных. Если величина параметра MaxClients меньше или равна максимальному числу соединений с базой данных, то это гарантирует, что никогда не будет запущено больше этого числа процессов Back-end. Следовательно к базе данных не будет открыто больше соединений. Фактически, всегда в памяти будут находиться MaxClients загруженных процессов Back-end с открытыми соединениями к базе данных, готовые к обработке запросов.
Еще раз подчеркнем, что соблюдение этих рекомендаций позволяет:
Ключевой способ снизить нагрузку на процессор – использовать прекомпиляторы PHP-кода. В настоящее время поддерживается акселератор OPcache (рекомендуется, доступен сразу «из коробки» в PHP v.5.5+).
Не забывайте выделять достаточный объем оперативной памяти для хранения разделяемого кэша скомпилированных PHP-файлов. Обычно бывает достаточно 32-64 Мб, но для уверенности можно увеличить объем выделяемой памяти до 128 Мб, в расчете на файлы административного раздела. Прекомпиляторы используют разделяемый кэш для хранения скомпилированного PHP кода в оперативной памяти, который доступен всем рабочим процессам веб-сервера, при этом скомпилированный PHP код хранится в кэше в единственном экземпляре (без дублирования).
Для уменьшения потребляемой памяти процессами веб-сервера, в котором запускается PHP, желательно исключить из компиляции или динамической загрузки все неиспользуемые модули.
При этом очень важно, чтобы в кэш прекомпилятора помещалось достаточное количество скриптов на PHP. Одна из самых часто встречающихся ошибок - это отсутствие каталога для сохранения откомпилированного кода.
Для ускорения работы с PHP-сессиями рекомендуется сохранять файлы сессий в каталоге, который представляет собой виртуальный диск в памяти или использовать установку session.save_handler=mm
в php.ini. Если есть возможность, рекомендуется использовать системный RAM диск. При этом необходимо отключать опцию Передавать пароль в зашифрованном виде на закладке Авторизация страницы настроек Главного модуля.
Важным инструментом по настройке производительности PHP является модуль Монитор производительности, входящий в комплект всех продуктов "1С-Битрикс". Протестировать настройки системы можно в административной части на странице Панель производительности (Настройки > Производительность > Панель производительности). Неоптимальная конфигурация PHP:
Как правило, выполнение рекомендаций позволяет увеличить производительность системы до достаточных величин. Численное значение параметра Конфигурация показывает основную характеристику сайта – скорость отдачи страниц клиенту. Чем больше число, тем лучше.
Ошибка Segmentation fault может произойти:
В первом случае необходимо определить в dbconn.php:
define("NO_BITRIX_AUTOLOAD",true)
Во втором случае надо:
-c
, которая позволяет указать папку, в которой необходимо искать файл php.ini. define('BX_NO_ACCELERATOR_RESET', true)
Компрессия при передаче данных между сервером и клиентом обеспечивает сжатие страниц для ускорения вывода содержания сайта пользователям.
Сжатие в несколько раз уменьшает объем передаваемых HTML-данных между сайтом и браузером клиента, что существенно увеличивает скорость работы как для посетителей, так и для администраторов сайта.
Предпочтительнее сжимать страницы на Front-End. При отсутствии такой возможности можно сжимать данные на Back-End.
Возможные способы:
Для исключения излишнего расходования процессорных ресурсов рекомендуется применять сжатие только на одном уровне. Например, при использовании сжатия Front-end сервером рекомендуется не использовать сжатие на уровне Apache и отключить модуль компрессии "1С-Битрикс: Управление сайтом".
По умолчанию, при работе в двухуровневой конфигурации, в качестве адреса клиента будет указываться адрес, на котором работает 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 находится или на этой машине, или "рядом", более быстрое высвобождение ресурсов предпочтительнее.
В результате построения двухуровневой архитектуры и выполнения ряда рекомендаций мы должны получить следующие результаты:
В качестве примера рассмотрим конфигурацию виртуальной машины VMBitrix. В состав конфигурации входят:
Для рассмотрения и управления настройками перейдите в консоль виртуальной машины или подключитесь к ней через ssh или sftp.
Основным конфигурационным файлом веб-сервера является /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 и подобным.
Как определить максимальное число процессов веб-сервера? Естественно, только опытным путем. При этом начальное значение можно подобрать достаточно просто - нужно посмотреть, сколько занимает процесс apache во время типового обращения к сайту:
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
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 Гб.
Каталог с конфигурацией 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|/rest.*)$ { 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, вам необходимо добавить в конфигурацию сервера строки, подобные этим:
location ~* \.(jpg|jpeg|gif)$ { root /var/www; access_log off; expires 3d; }
В приведенном примере все файлы с расширением jpg, jpeg или gif будут считываться напрямую NGINX, причем корневой папкой для хранения файлов будет /var/www
.
Оптимизация работы с базой данных MySQL является одной из важнейших стратегий в оптимизации системы в целом.
У каждого производителя базы данных есть целый раздел в документации, который посвящен вопросам производительности и оптимизации её работы.
Вы должны понимать, что типовая поставка базы данных обычно подразумевает минимальное серверное оборудование, минимальную память и диски. Т.е. стандартные конфигурации не учитывают возможности вашего оборудования и вашего приложения. Вы обязательно должны настраивать базу данных для обеспечения оптимальной работы.
Если кратко попробовать сформулировать стратегию оптимизации, то прозвучит это примерно так:
Давать конкретные рекомендации по настройке базы данных достаточно сложно, так как сервер базы данных - это сложное приложение и вам обязательно нужно проконсультироваться с документацией поставщика по вопросам настройки.
Но стоит отметить особое преимущество, которое мы получили в результате создания двухуровневой конфигурации. Созданная нами система сбалансирована по расходу оперативной памяти, и мы точно знаем свободный объем памяти и можем безопасно для системы использовать эту память для конфигурирования базы данных. В большинстве систем порядка 60-80% оперативной памяти удается выделить для базы данных и это позволяет значительно ускорить работу всей системы в целом.
Важным параметром, влияющим на потребление памяти базой данных MySQL, является максимальное число одновременных соединений, определяемое параметром max_connections
(для старых установок с БД Oracle – это параметр processes
).
При использовании двухуровневой архитектуры Front-end/Back-end можно в несколько раз уменьшить число одновременных соединений и высвободить больше памяти для сортировки данных в памяти и буферизации.
Если установлено число MaxClients в настройках веб-сервера Back-end, можно считать, что максимальное число соединений к базе данных будет соответствовать максимальному числу одновременных соединений.
Рекомендуется подбирать параметр max_connections
таким образом, чтобы иметь резерв в 10-20% свободных соединений от максимального значения.
Оптимизация работы с базой данных для MySQL-версии продукта является одной из важнейших стратегий в оптимизации системы в целом, так как продукт активно работает с базой данных.
Простой формат данных MyISAM хранит каждую таблицу с данными или индекс в отдельном файле. В целом, на небольших по нагрузке сайтах данный формат является наиболее быстрым, хотя и не обеспечивает полной целостности и надежного хранения данных за счет отсутствия транзакций.
Основным недостатком MyISAM с точки зрения производительности является блокировка на уровне таблицы при выполнении тех или иных операций. В результате, при большой нагрузке MySQL именно MyISAM таблицы становятся основным узким местом в системе, мешая увеличивать утилизацию машины и число обрабатываемых запросов. Это также приводит к увеличению времени работы страницы за счет ожидания используемых таблиц на уровне MySQL.
Рекомендуется переводить все таблицы проекта в формат данных InnoDB. Формат InnoDB, начиная с версии MySQL 4.0, входит в стандартную поставку продукта и обеспечивает надежное хранение данных, транзакционность и блокирование данных на уровне строки.
Два важных момента, которые дают основание предпочесть таблицы InnoDB перед MyISAM:
Недостатки InnoDB: нужно внимательно следить за свободным местом на диске; накапливающаяся фрагментация данных (лечится периодическим переводом таблиц из InnoDB в MyISAM и обратно).
Поменять тип таблиц на InnoDB можно следующим образом:
SHOW TABLES
ALTER TABLE <ИМЯ ТАБЛИЦЫ>, type=InnoDB
В FAQ приведен пример для создания скрипта для перевода таблиц в InnoDB.
/bitrix/php_interface/dbconn.php
нижеследующий код:
define("MYSQL_TABLE_TYPE", "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% свободной памяти в системе.
Пример рекомендуемых настроек для сервера с 2 Гб оперативной памяти, работающего с операционной системой FreeBSD/Linux:
set-variable = table_open_cache=4096
В составе продукта около 250 таблиц, поэтому рекомендуется увеличивать кэш для заголовков таблиц.
set-variable = key_buffer_size=16M set-variable = sort_buffer_size=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_buffer_pool_size
. Вы должны сами определить оптимальность перехода вашего проекта на формат данных InnoDB.При наличии достаточного количества ОЗУ рекомендуется выносить временную папку MySQL на ramdisk в памяти.
Для этого:
# mkdir /mnt/tmpfs/ # chmod 777 /mnt/tmpfs/
# mount -t tmpfs -o size=1024M tmpfs /mnt/tmpfs/ или $ sudo mount -t tmpfs -o size=1024M tmpfs /mnt/tmpfs/где 1024M есть размер RAMdisk в Мегабайтах.
Общие рекомендации по настройке Oracle совпадают с рекомендациями Oracle по конфигурированию системы для уменьшения дисковых операций чтений, сортировки и перестроения.
Стоит обратить внимание на системные переменные управления памятью. Рекомендуется использовать до 60-80% оперативной памяти для кеширования данных за счет управления переменными:
db_cache_size shared_pool_size pga_aggregate_target
Начиная с версии Oracle 10, рекомендуется использовать Automatic Shared Memory Management:
Для экономии места 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);
COMMIT_WRITE='BATCH,NOWAIT'
.В качестве примера рассмотрим как настроена база данных MySQL в виртуальной машине VMBitrix.
Перейдите в папку /etc/mysql
и посмотрите настройки MySQL для виртуальной машины. Выключите виртуальную машину и установите ей большее значение ОЗУ (например, 512 мб). Посмотрите, как изменились настройки в файле /etc/mysql/conf.d/bvat.cnf
:
[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
.Всегда минимизируйте запросы. Например, если в цикле идет запрос к элементу ИБ, то уже необходимо задуматься над минимизацией. Да, это займет больше времени, но вам скажут спасибо клиенты.
Нельзя:
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-ков } }
Фактически, вы сводите порой десятки, если не сотни, запросов к одному.
Если для какого-либо изменения в БД предусмотрен специальный метод, то следует использовать именно его, а не более общий метод изменения БД.
Хороший пример - модуль интернет-магазина и работа с заказом: можно изменить флаг оплаты заказа путем CSaleOrder::Update, а можно путем CSaleOrder::PayOrder. Так вот, следует применять именно PayOrder, потому что в нем произойдет вызов соответствующих обработчиков.
Даже если вам надо изменить множество полей (того же заказа) и флаг оплаты, то произведите изменение через PayOrder, а затем уже апдейт остальных полей.