1С-Битрикс: Веб-окружение / BitrixVM
Теперь остается в PuTTY добавить private ключ в раздел Connections / SSH / Auth / Private key file for authentication и сохранить все это в сессию. Проверьте, должна стоять отметка SSH 2 на соответствующей вкладке. Скачать программу можно на официальном сайте.
Важно помнить, что в PuTTY копирование выделенного текста происходит при клике левой кнопкой мыши, а вставка нажатием правой кнопки мыши или комбинации клавиш Shift+Ins.
Текстовое меню
После авторизации на сервере запускается меню управления виртуальной машиной. Далее нужно знать какие команды когда нажимать. Если вы вышли из этого меню нажав 0 или exit, то для повторной активации меню введите команду:
/root/menu.sh
Курс
Полный курс по BitrixVM есть на сайте 1С-Битрикс тут, далее рассмотрим лишь важные команды, если лень читать весь курс.
// добавить сайт 6. Configure pool sites 1. Create a site
kernel - для основного сайта
link - для дополнительного сайта при многосайтовости // удалить сайт 6. Configure pool sites 2. Delete a site // добавить сертификат Let's Encrypt // ВАЖНО, домен должен быть доступен 8. Manage pool web servers 3. Configure certificates 1. Configure "Let's encrypt" certificate // включить https всегда 6. Configure pool sites 5. Change a site's https settings
CURL
Обычно требуется CURL для работы сайтов на 1С-Битрикс, но по умолчанию он выключен. Включаем его так.
// идем в настройки сервера 8. Manage pool web servers // Далее в настройки расширений PHP 2. Manage PHP extensions // Включаем CURL 2. Enable curl extension // Если там написано Disable curl extension - всё ок, CURL уже включен // далее выходим в главное меню, нажимая три раза 0 // и перезапускаем httpd service httpd restart
Почта
Для установки почты введите в главном меню PuTTY команду:
// если не установлен sendmail yum install sendmail // далее правим строку с sendmail в /etc/php.d/bitrixenv.ini sendmail_path // перегрузка сервера reboot // проверяем /etc/hosts, должно быть не: 127.0.0.1 localhost // а более правильное 127.0.0.1 localhost localhost.localdomain server-name
// не забываем подставить своё имя в server-name
Изменение прав на папки и файлы
chown -R bitrix:bitrix /home/bitrix/ext_www/costamedia.ru/ или, если сайт установлен в корне chown -R bitrix:bitrix /home/bitrix/www/
Как создать FTP пользователя
id bitrix // определяем id группы пользователя bitrix // получим что-то типа этого uid=600(bitrix) gid=600(bitrix) groups=600(bitrix),10(wheel) // добавим пользователя adduser имя_пользователя -g600 -o -u600 -d /home/bitrix/www/ // или adduser имя_пользователя -g600 -o -u600 -d /home/bitrix/ext_www/ // путь до самой папки можно указать тот, что нужен // далее установим пароль, минимум 7 символов passwd имя_пользователя // Если FTP не установлен, то установите сначала его yum install proftpd // добавьте в автозапуск chkconfig proftpd on // запустите service proftpd start
Обновление версии PHP
Для обновления версии PHP нужно запустить процесс обновления, если нужная версия PHP уже установлена на сервере
// В основном меню выбираем пункт 1. Manage servers in the pool // Далее 8. Update PHP and MySQL // Потом 1. Upgrade PHP // выбираем нужную версию и подтверждаем нажатием y
Если на сервере нет нужной версии PHP, то сначала нужно обновить PHP на сервере.
// Идем в пункт 1. Manage servers in the pool // Далее 4. Update packages on host // На запрос Please choose update type введите bitrix - для обновления только BitrixEnv до актуальной версии, либо all для обновления всех имеющихся пакетов // На запрос Enter server address введите IP-адрес сервера. // *** Как включить бета-версию 1. Manage servers in the pool // Далее 10. Enable or disable bitrix-env beta versions // Далее 1. Enable bitrix-env beta versions // После чего подтвердите выбор нажатием y
Переезд на кластер под управлением «1С-Битрикс: Веб-окружение»
В определённый момент появилась задача — перевести, существующий и активно работающий в production, проект на работу в кластере серверов. Т.к. проект разработан на базе 1C-Bitrix, было принято решение построить кластер с использованием «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 и выполняем такие команды:
cd ~ wget http://repos.1c-bitrix.ru/yum/bitrix-env.sh chmod +x bitrix-env.sh ./bitrix-env.sh
Ставить 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-сервера. Для этого заходим в пункт
4. Configure memcahed servers > 1. Configure memcached service
и видим запрос имени сервера, который будет выполнять роль memcached-сервера. У нас уже есть заготовленный для этого сервер cache01, поэтому смотрим в список доступных серверов. Если cache01 есть в списке, значит никаких проблем с установкой нет, и мы можем дать серверу выбранную роль.

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

Пришло время добавить второй app-сервер. Для этого переходим по пути
8. Manage web nodes in the pool > 1. Create web role on server,

где нам необходимо указывать имя сервера и способ синхронизации между основной и новой 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.
3. Configure MySQL servers > 4. Create MySQL slave

Указали сервер, которому хотим дать роль mysql_slave — db01. Дожидаемся окончания фоновых работ и видим такой результат:

Отлично, теперь переходим в
3. Configure MySQL servers > 5. Change MySQL master

Указываем 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
- Время установки
Установка и базовая настройка занимает менее 30 минут. Нет необходимости настраивать элементы LAMP (как интеграцию этих служб друг с другом, так и для корректной работы проектов на 1C-Bitrix). - Службы для ускорения работы сайта
Установленные и настроенные службы, которые позволяют организовать более быстрое кэширование через memcached, а не файлы, поиск с использованием движка sphinx и функционал видеозвонков и чатов на корп.портале (модуль nginx push&pull). Кроме того, nginx в окружении настроен таким образом, что при включении соответствующих опций на сайте и в меню bitrixenv, кэш отдаётся при помощи nginx сразу из memcached (в обход httpd и php) - Кластеризация
Возможность включить репликацию БД, без ковыряния настроек MySQL. Подключение произвольного количества web-нод, которые будут автоматически синхронизироваться друг с другом, и memcached-нод. Управление распределением нагрузки на web- и memcached-ноды как из меню bitrixenv, так и через админ-панель проекта на 1C-Bitrix. Плюс к этому, добавление новых серверов и ролей к ним не вызывает простой проекта (кроме разве что ролей серверов БД)
Минусы bitrixenv
- Балансировщик всегда вместе с основной web-нодой
Т.к. у нас уже был свой балансировщик, мы столкнулись с тем, что невозможно отказаться от встроенного в bitrixenv балансировщика. Нельзя в т.ч. разместить его отдельно от основной web-ноды. - Много лишнего софта для некоторых ролей
Т.к. каждый сервер в пулле содержит полную версию окружения, то получается что на db-нодах стоят httpd, memcached, sphinx, пусть они и не используются. Аналогично можно встретить MySQL на сервере, который занимается только кэшированием, но в этом случае MySQL можно остановить в меню окружения или админ.панели сайта. - Php работает в режиме apache2handler
Нет возможности безболезненно включить php в работу в режиме fcgi, не говоря уже о режиме nginx+php-fpm. Так же не получится поменять версию php, без танцев с бубном.
Форум
Добрый день!
С виртуальной машиной столкнулся впервые,
Нужна библиотека сurl, как я понял она не включена, phpinfo выдает —without-curl ?
До этого сайт работал на веб-окружении и скрипт отрабатывал.
Администратор
Сообщений: 44 Баллов: 2 Регистрация: 26.09.2011
17.05.2013 16:00:58
Насколько я помню вам стоит заглянуть в /etc/php.d (или /etc/php.d/modules не помню точно) и там переименовать curl.ini.disabled в curl.ini
После этого рестартануть апач и все у вас заведется
Заглянувший
Сообщений: 30 Баллов: 1 Регистрация: 15.05.2012
17.05.2013 19:49:18
Или это можно сделать командой:
mv -f /etc/php.d/curl.ini.disabled /etc/php.d/curl.ini
Заглянувший
Сообщений: 26 Баллов: 1 Регистрация: 20.08.2012
20.05.2013 13:00:59
Сообщений: 583 Баллов: 127 Регистрация: 28.07.2008
Какое еще пояснение?
22.03.2018 00:36:27
В последних версиях
mv -f /etc/php.d/20-curl.ini.disabled /etc/php.d/20-curl.ini service httpd restart
Посетитель
Сообщений: 36 Баллов: 5 Регистрация: 19.01.2016
10.10.2018 11:43:56
mv -f /etc/php.d/20-curl.ini.disabled /etc/php.d/20-curl.ini service httpd restart
Заглянувший
Сообщений: 8 Регистрация: 14.04.2017
22.09.2021 10:33:45
Можно (и я считаю, что даже нужно делать именно так) включить curl через меню виртуальной машины. В версии bitrix vm 7.5.0 для этого надо выбрать «8. Manage pool web servers» -> «2. Manage PHP extensions» -> «2. Enable curl extension». Готово. Аналогичным образом можно вкл./выкл. ssh2, zip, dom, phar, xdebug, imagick extensions
Страницы: 1
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
Веб-окружение Битрикс: How-To

Сборник советов, хаков и трюков связанных с 1С-Битрикс: Веб-окружение.
Пока здесь не очень много таковых, но статься будет пополняться. Не стесняйтесь делиться своим опытом и советами.
О том как установить 1С-Битрикс: Веб-окружение читайте в отдельной статье.
Как включить php расширение в VMBitrix
В BitrixVM по умолчанию часть php расширений может быть отключено.
Чтобы включить нужное, в директории /etc/php.d найдите файл с расширением и переименуйте из xx-you-extention.ini.disabled в xx-you-extention.ini
Например, чтобы включить расширение CURL, переименуйте 20-curl.ini.disabled в 20-curl.ini.
Если файл 20-curl.ini пустой, внесите в него следующую запись:
extension=curl.so
Затем перезапустите web сервер.
Алиасы сайтов в VMBitrix
Иногда нужно к одной папке сайта привязать несколько доменов (сделать алиасы).
Для сайта в конфиге Apache /etc/httpd/bx/conf/bx_ext_[название_сайта].conf найдите место:
ServerName site1.ru ServerAlias www.site1.ru
Допишите в него домены:
ServerName site1.ru ServerAlias www.site1.ru alias1.ru alias2.com
Далее добавьте алиасы в конфиги Nginx /etc/nginx/bx/site_avaliable/bx_ext_[название_сайта].conf и /etc/nginx/bx/site_avaliable/bx_ext_ssl_[название_сайта].conf.
# Additional website server < listen 80; server_name site1.ru; #charset utf-8; server_name_in_redirect off;
# Additional website server < listen 80; server_name site1.ru www.site1.ru alias1.ru alias2.com;; #charset utf-8; server_name_in_redirect off;
Затем перезагрузите Apache и Nginx.
# /etc/init.d/httpd restart # /etc/init.d/nginx restart
Размер стека и pcre.recursion_limit
На версиях BitrixVM ниже версии 7.2, при проверки системы может наблюдаться следующая ошибка: Возможны проблемы в работе с длинными строками из-за системных ограничений.
Чтобы исправить, в файле /etc/php.d/bitrixenv.ini измените значение «pcre.recursion_limit = 14000» на «pcre.recursion_limit = 100000».
В скрипте запуска Apache /etc/rc.d/init.d/httpd измените функцию «start()», добавив в нее строку (ulimit -s unlimited):
start() < echo -n $"Starting $prog: " ulimit -s unlimited LANG=$HTTPD_LANG daemon --pidfile=$$httpd $OPTIONS RETVAL=$? echo [ $RETVAL = 0 ] && touch $ return $RETVAL >
Затем перезагрузите сервер.
Повторно запустите проверку системы, ошибка должна исчезнуть.
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.
