Создание интернет-магазина на «1С-Битрикс: Управление сайтом» с помощью Terraform
Чтобы создать инфраструктуру для интернет-магазина на «1С-Битрикс: Управление сайтом» c помощью Terraform:
- Подготовьте облако к работе.
- Создайте инфраструктуру.
- Настройте ВМ для работы с «1C-Битрикс».
- Настройте «1С-Битрикс».
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
- Виртуальная машина: использование вычислительных ресурсов, хранилища, публичного IP-адреса и операционной системы (см. тарифы Compute Cloud).
- Кластер Managed Service for MySQL®: выделенные хостам вычислительные ресурсы, объем хранилища и резервных копий (см. тарифы Managed Service for MySQL®).
- Публичные IP-адреса, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
Для данного руководства используется пробная версия «1С-Битрикс» с ознакомительным периодом в 30 дней. Стоимость электронных версий продукта вы можете уточнить на официальном ресурсе «1С-Битрикс»
Создайте инфраструктуру
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Для создания инфраструктуры c помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файлы с описанием инфраструктуры:
Готовая конфигурацияВручную-
Склонируйте репозиторий с конфигурационными файлами.
git clone https://github.com/yandex-cloud-examples/yc-bitrix-website.git -
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
bitrix-website.tf— конфигурация создаваемой инфраструктуры.bitrix-website.auto.tfvars— файл с пользовательскими данными.
- Создайте папку для конфигурационных файлов.
- Создайте в папке:
-
Конфигурационный файл
bitrix-website.tf:bitrix-website.tf
# Объявление переменных для конфиденциальных параметров variable "folder_id" { type = string } variable "vm_user" { type = string } variable "ssh_key_path" { type = string } variable "mysql_user" { type = string } variable "mysql_password" { type = string sensitive = true } # Настройка провайдера terraform { required_providers { yandex = { source = "yandex-cloud/yandex" version = ">= 0.47.0" } } } provider "yandex" { zone = var.folder_id } # Создание облачной сети и подсетей resource "yandex_vpc_network" "network-1" { name = "network1" } resource "yandex_vpc_subnet" "subnet-1" { name = "subnet1" zone = "ru-central1-a" network_id = yandex_vpc_network.network-1.id v4_cidr_blocks = ["192.168.1.0/24"] } resource "yandex_vpc_subnet" "subnet-2" { name = "subnet2" zone = "ru-central1-b" network_id = yandex_vpc_network.network-1.id v4_cidr_blocks = ["192.168.2.0/24"] } resource "yandex_vpc_subnet" "subnet-3" { name = "subnet3" zone = "ru-central1-d" network_id = yandex_vpc_network.network-1.id v4_cidr_blocks = ["192.168.3.0/24"] } # Создание групп безопасности resource "yandex_vpc_security_group" "sg-vm" { name = "bitrix-sg-vm" description = "Description for security group" network_id = yandex_vpc_network.network-1.id egress { protocol = "ANY" description = "ANY" v4_cidr_blocks = ["0.0.0.0/0"] from_port = 0 to_port = 65535 } ingress { protocol = "TCP" description = "EXT-HTTP" v4_cidr_blocks = ["0.0.0.0/0"] port = 80 } ingress { protocol = "TCP" description = "EXT-SSH" v4_cidr_blocks = ["0.0.0.0/0"] port = 22 } ingress { protocol = "TCP" description = "EXT-HTTPS" v4_cidr_blocks = ["0.0.0.0/0"] port = 443 } } resource "yandex_vpc_security_group" "sg-mysql" { name = "bitrix-sg" description = "Security group for mysql" network_id = yandex_vpc_network.network-1.id egress { protocol = "ANY" description = "any" v4_cidr_blocks = ["0.0.0.0/0"] from_port = 0 to_port = 65535 } ingress { protocol = "TCP" description = "ext-msql" v4_cidr_blocks = ["0.0.0.0/0"] port = 3306 } } # Добавление готового образа ВМ data "yandex_compute_image" "ubuntu-image" { family = "ubuntu-2204-lts" } # Создание загрузочного диска resource "yandex_compute_disk" "boot-disk" { name = "bootdisk" type = "network-ssd" zone = "ru-central1-a" size = "24" image_id = data.yandex_compute_image.ubuntu-image.id } # Создание ВМ resource "yandex_compute_instance" "vm-bitrix" { name = "bitrixwebsite" platform_id = "standard-v3" zone = "ru-central1-a" resources { core_fraction = 20 cores = 2 memory = 4 } boot_disk { disk_id = yandex_compute_disk.boot-disk.id } network_interface { subnet_id = yandex_vpc_subnet.subnet-1.id security_group_ids = ["${yandex_vpc_security_group.sg-vm.id}"] nat = true } metadata = { user-data = "#cloud-config\nusers:\n - name: ${var.vm_user}\n groups: sudo\n shell: /bin/bash\n sudo: 'ALL=(ALL) NOPASSWD:ALL'\n ssh_authorized_keys:\n - ${file("${var.ssh_key_path}")}" } } # Создание кластера Managed Service for MySQL resource "yandex_mdb_mysql_cluster" "bitrix-cluster" { name = "BitrixMySQL" environment = "PRESTABLE" network_id = yandex_vpc_network.network-1.id version = "8.0" security_group_ids = ["${yandex_vpc_security_group.sg-mysql.id}"] resources { resource_preset_id = "s2.micro" disk_type_id = "network-hdd" disk_size = "10" } host { zone = "ru-central1-a" subnet_id = yandex_vpc_subnet.subnet-1.id assign_public_ip = false } host { zone = "ru-central1-b" subnet_id = yandex_vpc_subnet.subnet-2.id assign_public_ip = false } } # Создание БД MySQL resource "yandex_mdb_mysql_database" "bitrix-db" { cluster_id = yandex_mdb_mysql_cluster.bitrix-cluster.id name = "db1" } # Создание пользователя БД resource "yandex_mdb_mysql_user" "bitrix-user" { cluster_id = yandex_mdb_mysql_cluster.bitrix-cluster.id name = var.mysql_user password = var.mysql_password permission { database_name = yandex_mdb_mysql_database.bitrix-db.name roles = ["ALL"] } } -
Файл с пользовательскими данными
bitrix-website.auto.tfvars:bitrix-website.auto.tfvars
folder_id = "<идентификатор_каталога>" vm_user = "<имя_пользователя_ВМ>" ssh_key_path = "<путь_к_файлу_с_открытым_SSH-ключом>" mysql_user = "<имя_пользователя_БД>" mysql_password = "<пароль_пользователя_БД>"
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
- Сеть — yandex_vpc_network.
- Подсети — yandex_vpc_subnet.
- Группы безопасности — yandex_vpc_security_group.
- Образ — yandex_compute_image.
- Диск — yandex_compute_disk.
- Виртуальная машина — yandex_compute_instance.
- Кластер MySQL — yandex_mdb_mysql_cluster.
- База данных — yandex_mdb_mysql_database.
- Пользователь БД — yandex_mdb_mysql_user.
-
-
В файле
bitrix-website.auto.tfvarsзадайте пользовательские параметры:folder_id— идентификатор каталога.vm_user— имя пользователя ВМ.ssh_key_path— путь к файлу с открытым SSH-ключом для аутентификации пользователя на ВМ. Подробнее см. Создание пары ключей SSH.mysql_user— имя пользователя для подключения к БД MySQL®. В этом руководстве укажитеuser1.mysql_password— пароль пользователя для доступа к БД MySQL®. В этом руководстве укажите значениеp@s$woRd!.
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Настройте ВМ для работы с «1C-Битрикс»
Для настройки сервера для работы с «1С-Битрикс» выполните следующие шаги:
-
Подключитесь к ВМ по SSH от имени пользователя, заданного при создании ВМ (например,
ubuntu):ssh ubuntu@<публичный_IP-адрес_ВМ>Публичный IP-адрес ВМ можно узнать в консоли управления
в поле Публичный IPv4-адрес блока Сеть на странице ВМ. -
Установите необходимое программное обеспечение:
Примечание
Следующие команды установки предназначены для Ubuntu. Для других дистрибутивов используйте команды вашего менеджера пакетов.
sudo apt-get update sudo apt-get install -y apache2 libapache2-mod-php php-gd php-mbstring php-mysql -
Перейдите в рабочий каталог проекта и скачайте дистрибутив «1С-Битрикс: Управление сайтом»:
cd /var/www/html/ sudo wget https://www.1c-bitrix.ru/download/business_encode.tar.gz -
Распакуйте полученный архив и после этого удалите ненужные файлы:
sudo tar -zxf business_encode.tar.gz sudo rm -f index.html business_encode.tar.gz -
Назначьте пользователя
www-dataвладельцем рабочего каталога проекта:sudo chown -R www-data:www-data /var/www/htmlПроверьте права и владельцев рабочего каталога:
ls -lРезультат:
total 40 drwxrwxr-x 7 www-data www-data 4096 Jun 8 2023 bitrix -rwxrwxr-x 1 www-data www-data 1150 Nov 30 2020 favicon.ico -rwxrwxr-x 1 www-data www-data 1353 Jun 8 2023 index.php -rwxrwxr-x 1 www-data www-data 268 Apr 17 2023 install.config -rwxrwxr-x 1 www-data www-data 12821 Mar 18 2022 readme.html -rwxrwxr-x 1 www-data www-data 112 Mar 27 2013 readme.php drwxrwxr-x 2 www-data www-data 4096 Jun 8 2023 upload -
Для корректной работы 1С настройте параметры PHP. Для этого воспользуйтесь встроенным редактором
nanoи отредактируйте следующие переменные в файле конфигурацииphp.ini:sudo nano /etc/php/8.1/apache2/php.iniБыло Стало short_open_tag = Offshort_open_tag = Onmemory_limit = 128Mmemory_limit = 256M;date.timezone =date.timezone = Europe/Moscow;opcache.revalidate_freq =2opcache.revalidate_freq =0;session.save_path = "/var/lib/php/sessions"session.save_path = "/var/lib/php/sessions"Путь к файлу
php.iniзависит от установленной версии PHP. В примере приведен путь для версии8.1. Для версии8.0введите/etc/php/8.0/apache2/php.ini, для версии8.2—/etc/php/8.2/apache2/php.iniи т. д.Совет
Чтобы найти нужный параметр в редакторе
nanoнажмите сочетание клавиш Ctrl + W. Найдите требуемый параметр из таблицы выше, далее сохраните изменения при помощи сочетания клавиш Ctrl + O. Выход из редактора Ctrl + X. -
Настройте веб-сервер Apache. Для этого отредактируйте файл конфигурации
/etc/apache2/sites-enabled/000-default.conf.-
Откройте файл в текстовом редакторе:
sudo nano /etc/apache2/sites-enabled/000-default.conf -
После строки
DocumentRoot /var/www/htmlдобавьте следующий блок и сохраните изменения:<Directory /var/www/html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> -
Перезапустите веб-сервер, чтобы все измененные настройки применились:
sudo systemctl restart apache2
-
После выполнения этих команд серверная часть будет сконфигурирована для корректной работы 1С-Битрикс.
Настройте «1С-Битрикс»
Пройдите процесс первоначальной установки и настройки «1С-Битрикс»:
-
Откройте веб-интерфейс «1С-Битрикс: Управление сайтом». Для этого в браузере перейдите по адресу
http://<публичный_IP_адрес_ВМ>/. Откроется страница с предложением установить «1С-Битрикс». -
На стартовом экране установки нажмите кнопку Далее.

-
Ознакомьтесь с лицензионным соглашением и выберите опцию Я принимаю лицензионное соглашение. Затем нажмите кнопку Далее.

-
Регистрировать продукт необязательно (вы можете отключить соответствующую опцию). Убедитесь, что опция Установить в кодировке UTF-8 выбрана и нажмите кнопку Далее.

-
«1С-Битрикс» проверит, верно ли сконфигурирован сервер. Нажмите кнопку Далее внизу страницы.

-
Настройте БД:
- В поле Сервер укажите полное доменное имя созданной вами БД. Чтобы его узнать:
- В консоли управления
перейдите в новой вкладке браузера на страницу каталога. - В списке сервисов выберите Managed Service for MySQL.
- В открывшемся окне выберите созданный ранее кластер
BitrixMySQL. - В меню слева выберите вкладку Хосты.
- В поле FQDN хоста подведите курсор к имени хоста (вида
rc1c-cfazv1db********) и скопируйте полное доменное имя базы данных, нажав появившийся значок . К имени хоста добавится полное доменное имя, в результате в поле Сервер должно быть указано имя видаrc1c-cfazv1db********.mdb.yandexcloud.net.
- В консоли управления
- В полях Имя пользователя и Пароль укажите данные, с которыми вы создавали БД в разделе Создайте кластер БД MySQL®.
- В поле Имя базы данных укажите имя созданной БД (
db1). - Нажмите кнопку Далее.

- В поле Сервер укажите полное доменное имя созданной вами БД. Чтобы его узнать:
-
Дождитесь завершения процесса установки и инициализации БД.

-
Создайте администратора (пользователя, который сможет управлять системой). Заполните поля в соответствии с вашими персональными данными и нажмите кнопку Далее.

-
Выберите шаблон Интернет-магазин и нажмите кнопку Далее.

-
Подтвердите выбор единственного шаблона, нажмите кнопку Далее.

-
Выберите цветовое оформление выбранного ранее шаблона и нажмите кнопку Далее.

-
Заполните поля в соответствии с требованиями к интернет-магазину и нажмите кнопку Далее.

-
При необходимости включите функцию складского учета и укажите, в какой момент нужно резервировать товар на складе. Нажмите кнопку Далее.

-
Укажите данные о компании и нажмите кнопку Далее.

-
Выберите типы плательщиков, с которыми будет работать ваш интернет-магазин, и нажмите кнопку Далее.

-
Выберите доступные в вашем интернет-магазине способы оплаты и доставки товаров, затем нажмите кнопку Далее.

-
Дождитесь завершения установки системы.

-
После завершения установки нажмите кнопку Перейти на сайт.

-
Откроется интерфейс интернет-магазина в режиме редактирования.

-
Чтобы увидеть главную страницу сайта глазами пользователя, выйдите из режима администрирования вашим сайтом. Для этого в правом верхнем углу страницы нажмите Выйти, затем перейдите по адресу
http://<публичный_IP-адрес_ВМ>/.
Чтобы вернуться в режим редактирования, авторизуйтесь на сайте с учетными данными администратора, которые вы указали при настройке «1С-Битрикс».
Совет
Чтобы получать резервные копии системы, периодически создавайте снимки диска ВМ.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Откройте конфигурационный файл
bitrix-website.tfи удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-