- “Битрикс: Веб-окружение” – установка и настройка
- Что получим
- Установка «1С-Битрикс: Веб-окружение» на сервер
- Битрикс веб окружение для linux
- Баллы опыта
- Переезд на кластер под управлением «1С-Битрикс: Веб-окружение»
- 1. Установить bitrixenv
- 2. Настроить bitrixenv
- 3. Перенос проекта
- 4. Включение кластерного режима работы
- 5. Тюнинг производительности
- Выводы
- Плюсы bitrixenv
- Минусы bitrixenv
“Битрикс: Веб-окружение” – установка и настройка
В начале этого года Битрикс выпустили новую, седьмую, версию своего “Веб-окружения”. Самое главное – теперь официально поддерживается установка на CentOS 7 и php 7. Небольшое пояснение, если вы не в курсе. «1С-Битрикс: Веб-окружение» – это готовая среда с предустановленным рекомендуемым набором программного обеспечения, необходимого для корректной работы CMS 1С-Битрикс. Поставляется как в большом многообразии – есть готовые образа для различной виртуализации (подробнее см. на официальном сайте) и установочный скрипт для установки на сервер. Вот работу с последним мы и рассмотрим.
Что получим
Веб-окружение позиционируется, как лучшее решение для всей линейки продуктов Битрикс – как для всех редакций “1С-Битрикс: Управление Сайтом” так и для коробки Битрикс24. Давайте посмотрим, что нам предлагают использовать в качестве рекомендуемой связки.
Сама схема традиционна: Apache+nginx. Для текущей 7.0.1 версии веб-окружения используются стабильные Apache 2.4 и nginx 1.10.2. Самое главное нововведение, переход на php 7. Про официальную поддержку nginx+php-fpm пока даже слухов нет, так что данный вариант по прежнему придется собирать руками.
Версия MySQL, а точнее форка MariaDB, по прежнему 5.5, в соответствии с официальными репозиториями CentOS. Хотя, если вы обновлялись до последних версий Битрикс, наверняка встречали предложение выполнить в консоли БД некий sql-запрос для модуля “Веб-мессенджер”, который можно провернуть только с версией 5.6. Про переход на 5.6, так же как нибудь расскажу.
Что еще входит в пакет:
- memcached – сервис обеспечивающий кеширование данных в ОЗУ, при правильном использовании дает значительное ускорение работы. По умолчанию не используется;
- stunnel – для организации шифрованных ssl-тунелей;
- catdoc – библиотека для работы с форматами MS Office. В частности используется для поиска по документам;
- xpdf – задачи те же что и пунктом выше, только для PDF;
- munin и nagios – мониторинг состояния сервера. По умолчанию не используется;
- sphinx – полнотекстовый поиск. На данный момент наилучшее решение по удобству, качеству и скорости поиска. По умолчанию не используется.
Само собой все это уже настроено на корректную работу друг с другом. Давайте ставить.
Установка «1С-Битрикс: Веб-окружение» на сервер
Качаем скрипт установки – актуальную ссылку на скачивание можно поглядеть на оф. сайте. Запускать надо root’ом и далее подразумевается, что мы находимся в /root . Если нет, перейдите выполнив:
Источник
Битрикс веб окружение для linux
Виртуальная машина сэкономит вам время и силы на правильное развертывание и администрирование вашего сайта или внутреннего информационного ресурса на базе продуктов «1С-Битрикс».
Курс предназначен для администраторов и пользователей продуктов «1С-Битрикс», устанавливающих для ознакомления либо переносящих готовые проекты на виртуальную машину BitrixVM. Аналогичным способом можно переносить проекты с удаленного сайта на виртуальную машину, между виртуальными машинами и т.д. В курсе рассматриваются процедуры установки всех необходимых приложений для работы продукта на виртуальной машине BitrixVM.
Описание установки VMWare Player не входит в данное руководство. По всем вопросам установки этой программы обращайтесь к документации VMWare Player.
На текущий момент рекомендуется к использованию виртуальная машина в версии 7.х. Описания остальных машин оставлены для тех, кто пока не переходит на более совершенную версию.
На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:
Баллы опыта
В конце каждого урока есть кнопка . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
окно подтверждения:
уроке.
Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат — это если общее число набранных Вами баллов отличается от максимального на 1-2%.
Скачать материалы курса в формате EPUB. Файлы формата EPUB Чем открыть файл на
Android:
EPUB Reader
CoolReader
FBReader
Moon+ Reader
eBoox
iPhone:
FBReader
CoolReader
iBook
Bookmate
Windows:
Calibre
FBReader
Icecream Ebook Reader
Плагины для браузеров:
EpuBReader – для Firefox
Readium – для Google Chrome
iOS
Marvin for iOS
ShortBook
обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.
Источник
Переезд на кластер под управлением «1С-Битрикс: Веб-окружение»
Собственно, если мы обратимся на сайт вендора, то там увидим что:
«1С-Битрикс»: Веб-окружение» — Linux служит для быстрой и простой установки всего ПО, необходимого для работы продуктов и решений «1С-Битрикс» на Linux-платформах CentOS 6 (i386, x86_64) и CentOS 7 (x86_64). Устанавливать необходимо на «чистый» CentOS, без уже установленного веб-сервера.
В состав «1С-Битрикс: Веб-окружение» — Linux входят: mysql-server, httpd, php, nginx, nodejs push-server, memcached, stunnel, catdoc, xpdf, munin, nagios, sphinx.
По сути, данный комплекс ПО содержит в себе настроенный LAMP, консольную панель управления сервером, плюс дополнительные, необходимые для работы некоторых модулей 1C-Bitrix, пакеты. Весь софт настроен с учётом особенностей 1C-Bitrix, а именно:
- установлены необходимые расширения (gd, zip, socket, mbstring)
- включена поддержка short-тегов
- заданы необходимые значения для параметров memory_limit, max_input_vars, safe mode, opcache.validate_timestamps, opcache.revalidate_freq, mbstring.func_overload, default_charset, display_errors и др.
- установлен одинаковой часовой пояс для БД, php и на самом сервере
- и др.
Это позволяет в большинстве случаев не заниматься настройкой сервера и его тюнингом.
Итак, у нас было 2 app сервера (назовём их app01 и app01), 2 db сервера (db01, db02), 1 сервер под кэширование (cache01, ну вы поняли), точнее была идея реализовать структуру кластера подобным образом. Под этот план были получены 5 серверов, с установленными на них последними версиями centos7 (к сожалению, debian, ubuntu, fedora, rhel и др. не подходят), кроме os на серверы больше ничего не устанавливалось.
Т.к. мы собираем кластер, то необходимо определить, какой из серверов будет основным. Из-за особенностей балансировки запросов к приложению, один из серверов, где будет работать httpd, будет также содержать nginx. Все входящие запросы будет принимать также он, и после этого перенаправлять запрос на одну из доступных web-нод. Мы выбрали основным сервер app01.
В дальнейшем работа пошла по следующему плану:
1. Установить bitrixenv
Установка не подразумевает сверхъестественных знаний linux или администрирования. Заходим на каждый сервер через ssh и выполняем такие команды:
Ставить bitrixenv необходимо на все серверы, которые планируется использовать в кластере. Даже если сервер будет работать только как инстанс memcached, bitrixenv необходим, т.к. позволяет управлять всем кластером из основного сервера.
2. Настроить bitrixenv
Т.к. использовать весь этот зоопарк мы будем как кластер, то производить настройку серверов можно через меню окружения на app01. Для этого заходим на сервер через ssh, и запускаем файл /root/menu.sh. При первом запуске необходимо задать пароль для пользователя bitrix (аналогичную операцию необходимо провести на всех серверах, где планируется запуск сайта):
Собственно, это тот пользователь, под которым будет работать приложение. После этого мы видим экран, предлагающий создать пул серверов:
Тут нам необходимо выбрать первый пункт меню. В процессе создания окружение запросит имя текущего сервера, тут то мы и указываем app01:
После того, как пул будет создан, нас возвращают на первый экран окружения, но на этот раз там доступно куда больше пунктов:
В общем окружение уже готово и можно им пользоваться. Если кластер нам не нужен, то на этом можно было бы и заканчивать, но мы пойдём дальше.
Теперь нам необходимо добавить в созданный пул все доступные серверы. Для этого воспользуемся первым пунктом меню и увидим такие варианты:
Опять выбираем первый пункт меню, и указываем ip нового сервера, его имя в кластере (те самые app02, db01, db02, cache01) и root-пароль от подключаемого сервера. Таким образом, поочерёдно добавляем каждый имеющийся сервер. После того, как все серверы зарегистрированы в кластере, мы должны получить примерно такой список на главном экране окружения:
Настройку ролей серверов пока отложим на следующий шаг.
3. Перенос проекта
Т.к. наше приложение изначально работает на одном сервере, то модуль масштабирования и управления кластером отключены, база не реплицирована. Сам перенос ничего сверхъестественного из себя не представляет — упаковали папки bitrix и upload, сняли дамп БД.
После того, как архивы и дампы готовы, заходим на app01, и тянем через git код проекта в дефолтную папку сайта в bitrixenv — /home/bitrix/www, скачиваем wget-ом или curl-ом архивы и дамп БД, распаковываем архивы и заливаем дамп в БД на app01, переносим записи cron.
Если ваше приложение использует дополнительный софт, то самое время его установить и настроить. В нашем случае были установлены и настроены supervisord и RabbitMQ, т.к. приложение работало с использованием очередей.
Есть небольшой, но важный, нюанс. При переносе сайта в кластер, необходимо чтобы на сайте были отключены модули scale и cluster, а в окружении кластера, в которое планируется перенос, серверы пулла были не задействованы. Включать в работу серверы кластера необходимо только после того, как сайт будет перенесён и развёрнут на основном сервере. В противном случае сайт не сможет корректно определять серверы кластера.
4. Включение кластерного режима работы
После того, как приложение было перенесено на app01, и мы проверили корректность его работы, пришла пора заняться самым интересным — масштабированием. Для начала необходимо установить модули scale и cluster в админ-панели 1C-Bitrix. Во время установки ничего особо делать не нужно, вся работа происходит далее.
Как только модули установлены, переходим в ssh-соединение с основным сервером, а это app01, и открываем меню bitrixenv (лежит тут /root/menu.sh). Прежде чем приступить к дальнейшей настройке, необходимо выяснить один важный момент — bitrixenv оперирует понятием “роль сервера”. Не имеет особого значения, как называется сервер в пуле, т.к. каждый сервер содержит весь софт, который входит в пакет bitrixenv, мы всегда можем назначить ему одну или несколько ролей, а можем снять их с него или поменять на другие. Основные роли это — mgmt (балансировщик, т.е. nginx), web (т.е. httpd/apache), mysql_master и mysql_slave (инстанс БД, slave появляется уже когда начинаем делать репликацию), memcached (сервер с memcached). Общая картина теперь понятна, и мы решили начать с memcached-сервера. Для этого заходим в пункт
и видим запрос имени сервера, который будет выполнять роль memcached-сервера. У нас уже есть заготовленный для этого сервер cache01, поэтому смотрим в список доступных серверов. Если cache01 есть в списке, значит никаких проблем с установкой нет, и мы можем дать серверу выбранную роль.
Вписываем название cache01, видим, что задача на установку роли поставлена в очередь. Дожидаемся окончания фоновых работ и видим готовый к работе сервер с необходимой нам ролью.
Пришло время добавить второй app-сервер. Для этого переходим по пути
где нам необходимо указывать имя сервера и способ синхронизации между основной и новой web-нодой. Исходя из документации bitrixenv и предварительных испытаний, нашему проекту было достаточно выбрать первый вариант (за один шаг происходит и копирование проекта и настройка конфигов ноды). После того, как фоновые работы закончатся, мы должны увидеть в главном меню примерно такую картину:
Обратим внимание на то, что в колонке Roles напротив сервера app02 указана роль web.
Осталось разобраться с БД, её настройка занимает больше всего времени. Для начала вкратце объясню, как раздаются роли mysql в контексте bitrixenv. По-умолчанию на основном сервере кластера стоит master версия БД. В нашем случае необходимо было вынести БД на отдельный сервер и добавить ещё один сервер с slave-версией БД. В bitrixenv нельзя просто так взять и перенести master с одного сервера на другой)
- Даём роль mysql_slave серверу, на который мы планируем перенести БД
- На целевом сервере меняем роль mysql_slave на роль mysql_master (автоматом старый mysql_master переходит в режим mysql_slave)
- Удаляем роль mysql_slave на исходном сервере, бывшем master
- …
- PROFIT.
Мы последовали этой логике таким образом:
Указали сервер, которому хотим дать роль mysql_slave — db01. Дожидаемся окончания фоновых работ и видим такой результат:
Отлично, теперь переходим в
Указываем app01 и ждём. В итоге должны увидеть примерно такой результат:
Медленно и неотвратимо мы подошли к установке последней роли — mysql_slave. Для этого необходимо повторить действия, которыми мы устанавливали такую роль для db01, но указать уже db02.
Наконец, все серверы подключены и настроены.
5. Тюнинг производительности
После того, как кластер готов, есть некоторые особенности в настройке приложения, позволяющие провести дополнительную оптимизацию:
- Прокачиваем работу с сессиями. Подробно описано здесь. Вкратце — переключаем хранение сессий в memcached.
- Удаляем файлы /bitrix/php_interface/after_connect_d7.php и /bitrix/php_interface/after_connect.php, т.к. команды из них обрывают конвейер кластера (если не используется bitrixenv, то их лучше оставить).
- Увеличиваем количество памяти, выделяемое memcached, и устанавливаем процент использования серверов с ролью memcached до 100%.
- Отключаем модули php: apcu, ldap
- Отключить модули БУС «Компрессия», и “Веб-аналитика” (по возможности).
- Рассмотреть вариант использования локального кэша. Подробнее описано тут. В нашем случае прироста не было, но идея интересная. Решение имеет пару особенностей:
- Количество инстансов memcached должно равняться количеству web-нод.
- Для отдачи композитного кэша nginx-ом напрямую из локального memcached придётся поковырять конфиг nginx, из коробки не работает.
Выводы
В рамках данной статьи мы разобрали последовательность действий, необходимых для настройки кластера серверов на базе bitrixenv, а также некоторых возможных подводных камней. По итогам работы с bitrixenv, и кластером на нём, можем выделить плюсы и минусы данного подхода:
Плюсы bitrixenv
Минусы bitrixenv
- Балансировщик всегда вместе с основной web-нодой
Т.к. у нас уже был свой балансировщик, мы столкнулись с тем, что невозможно отказаться от встроенного в bitrixenv балансировщика. Нельзя в т.ч. разместить его отдельно от основной web-ноды. - Много лишнего софта для некоторых ролей
Т.к. каждый сервер в пулле содержит полную версию окружения, то получается что на db-нодах стоят httpd, memcached, sphinx, пусть они и не используются. Аналогично можно встретить MySQL на сервере, который занимается только кэшированием, но в этом случае MySQL можно остановить в меню окружения или админ.панели сайта. - Php работает в режиме apache2handler
Нет возможности безболезненно включить php в работу в режиме fcgi, не говоря уже о режиме nginx+php-fpm. Так же не получится поменять версию php, без танцев с бубном.
Источник