Yandex Metrika
sanches.free 27 просмотров

CentOS 6.9 под Битрикс: пользователи, MySQL 5.5, PHP 5.6, Apache ITK и Nginx во фронте

Связь с виртуальной машиной Битрикс и оговорка по возрасту материала

Официальная BitrixVM упаковывает веб-слой и СУБД в проверенную связку скриптов. Ниже — разбор того, как похожую схему когда-то собирали «вручную» на CentOS 6.9: отдельные пользователи, обратный прокси во фронте, PHP под Apache ITK за локальным портом. CentOS 6 давно без штатной поддержки; воспринимайте текст как технический архив или как подсказку по слоям, а для новых площадок ориентируйтесь на поддерживаемую ОС, BitrixVM либо инструкции вендора для актуального стека.

Исходник задумывался как рабочий дневник, а не гарантированный чеклист: на живой железе всегда всплывают отличия по сети, железу и репозиториям.

Подготовка ОС и ролей аккаунтов

Ставим часовой пояс Москвы через симлинк на /usr/share/zoneinfo/Europe/Moscow. Под nginx выделяют «читающего» пользователя (webmaster), под дерево сайта — отдельного siteuser; второго включают в группу первого и на домашний каталог вешают права 750, чтобы воркеры фронта видели код, а изоляция по writable оставалась на стороне владельца сайта.

Полное отключение SELinux через SELINUX=disabled в /etc/selinux/config и перезагрузка — решение авторского ноута; на современных системах обычно предпочтительнее целевая политика, но здесь зафиксирован именно такой исторический компромисс.

В iptables на внешнем интерфейсе открывают 80/tcp и 443/tcp, сохраняют правило и перезапускают фильтр. Базовый набор пакетов тянуть через yum: компиляторный стек, архиваторы, curl, nginx, memcached, yum-utils и модуль замены пакетов для дальнейшей смены библиотек MySQL.

ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
useradd -m webmaster -s /bin/bash
useradd -s /bin/bash siteuser
usermod -a -G siteuser webmaster
chmod 750 /home/siteuser
yum install -y gcc gcc-c++ make nano zip unzip wget mc bzip2 curl nginx memcached yum-utils yum-plugin-replace

MySQL 5.5 из сторонних репозиториев

Подключали репозиторий Webtatic для EL6, заменяли системные клиентские библиотеки на ветку mysql55w-libs и ставили сервер метки mysql55w-server. В /etc/my.cnf упор делали на пакеты, журналы InnoDB и режим изоляции, совместимый с типичными сценариями Битрикс.

[mysqld]
max_allowed_packet = 192M
key_buffer = 32M
query_cache_size = 64M
query_cache_limit = 2M
thread_cache_size = 16
table_open_cache = 512
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
innodb_buffer_pool_size = 192M
innodb_additional_mem_pool_size = 16M
transaction-isolation = READ-COMMITTED

[mysqldump]
max_allowed_packet = 192M

PHP 5.6 и Apache MPM ITK

Репозиторий Remi для EL6 включали выборочно, активировали ветку remi-php56 и ставили связку модулей: php-mysql, GD, mbstring, xml, PDO, memcache и т. д. В /etc/php.ini включали короткие теги, поднимали лимиты памяти и полей форм, задавались московский часовой пояс и классический для того поколения mbstring.func_overload = 2 — на современных PHP эта директива отсутствует, здесь это отражение эпохи.

Apache переводили на бинарь httpd.itk, прописывали общий пользователь/группа webmaster, подключали SetEnvIf для заголовка X-Forwarded-Proto и поднимали внутренний виртуальный хост на 127.0.0.1:8888 с AssignUserId siteuser siteuser, чтобы PHP-процесс выполнялся от имени владельца сайта.

Listen 127.0.0.1:8888
<VirtualHost *:8888>
    ServerName site.ru
    DocumentRoot /home/siteuser/site.ru/
    AssignUserId siteuser siteuser
    php_value session.save_path "/var/lib/php/session_siteru"
</VirtualHost>

Каталог сессий создаём от root, группу ставим по сайту (chown root:siteuser), права 770.

Nginx как обратный прокси и защита путей

Во главном конфиге фиксируют пользователя процесса (user webmaster) и адекватное число рабочих процессов. В блоке http прописывают заголовки для бэкенда, gzip только по нужным MIME, ограничения на размер тела запроса и отключённый буфер прокси для отзывчивости.

Статика и пользовательские URL обслуживает try_files с запасным маршрутом на апстрим; любой PHP уходит прокси на локальный HTTP ITK.

server {
    listen 80;
    listen 443 ssl;
    server_name site.ru;
    root /home/siteuser/site.ru/;
    index index.php index.html;
    ssl_certificate     ssl/site.crt;
    ssl_certificate_key ssl/site.key;
    location / {
        try_files $uri $uri/ @apache;
    }
    location ~ \.php$ {
        proxy_pass http://127.0.0.1:8888;
    }
    location @apache {
        proxy_pass http://127.0.0.1:8888;
    }
    location ~ (/\.ht|/\.git|/bitrix/modules|/bitrix/php_interface) {
        deny all;
    }
}

Запуск и самый минимум по данным

Сервисы mysqld, httpd и nginx включаются в автозапуск уровней 3–5 через chkconfig и запускаются вручную после проверки конфигураций. Корневому пользователю MySQL задают пароль mysqladmin, затем в консоли mysql создают пустую БД и отдельного пользователя только с нужными привилегиями на эту базу.

Миграции и архивы

Для переносов с другой машины в арсенале авторского ноута остаются связка mysqldump/mysql, rsync по SSH и работа с архивами tar — имеет смысл держать эти команды под рукой и в мире управляемых образов BitrixVM, когда данные нужно стянуть с «старого» железа.

Заключение

Стек «Nginx → Apache ITK → PHP 5.6 + MySQL 5.5» на EL6 задаёт узнаваемую геометрию проблем производительности и безопасности. BitrixVM снимает большую часть ручной рутины, но понимание слоёв помогает дебажить права сессии, заголовки HTTPS за прокси и поведение СУБД даже там, где продукт уже упакован в виртуальный аплайанс.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии