Создание веб-сайта на базе «1С-Битрикс» с помощью Terraform
Чтобы создать инфраструктуру для веб-сайта на базе «1С-Битрикс» c помощью Terraform:
- Подготовьте облако к работе.
- Создайте инфраструктуру.
- Настройте сервер для работы с «1C-Битрикс».
- Настройте «1С-Битрикс».
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки сервера для «1С-Битрикс» и БД входит:
- плата за диски Yandex Compute Cloud и постоянно запущенную ВМ (см. тарифы Compute Cloud);
- плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за использование управляемой БД (см. тарифы Managed Service for MySQL®).
Для данного руководства используется пробная версия «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}")}" } } 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 } } 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](https://terraform-provider.yandexcloud.net/resources/compute_image }}).
- Диск — [yandex_compute_disk](https://terraform-provider.yandexcloud.net/resources/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-адрес блока Сеть на странице ВМ. -
Установите необходимое программное обеспечение:
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 = Off
short_open_tag = On
memory_limit = 128M
memory_limit = 256M
;date.timezone =
date.timezone = Europe/Moscow
;opcache.revalidate_freq =2
opcache.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 и нажмите кнопку Далее.
-
Система проверит, верно ли сконфигурирован сервер. Просмотрите все параметры на данной странице и нажмите кнопку Далее.
-
Настройте БД:
- В поле Сервер укажите полное доменное имя созданной вами БД. Чтобы его узнать:
- В консоли управления
перейдите в новой вкладке браузера на страницу каталога. - В списке сервисов выберите Managed Service for MySQL.
- В открывшемся окне выберите созданный ранее кластер
BitrixMySQL
. - В меню слева выберите вкладку Хосты.
- В поле FQDN хоста подведите курсор к имени хоста (вида
rc1c-cfazv1db********
) и скопируйте полное доменное имя базы данных, нажав появившийся значок . К имени хоста добавится полное доменное имя, в результате в поле Сервер должно быть указано имя видаrc1c-cfazv1db********.mdb.yandexcloud.net
.
- В консоли управления
- В полях Имя пользователя и Пароль укажите данные, с которыми вы создавали БД в разделе Создайте кластер БД MySQL®.
- В поле Имя базы данных укажите имя созданной БД (
db1
). - Нажмите кнопку Далее.
- В поле Сервер укажите полное доменное имя созданной вами БД. Чтобы его узнать:
-
Дождитесь инициализации БД MySQL®.
-
Создайте аккаунт администратора, который сможет вносить изменения в вашу систему. Заполните все поля и нажмите кнопку Далее.
-
Выберите шаблон Информационный портал и нажмите кнопку Далее.
-
Подтвердите выбор единственного шаблона оформления, нажав кнопку Далее.
-
Выберите цветовое оформление и нажмите кнопку Далее.
-
Заполните все поля в соответствии с требованиями к веб-сайту и нажмите кнопку Установить. Начнется установка и настройка всех компонентов системы. Дождитесь ее окончания.
-
Через некоторое время появится страница, уведомляющая о том, что система установлена и настроена. Для начала работы с веб-сайтом нажмите кнопку Перейти на сайт.
-
Вы открыли веб-интерфейс полностью готовой для дальнейшей эксплуатации системы в режиме редактирования содержимого.
-
Чтобы увидеть главную страницу сайта глазами пользователя, выйдите из режима администрирования вашим сайтом. Для этого в правом верхнем углу страницы нажмите Выйти, затем перейдите по адресу
http://<публичный_IP-адрес_ВМ>/
.
Чтобы вернуться в режим редактирования, авторизуйтесь на сайте с учетными данными администратора, которые вы указали при настройке «1С-Битрикс».
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
-
Откройте конфигурационный файл
bitrix-website.tf
и удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-