Оптимизация ISPmanager под проекты на Битриксе или как я скрестили ISPmanager и VMBitrix (Битрикс окружение)

в 17:07, , рубрики: 1С-Битрикс, ispmanager, nginx, php, vmbitrix, Битрикс24, Веб-разработка, Настройка Linux, хостинг

А зачем?

image

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

Для примера, другой популярный продукт — ISPmanager, позволяет создавать FTP аккаунты из удобной веб-панели для администраторов всего за пару кликов мышкой, в то время как из консоли вам необходимы навыки администратирования Linux. Порой просто хочется управлять своим сервером и проектами из вкладки в браузере, без помощи ssh консоли.

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

В связи с необходимым требованием работать с проектами через "user-friendly" интерфейс ISPmanager 5 и не потерять в скорости и функционале проектов, было принято решение о неком «скрещивание» этих двух систем.

И так, перед тем как начать, внимательно ознакомьтесь с важной информацией

image
Сценарий установки протестирован только на чистой CentOS 6.6 x64_86, сразу после установки стабильного ISPmanager 5 и включения в нём «Возможности» nginx. Для продвинутых пользователей, желающих использовать предложенное решение, которые ранее модифицировали какие-либо настройки в своей системе, категорически не рекомендуется устанавливать скрипты полностью в автоматическом режиме — выполняйте инструкции из них вручную
Автор не даёт никаких гарантий по стабильной или правильной работе предложенного решения. Все инструкции вы выполняете на свой страх и риск. Текущее версия скриптов и конфигурационных файлов находится на этапе активного тестирования
Внимательно ознакомитесь с разделом «Этап 2.6 Создания дополнительных необходимых каталогов»
Модуль «компрессия» в системе должен быть обязательно УДАЛЁН. Композит — ВЫКЛЮЧЕН.

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

image
Композит
HTTPS
Красивые сообщения об ошибках веб-сервера

Оптимизация в полностью автоматическом режиме

image

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

Рассматривается следующий сценарий:

  1. Вы установили чистую CentOS 6.6 x86_64
  2. Установили ISPmanager 5, следуя официальным инструкциям
  3. В разделе «Возможности» панели ISPmanager 5 активировали Nginx

image

Далее можно приступать к самой оптимизации: (все ссылки в конце публикации)

  1. сначала запускаем «bitrix-env_5.1.2_patched_2.sh»
  2. копируем скрипт «isp_patch_V0.1.sh» вместе с распакованным архивом «patch_filesV0.1.zip» в произвольную директорию на сервере
  3. запускаем «isp_patch_V0.1.sh»

Поздравляю, ваш сервер с ISPmanager 5 готов для работы с проектами на Битрикс

Осталось только развернуть сайт на свежем домене: (все ссылки в конце публикации)
image

  • Предложенный мною вариант о том, как это можно сделать, в отдельной, но небольшой инструкции "создание хоста.pdf" (в любом случае, обратите внимание на подключение необходимого конфига apache и nginx к созданному хосту)
  • Для вашего удобства, выкладываю дистрибутив для установки битрикса в архиве "bitrix_install.zip" (установка в таком случае происходит в режиме Быстрая установка/Short install)

Буду рад любым вашим комментариям, замечаниям и пожеланиям!

image

Рассмотрим предложенное решение подробнее

Этап 1. bitrix-env.sh (или «1С-Битрикс: Веб-окружение» — Linux)

image

Классическая установка битрикса происходит на битрикс-окружение, которое устанавливается через скрипт
www.1c-bitrix.ru/products/env/
Именно с разбора bitrix-env.sh мы и начнём оптимизацию своего ISPmanager
На самом деле в самом скрипте ничего особенного нет, сначала идёт стандартная проверка дистрибутива системы, затем по результатам этой проверки устанавливается то или иное необходимое ПО.
Вся магия происходит, когда скрипт добавляет «фирменный» репозиторий 1С-Битрикс и устанавливает в систему пакет bitrix-env* и bx-nginx, на них мы заострим своё внимание.

И так, наш "bitrix-env_5.1.2_patched_2.sh" ничто иное, как немного переделанный скрипт от самого 1С-Битрикс, но основная «фишка» в установке bitrix-env из него убрана, почему — расскажу дальше.

Этап 2. bitrix-env.rpm (или Основной этап конфигурации)

image

Целая экосистема, которую предлагает bitrix-env, нам не подходит, нагромождения потенциально конфликтующих пакетов/конфигов ISPmanager и Битрикс-окружения нам вовсе ни к чему.

Оставив только нужно на мой взгляд я перенёс всё из rpm пакета в скрипт isp_patch.sh (внимание, протестирован только на centos 6.6 x64).

Немного подробнее — далее.

Этап 2.1 bx-nginx (или Nginx с поддержкой Push & Pull)

image

Этот пакет, который нам предлагает Битрикс-окружение, является ничем иным, как скомпилированным nginx с модулем «push and pull», который применяется в таком функционале как, например, «Бизнес-чат», «Живые комментарии», «Видеозвонки», «Мобильное приложение».

Мы можем просто забрать себе в систему, любезно скомпилированный 1С-Битрикс, готовый бинарник nginx на свою машину с ISPmanager и избавить себя от необходимости компилировать его самостоятельно (22 и 23 строки скрипта)

Этап 2.2 bvat.bx (или автотюнер параметров ПО)

image
интересным составляющим «Битрикс-окружения» является скрипт bvat.bx, который прописывается в автозагрузку системы и выполняет работу по тюнингу параметров ПО, отвечающее за работу проекта (преимущественно mysql сервера и расходу оперативной памяти). Сам тюнер работает довольно просто, основываясь на текущей конфигурации системы он выставляет тот или иной заготовленный «пресет» настроек в качестве действующих параметров. Хотелось бы заметить, что в конфигурации предусмотрено изменения параметров, которые выставил bvat.bx без полного его отключения (хотя можно поступить и так).

в нашем скрипте за его установку отвечают строки 25-31

Аналогично эталонному Битрикс-окружению, свои собственные параметры для mysql сервера можно прописать в файле /etc/mysql/conf.d/z_bx_custom.cnf (которые будут применены в обход bvat.bx). Аналогично, подключением своих конфигурационных файловпосле конфигурационных файлов bvat, можно обойти его автонастройки для остального ПО, если тот или иной параметр, выставленный автоматически, вас не устраивает.

Так как логика скрипта мне по-душе, дополнить его «автоматику» своими значениями не составляет труда, а его установка в систему была довольна проста — я включил его в свою конфигурацию.

Этап 2.3 Настройки php

image
Изменяем несколько параметром в php.ini (строки 33-40 в нашем скрипте)

  • memory_limit = 512M
  • pcre.backtrack_limit = 1000000
  • short_open_tag = On

и отключаем dav модули для php

Этап 2.4 Настройки mysql

image
42-48 строки скрипта копируют заранее подготовленный и настроенный my.cnf, в котором вы, наверняка захотите что-нибудь поменять уже самостоятельно

Этап 2.5 bitrixenv.ini (или директивы php необходимые для работы битрикса)

image

Неотъемлемой частью классического битрикс-окружения является файлик /etc/php.d/bitrixenv.ini, содержащий необходимые настройки директив, перечисленные в нём

с минимальной разницей с оригинальным файлом я скопирую его на свою машину с ISPmanager, как файл /etc/httpd/bx/bx_apache.conf (строки 50-52)

важно заметить, что этот файлик мы нигде не инклюдим намеренно, чтобы прописывать его при необходимости только отдельным Virtualhost созданных из-под ISPmanager (в секцию конфиг-apache)

Этап 2.6 Настройка nginx

image
Настройки nginx в моём скрипте имеют долю «автотюна» (строка 64 и 67)
Остальное взято из конфигурационных файлов для nginx от Битрикс-окружения

строки 72-77 отвечают за компрессию на уровне сервера
79-82 — за push&pull

обратите внимание, на файл
bx/conf/bitrix.conf
важно заметить, что этот файлик мы нигде не инклюдим намеренно, чтобы прописывать его при необходимости только отдельным хостам, созданных из-под ISPmanager (в секцию конфиг-nginx)

кроме того, в нём есть блок «Some security options» с заранее подготовленными, но закоментированными опциями, имеющими отношения к безопасности хоста

Этап 2.7 Создания дополнительных необходимых каталогов

image

В скрипте (строки 13-19) создаются каталоги для хранения сессий и временных файлов битриксом.

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

1) включить хранение сессий в разделе админки «БД: Защита сессий» и создать отдельные каталоги только для временных файлов

2) либо создать отдельные два каталога (отдельные для сессии и для временных файлов), например

mkdir -p /tmp/php_sessions/ext_www/your_site.ru
mkdir -p /tmp/php_upload/ext_www/your_site.ru

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

chown user_of_yoursite:user_of_yoursite /tmp/php_sessions/ext_www/your_site.ru -R
chown user_of_yoursite:user_of_yoursite /tmp/php_php_upload/ext_www/your_site.ru -R

и прописать в конфигурацию your_site.ru

php_admin_value session.save_path /tmp/php_sessions/ext_www/your_site.ru
php_admin_value upload_tmp_dir    /tmp/php_upload/ext_www/your_site.ru

Ссылки на файлы

bitrix-env_5.1.2_patched_2.sh
bitrix_install.zip
создание хоста.pdf
isp_patch_V0.1.sh
patch_filesV0.1.zip

Автор: Zeka13

Источник


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js