Создание интернет-магазина на платформе OpenCart с помощью Terraform
Чтобы создать инфраструктуру для интернет-магазина на платформе OpenCart с помощью Terraform:
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры интернет-магазина на платформе OpenCart входит:
- плата за постоянно запущенную ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование динамического или статического публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за кластер БД, если вы используете MySQL® (см. тарифы Managed Service for MySQL®).
Создайте инфраструктуру
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Чтобы разместить интернет-магазин на OpenCart с помощью Terraform:
-
Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).
-
Подготовьте файлы с описанием инфраструктуры:
Готовая конфигурацияСоздание вручную-
Клонируйте репозиторий с конфигурационными файлами:
git clone https://github.com/yandex-cloud-examples/yc-opencart-store.git
-
Перейдите в директорию с репозиторием. В ней должны появиться файлы:
opencart.tf
— конфигурация создаваемой инфраструктуры;opencart.auto.tfvars
— файл с пользовательскими данными.
-
Создайте папку для конфигурационных файлов.
-
Создайте в папке:
-
Конфигурационный файл
opencart.tf
:opencart.tf
# Объявление переменных для конфиденциальных параметров variable "folder_id" { type = string } variable "vm_user" { type = string } variable "ssh_key_path" { type = string } variable "db_user" { type = string } variable "db_password" { type = string sensitive = true } # Добавление прочих переменных locals { network_name = "network-1" subnet_name1 = "subnet-1" subnet_name2 = "subnet-2" sg_db_name = "opencart-sg" sg_vm_name = "opencart-sg-vm" vm_name = "opencart" cluster_name = "opencart" db_name = "db1" } # Настройка провайдера terraform { required_providers { yandex = { source = "yandex-cloud/yandex" version = ">= 0.47.0" } } } provider "yandex" { folder_id = var.folder_id } # Создание облачной сети resource "yandex_vpc_network" "network-1" { name = local.network_name } # Создание подсетей resource "yandex_vpc_subnet" "subnet-1" { name = local.subnet_name1 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 = local.subnet_name2 zone = "ru-central1-b" network_id = yandex_vpc_network.network-1.id v4_cidr_blocks = ["192.168.2.0/24"] } # Создание групп безопасности resource "yandex_vpc_security_group" "opencart-sg" { name = local.sg_db_name network_id = yandex_vpc_network.network-1.id egress { protocol = "ANY" description = "any" v4_cidr_blocks = ["0.0.0.0/0"] } ingress { protocol = "TCP" description = "ext-https" v4_cidr_blocks = ["0.0.0.0/0"] port = 3306 } } resource "yandex_vpc_security_group" "opencart-sg-vm" { name = local.sg_vm_name 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 { description = "HTTP" protocol = "TCP" v4_cidr_blocks = ["0.0.0.0/0"] port = 80 } ingress { protocol = "TCP" description = "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_compute_image" "opencart-image" { source_family = "opencart" } # Создание ВМ resource "yandex_compute_instance" "opencart" { name = "opencart" platform_id = "standard-v3" zone = "ru-central1-a" resources { core_fraction = 20 cores = 2 memory = 4 } boot_disk { initialize_params { image_id = yandex_compute_image.opencart-image.id type = "network-ssd" size = "13" } } network_interface { subnet_id = yandex_vpc_subnet.subnet-1.id security_group_ids = [yandex_vpc_security_group.opencart-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}")}" } } # Создание кластера MySQL® # Если необходимости в кластере нет, удалите блок кода с созданием кластера, БД и пользователя MySQL® resource "yandex_mdb_mysql_cluster" "opencart-mysql" { name = local.cluster_name environment = "PRODUCTION" network_id = yandex_vpc_network.network-1.id version = "8.0" security_group_ids = [yandex_vpc_security_group.opencart-sg.id] resources { resource_preset_id = "s2.micro" disk_type_id = "network-ssd" 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" "db1" { cluster_id = yandex_mdb_mysql_cluster.opencart-mysql.id name = local.db_name } # Создание пользователя для MySQL® resource "yandex_mdb_mysql_user" "user1" { cluster_id = yandex_mdb_mysql_cluster.opencart-mysql.id name = var.db_user password = var.db_password permission { database_name = yandex_mdb_mysql_database.db1.name roles = ["ALL"] } }
-
Файл с пользовательскими данными
opencart.auto.tfvars
:opencart.auto.tfvars
folder_id = "<идентификатор_каталога>" vm_user = "<имя_пользователя_ВМ>" ssh_key_path = "<путь_к_публичному_SSH-ключу>" db_user = "<имя_пользователя_БД>" db_password = "<пароль_для_доступа_к_БД>"
-
Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:
- Сеть — yandex_vpc_network
- Подсети — yandex_vpc_subnet
- Группы безопасности — yandex_vpc_security_group
- Образ ВМ — yandex_compute_image
- Виртуальная машина — yandex_compute_instance
- Кластер MySQL® — yandex_mdb_mysql_cluster
- База данных MySQL® — yandex_mdb_mysql_database
- Пользователь MySQL® — yandex_mdb_mysql_user
-
-
В файле
opencart.auto.tfvars
задайте пользовательские параметры:folder_id
— идентификатор каталога.vm_user
— имя пользователя ВМ.ssh_key_path
— путь к файлу с открытым SSH-ключом для аутентификации пользователя на ВМ. Подробнее см. Создание пары ключей SSH.db_user
— имя пользователя БД, напримерuser1
.db_password
— пароль для доступа к БД. Длина пароля должна составлять от 8 до 128 символов.
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-
-
Получите публичный IP-адрес ВМ — он потребуется далее, чтобы настроить OpenCart.
После создания инфраструктуры, настройте OpenCart.
Настройте OpenCart
-
Откройте веб-интерфейс интернет-магазина OpenCart. Для этого откройте в браузере адрес
http://<публичный_IP-адрес_ВМ>/
. Откроется страница настройки OpenCart. -
Ознакомьтесь с лицензией и нажмите Continue.
-
Убедитесь, что все строки с требованиями к системе отмечены зелеными галочками, и нажмите кнопку Continue.
-
Настройте доступ к БД:
Локальный сервер MySQL®Кластер Managed Service for MySQL®Атрибуты подключения к БД генерируются в специальном файле при создании ВМ:
-
Зайдите по SSH на созданную ВМ.
-
Перейдите в режим администратора
sudo -i
. -
Откройте файл
default_passwords.txt
в домашней директории администратора:root@opencart:~# cat default_passwords.txt MYSQL_USER=opencart MYSQL_PASS=qDbvN1R6tA6ET MYSQL_ROOT_PASS=5DiVb80l1kXVz MYSQL_DB=opencart
-
На странице настройки OpenCart в секции БД, введите соответствующие данные:
- Username — значение переменной
MYSQL_USER
. - Database — значение переменной
MYSQL_DB
. - Password — значение переменной
MYSQL_PASS
.
Остальные поля оставьте без изменения.
- Username — значение переменной
Если вы используете кластер Managed Service for MySQL®, введите нужные атрибуты кластера:
- Hostname — укажите полное доменное имя (FQDN) созданной БД. Чтобы его узнать:
- Перейдите в новой вкладке браузера на страницу каталога в консоли управления
. - Выберите раздел Managed Service for MySQL®.
- В таблице выберите созданный вами кластер.
- В меню слева выберите вкладку Хосты.
- Подведите курсор к полю Имя хоста (например,
rc1c-vok617m35g3dj23i
) и скопируйте полное доменное имя БД, нажав на значок .
- Перейдите в новой вкладке браузера на страницу каталога в консоли управления
- Username — имя пользователя (в примере
user1
). - Database — имя БД (в примере
db1
). - Password — указанный вами пароль пользователя.
Остальные поля оставьте без изменения.
-
-
Задайте имя администратора, его пароль и актуальный электронный адрес. После этого нажмите кнопку Continue.
-
Откроется страница с уведомлением о том, что система настроена. Чтобы настроить интернет-магазин, нажмите кнопку Login to your administration и введите логин и пароль администратора.
-
После завершения установки зайдите на ВМ по SSH и удалите ненужные установочные файлы:
user@opencart:~$ sudo -i root@opencart:~# rm -rf /var/www/opencart/install/
-
Чтобы проверить главную страницу сайта, перейдите по адресу
http://<публичный_IP-адрес_ВМ>/
. Вы увидите главную страницу сайта глазами пользователя, посетившего ваш интернет-магазин.
Удалите созданные ресурсы
Как удалить созданные ресурсы:
-
Откройте конфигурационный файл
opencart.tf
и удалите описание создаваемой инфраструктуры из файла. -
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
-