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-replaceMySQL 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 = 192MPHP 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 дней гарантии