Инфраструктура и эксплуатация 1С-Битрикс
Раздел - про всё, что находится вокруг кода. Веб-сервер под 1С-Битрикс настраивают вручную, а вместо штатного поиска подключают Sphinx. Сайт связывают с доменной авторизацией NTLM/AD, а несколько сайтов разводят на одной копии платформы. Проект тестируют от модульных тестов на PHPUnit до нагрузочных. Изменения переносят между окружениями, не теряя данные при релизе. В разделе четыре статьи, и они не пересказывают друг друга. Похожая на первый взгляд статья «Окружение и деплой» из «Основ» - про другое. У каждой статьи свой предмет и своё время действия.
Как устроено
Четыре статьи раздела делятся на две пары, и делит их не тема, а момент времени. Первая пара - «Сервер и поиск» и «Мультисайтовость». Это то, что настраивают один раз и трогают редко: конфигурация, а не код. Вторая пара - «Тестирование и выкладка» и «Модульное тестирование». Это процесс, который повторяется на каждом релизе. Первая пара про состояние системы, вторая - про то, как менять это состояние безопасно, не сломав уже настроенное.
Раздел не дублирует «Окружение и деплой» из «Основ». Та статья - про готовый автоматизированный стек BitrixVM, который поднимается и обновляется собственным консольным меню платформы. Здесь - то, что в этот стек не входит или требует ручной донастройки. Это Sphinx как альтернативный бэкенд поиска и доменная авторизация через NTLM и Active Directory. Сюда же разбор того, почему связка nginx с Apache устроена именно так, а не иначе. Если читаете «Окружение», а нужный вопрос там не находится, - вероятно, ответ здесь.
Идемпотентные скрипты миграций из «Тестирования и выкладки» - частный случай
общего приёма. Приём звучит так: «не редактируй состояние напрямую, опиши
изменение воспроизводимо». В статье раздела он разобран целиком: номер версии
хранится в настройках модуля, а каждый шаг безопасно повторить. Результат не
зависит от того, что уже применено на конкретном сервере. Похожий по духу приём
для конфигурации самого сервера здесь не описан. Он в статье «Окружение и
деплой» раздела «Основы». Там свои настройки nginx и
MySQL хранят в файлах с префиксом z_bx_custom, которые переживают обновление
окружения.
Общая цель этих тем - устранить расхождение между тем, что должно быть, и тем, что есть на самом деле. Права на файлы должны совпадать для веб-сервера и заданий по расписанию. Иначе процессы начинают видеть разные наборы файлов. Тестовое окружение должно быть точной копией боевого, иначе тестирование ничего не гарантирует. Резервная копия и снимок делаются заранее, а не в момент, когда что-то уже пошло не так. Заглушка платформенного класса в модульном тесте - тот же риск на уровне кода. Пока она отражает настоящее поведение API, тесты полезны. Как только заглушка начинает жить своей жизнью, зелёные тесты перестают что-либо гарантировать. Четыре разные формулировки одного и того же требования: воспроизводимость важнее удобства момента.
Что нужно сделать
| Нужно | Смотрите |
|---|---|
| Настроить веб-сервер, поиск и почту под платформу | Сервер и поиск |
| Поднять несколько сайтов на одной копии платформы | Мультисайтовость |
| Выкатывать изменения без ручного копирования файлов | Тестирование и выкладка |
| Покрыть свой код тестами, которые гоняются в CI | Модульное тестирование |
С чего начать
Новичок, который настраивает сервер впервые. Начните с «Сервер и поиск» - там разобрана рекомендованная связка nginx и Apache.
Поиск или доменная авторизация тормозят или работают не так, как ожидалось. Сразу к нужному разделу статьи «Сервер и поиск». Sphinx и NTLM разобраны там как самостоятельные темы. Читать статью целиком не обязательно.
Нужно завести второй сайт на той же копии платформы. «Мультисайтовость» - оба способа развести сайты. Там же - как определяется текущий сайт по домену и по папке. Отдельно - что придётся прописать вручную, а что платформа определит сама.
В проекте нет процесса релизов, а изменения выкладывают на глаз. «Тестирование и выкладка» - весь путь от миграций структуры базы до плана отката. Особенно важно, если структуру базы до сих пор правили вручную прямо на боевом сервере.
Хотите проверять свой код тестами, а не только руками при каждом релизе. «Модульное тестирование» - как запустить PHPUnit при ядре, которое держит глобальное состояние. Заодно - что стоит тестировать без ядра вообще.
Темы раздела
- Сервер и поиск: то, что настраивают один раз и вне готового стека BitrixVM - веб-сервер вручную, Sphinx, доменная авторизация.
- Мультисайтовость: тоже конфигурация, а не код - несколько сайтов на одной копии платформы, на одном домене или на разных.
- Тестирование и выкладка: процесс, который повторяется на каждом релизе - тесты, нагрузка, миграции структуры базы, откат.
- Модульное тестирование: тот же процесс крупным планом - как писать и запускать тесты на PHPUnit при ядре, которое держит глобальное состояние.
Практика раздела
- Резервные копии и перенос сайта в 1С-Битрикс - копии, восстановление, перенос сервера.
- BitrixVM и веб-окружение - установка, меню, обслуживание - отличие от веб-окружения.
- Агенты и cron в 1С-Битрикс - фоновые задачи сайта - агенты на хитах против расписания.
- Отправка почты с сервера в 1С-Битрикс - локальная отправка против SMTP.
- nginx и PHP-FPM в 1С-Битрикс - связка, редиректы, статика - связка, редиректы, отдача статики.
- Ошибки сервера и базы данных в 1С-Битрикс - сбои запросов, отказ базы, коды 500 и 502.
- Обновление платформы и PHP в 1С-Битрикс - порядок обновления, совместимость, откат.
Частые вопросы
Чем «Сервер и поиск» отличается от «Окружения и деплоя» из «Основ» - разве не об одном и том же?
«Окружение и деплой» - про готовый автоматизированный стек BitrixVM: как его развернуть, где в нём место для своих настроек, как обновляться. «Сервер и поиск» - про то, что в этот стек не входит по умолчанию или требует ручной работы: подключение Sphinx вместо встроенного поиска, доменная авторизация NTLM, тонкости связки nginx и Apache. Разумный порядок - сначала «Окружение», потом эта статья по мере необходимости.
Sphinx, доменная авторизация и связка nginx с Apache - обязательно настраивать всё сразу?
Нет, это три независимые подсистемы под разные поводы. Sphinx подключают, когда штатный поиск не справляется с нагрузкой или скоростью. Доменная авторизация нужна только там, где вход идёт через AD/NTLM. Схема nginx плюс Apache касается вообще любого проекта на собственном сервере, отдельно от первых двух. Настраивать все три сразу в реальности почти не приходится - обычно каждая подсистема появляется в проекте по своему поводу и в своё время.
С какой статьи начинать, если проект уже в проде и просто нужно навести порядок в процессе релизов?
С «Тестирования и выкладки» - там разобраны именно организационные вещи: идемпотентные миграции вместо ручной правки структуры базы, цепочка окружений разработка-тест-бой, резервная копия и снимок перед каждым релизом. «Сервер и поиск» в этом случае нужен только по конкретному поводу - например, если заодно решили подключить Sphinx.
Что объединяет права на файлы, тестовое окружение как копию боевого и снимок перед выкладкой?
Все три - про устранение расхождения между тем, что должно быть, и тем, что есть на самом деле. Одинаковые права нужны, чтобы веб-сервер и cron видели одни и те же файлы. Тестовое окружение как копия боевого нужно, чтобы результат тестирования что-то значил. Снимок перед выкладкой нужен, чтобы откат занимал минуты, а не часы разбирательств. Это один и тот же принцип воспроизводимости, вид с трёх разных сторон.
Связанные разделы
- Основы разработки - окружение BitrixVM и структура проекта - обязательный контекст перед ручной донастройкой сервера.
- Производительность - веб-кластер и композитный сайт - соседние темы масштабирования и отдачи статики.
- Модули - установщик модуля и его версия - тот же принцип воспроизводимых изменений, что и в миграциях базы данных.
- Интеграции - обмен с 1С и push-сервер - серверные подсистемы, которые тоже нужно разворачивать и эксплуатировать.