Развертывание 1С-Битрикс в Selectel
Selectel — один из старейших российских хостинг-провайдеров с собственными дата-центрами в Санкт-Петербурге и Москве. Отличается хорошей документацией, предсказуемым ценообразованием и поддержкой, которая реально отвечает. Для Битрикс-проектов Selectel предлагает виртуальные серверы (VPS/VDS), выделенные серверы, облачные серверы и объектное хранилище (S3-совместимое).
Варианты размещения в Selectel
| Вариант | Когда подходит |
|---|---|
| Виртуальный сервер (VPS) | Малый и средний трафик, бюджетные проекты |
| Облачный сервер | Нужна гибкость ресурсов, почасовая оплата |
| Выделенный сервер | Высокий трафик, требования к производительности |
| Managed Kubernetes | Микросервисная архитектура, масштабирование |
Для большинства Битрикс-проектов — облачный сервер с Объектным хранилищем для файлов и выделенной базой данных (MySQL на отдельном сервере или Managed DB).
Создание облачного сервера
Selectel имеет удобный CLI (slc) и веб-панель. Через панель:
- Облако → Серверы → Создать сервер.
- Образ: Ubuntu 22.04 LTS.
- Конфигурация: от 2 vCPU / 4 GB RAM для старта.
- Диск: SSD
local-fast(NVMe) — максимальная скорость I/O, важно для Битрикс. - Сеть: публичный IP + приватная сеть для связи с базой.
Через CLI:
slc cloud server create \
--name bitrix-web \
--flavor sl1.2.20 \
--image ubuntu-22.04-202312 \
--root-password YOUR_STRONG_PASSWORD \
--network public,private
Стек ПО: nginx + PHP-FPM
# Обновить систему
apt update && apt upgrade -y
# Nginx
apt install -y nginx
# PHP 8.1 (Битрикс поддерживает до 8.2)
add-apt-repository ppa:ondrej/php -y
apt install -y php8.1-fpm php8.1-mysql php8.1-curl php8.1-gd \
php8.1-mbstring php8.1-xml php8.1-zip php8.1-bcmath \
php8.1-intl php8.1-soap php8.1-redis php8.1-opcache php8.1-imagick
Конфигурация nginx для Битрикс — использовать официальный bitrix-nginx.conf от 1С или написать вручную:
server {
listen 443 ssl http2;
server_name example.ru;
root /var/www/bitrix/public_html;
ssl_certificate /etc/letsencrypt/live/example.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.ru/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
client_max_body_size 100m;
client_body_timeout 120s;
# Статика — напрямую
location ~* \.(css|js|png|jpg|gif|ico|svg|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
# Закрытые папки Битрикс
location ~ /\.ht { deny all; }
location ~ /bitrix/modules/ { deny all; }
location ~ /bitrix/php_interface/ { deny all; }
location ~ /bitrix/tools/ { deny all; }
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_read_timeout 120;
include fastcgi_params;
}
}
База данных: MySQL на отдельном сервере
Selectel не предоставляет Managed MySQL как Яндекс.Облако — только виртуальные и выделенные серверы. Поэтому вариантов два:
A. MySQL на отдельном облачном сервере:
# На сервере базы данных
apt install -y mysql-server-8.0
mysql_secure_installation
# Создать базу и пользователя
mysql -e "CREATE DATABASE bitrix CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -e "CREATE USER 'bitrix'@'10.0.1.%' IDENTIFIED BY 'PASSWORD';"
mysql -e "GRANT ALL ON bitrix.* TO 'bitrix'@'10.0.1.%';"
B. Managed DB через Selectel (доступна через партнёрские сервисы).
Важные параметры MySQL для Битрикс (/etc/mysql/mysql.conf.d/mysqld.cnf):
[mysqld]
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2
query_cache_type = 0
max_connections = 300
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
Объектное хранилище для файлов
Selectel Object Storage совместим с S3 API, endpoint — s3.storage.selcloud.ru.
# Установка s3cmd
apt install -y s3cmd
# Настройка
s3cmd --configure
# host_base = s3.storage.selcloud.ru
# host_bucket = %(bucket)s.s3.storage.selcloud.ru
# Создать бакет
s3cmd mb s3://bitrix-files
Для монтирования /upload/ через s3fs — аналогично другим облакам, с указанием endpoint Selectel.
Альтернатива — использовать rsync для синхронизации /upload/ между несколькими серверами, если объектное хранилище избыточно для проекта.
Redis для кэша и сессий
# Redis на том же сервере (небольшой проект) или на отдельном
apt install -y redis-server
# /etc/redis/redis.conf — для внутреннего использования
bind 10.0.1.5 # Приватный IP сервера приложений
requirepass YOUR_REDIS_PASSWORD
maxmemory 1gb
maxmemory-policy allkeys-lru
SSL-сертификат через Certbot
apt install -y certbot python3-certbot-nginx
certbot --nginx -d example.ru -d www.example.ru
# Автообновление
echo "0 3 * * * root certbot renew --quiet" > /etc/cron.d/certbot
Сетевой экран Selectel
В Selectel группы безопасности (firewall) настраиваются в панели или через API. Минимальные правила:
Входящие:
80/tcp — 0.0.0.0/0 (HTTP, редирект на HTTPS)
443/tcp — 0.0.0.0/0 (HTTPS)
22/tcp — YOUR_OFFICE_IP/32
Между серверами (приватная сеть):
3306/tcp — только от веб-сервера
6379/tcp — только от веб-сервера
Мониторинг и бэкапы
Бэкапы в Selectel:
- Снапшоты дисков — через панель или API, по расписанию (нужно настраивать скриптом).
- Бэкапы базы через
mysqldumpв cron + upload в Object Storage.
#!/bin/bash
# /etc/cron.daily/bitrix-backup
BACKUP_DIR="/tmp/db_backup"
DATE=$(date +%Y%m%d_%H%M)
mkdir -p $BACKUP_DIR
mysqldump -h 10.0.1.10 -u bitrix -pPASSWORD bitrix | gzip > "$BACKUP_DIR/db_$DATE.sql.gz"
s3cmd put "$BACKUP_DIR/db_$DATE.sql.gz" s3://bitrix-backups/db/
find $BACKUP_DIR -mtime +1 -delete
Сроки развертывания
| Вариант | Состав | Срок |
|---|---|---|
| Один сервер | nginx + PHP + MySQL на одной VM | 1 день |
| Разделённая инфраструктура | Веб + отдельная БД + Redis | 2–3 дня |
| С Object Storage и мониторингом | + S3, SSL, бэкапы, firewall | 3–5 дней |







