Привязка доменного имени к ВМ с веб-сервером с помощью консоли управления, CLI или API
Чтобы создать инфраструктуру для привязки доменного имени к ВМ с веб-сервером:
Чтобы привязать доменное имя к ВМ с веб-сервером в Cloud DNS:
- Подготовьте облако к работе.
- Создайте виртуальную машину с веб-сервером.
- Создайте публичную зону DNS.
- Делегируйте домен сервису Cloud DNS.
- Создайте ресурсную запись типа A.
- Проверьте работу сайта.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки создаваемого решения входят:
- плата за использование публичного IP-адреса (см. тарифы Yandex Virtual Private Cloud);
- плата за вычислительные ресурсы и диски ВМ (см. тарифы Yandex Compute Cloud);
- плата за использование публичной DNS-зоны и публичные DNS-запросы (см. тарифы Yandex Cloud DNS).
Создайте облачную сеть и подсеть
- В консоли управления
выберите ваш каталог. - В списке сервисов выберите Virtual Private Cloud.
- Справа сверху нажмите кнопку Создать сеть.
- В поле Имя укажите
webserver-network
. - В поле Дополнительно отключите опцию Создать подсети.
- Нажмите кнопку Создать сеть.
- На панели слева выберите Подсети.
- Справа сверху нажмите Создать.
- В поле Имя укажите
webserver-subnet-ru-central1-b
. - В поле Зона выберите зону доступности
ru-central1-b
. - В поле Сеть выберите облачную сеть
webserver-network
. - В поле CIDR укажите
192.168.1.0/24
. - Нажмите кнопку Создать подсеть.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Создайте облачную сеть
webserver-network
:yc vpc network create webserver-network
Результат:
id: enp1gg8kr3pv******** folder_id: b1gt6g8ht345******** created_at: "2023-12-20T20:08:11Z" name: webserver-network default_security_group_id: enppne4l2eg5********
Подробнее о команде
yc vpc network create
читайте в справочнике CLI. -
Создайте подсеть в зоне доступности
ru-central1-b
:yc vpc subnet create webserver-subnet-ru-central1-b \ --zone ru-central1-b \ --network-name webserver-network \ --range 192.168.1.0/24
Результат:
id: e2li9tcgi7ii******** folder_id: b1gt6g8ht345******** created_at: "2023-12-20T20:11:16Z" name: webserver-subnet-ru-central1-b network_id: enp1gg8kr3pv******** zone_id: ru-central1-b v4_cidr_blocks: - 192.168.1.0/24
Подробнее о команде
yc vpc subnet create
читайте в справочнике CLI.
-
Чтобы создать облачную сеть, воспользуйтесь методом REST API create для ресурса Network или вызовом gRPC API NetworkService/Create.
-
Чтобы создать подсеть, воспользуйтесь методом REST API create для ресурса Subnet или вызовом gRPC API SubnetService/Create.
Создайте группу безопасности
Создайте группу безопасности, разрешающую входящий TCP-трафик для портов 22
, 80
и 443
, а также любой исходящий трафик.
-
В консоли управления
выберите ваш каталог. -
В списке сервисов выберите Virtual Private Cloud.
-
На панели слева выберите
Группы безопасности. -
Нажмите кнопку Создать группу безопасности.
-
В поле Имя укажите имя
webserver-sg
. -
В поле Сеть выберите созданную ранее сеть
webserver-network
. -
В блоке Правила создайте следующие правила для управления трафиком:
Направление
трафикаОписание Диапазон портов Протокол Источник /
НазначениеCIDR блоки Входящий http
80
TCP
CIDR
0.0.0.0/0
Входящий https
443
TCP
CIDR
0.0.0.0/0
Входящий ssh
22
TCP
CIDR
0.0.0.0/0
Исходящий any
Весь
Любой
CIDR
0.0.0.0/0
-
Нажмите кнопку Сохранить.
Выполните команду:
yc vpc security-group create \
--name webserver-sg \
--rule "description=http,direction=ingress,port=80,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
--rule "description=https,direction=ingress,port=443,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
--rule "description=ssh,direction=ingress,port=22,protocol=tcp,v4-cidrs=[0.0.0.0/0]" \
--rule "description=any,direction=egress,port=any,protocol=any,v4-cidrs=[0.0.0.0/0]" \
--network-name webserver-network
Результат:
id: enp4htsnl1sa********
folder_id: b1gt6g8ht345********
created_at: "2023-12-23T19:07:03Z"
name: webserver-sg
network_id: enp37qpnksl2********
status: ACTIVE
rules:
- id: enpdu0t8san9********
description: http
direction: INGRESS
ports:
from_port: "80"
to_port: "80"
protocol_name: TCP
protocol_number: "6"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enpr7oirpff5********
description: https
direction: INGRESS
ports:
from_port: "443"
to_port: "443"
protocol_name: TCP
protocol_number: "6"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enp0bgk6dkdd********
description: ssh
direction: INGRESS
ports:
from_port: "22"
to_port: "22"
protocol_name: TCP
protocol_number: "6"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
- id: enpspns0tfml********
description: any
direction: EGRESS
protocol_name: ANY
protocol_number: "-1"
cidr_blocks:
v4_cidr_blocks:
- 0.0.0.0/0
Подробнее о команде yc vpc security-group create
читайте в справочнике CLI.
Сохраните полученный идентификатор (id
) группы безопасности: он пригодится при создании виртуальной машины.
Чтобы создать группу безопасности, воспользуйтесь методом REST API create для ресурса SecurityGroup или вызовом gRPC API SecurityGroupService/Create.
Создайте виртуальную машину с веб-сервером
Перед тем как приступать к созданию виртуальной машины, подготовьте пару ключей (открытый и закрытый) для доступа к ВМ по SSH.
-
В консоли управления
выберите ваш каталог. -
В списке сервисов выберите Compute Cloud.
-
На панели слева выберите
Виртуальные машины. -
Нажмите кнопку Создать виртуальную машину.
-
В блоке Общая информация:
- В поле Имя укажите имя
mywebserver
. - В поле Зона доступности выберите
ru-central1-b
.
- В поле Имя укажите имя
-
В блоке Образ загрузочного диска перейдите на вкладку Marketplace и нажмите кнопку Показать все продукты Marketplace.
-
В открывшемся окне найдите и выберите продукт LAMP.
-
В блоке Сетевые настройки:
- В поле Подсеть выберите созданную ранее подсеть
webserver-subnet-ru-central1-b
. - В поле Публичный адрес выберите
Автоматически
. - В поле Группы безопасности выберите созданную ранее группу безопасности
webserver-sg
.
- В поле Подсеть выберите созданную ранее подсеть
-
В блоке Доступ укажите данные для доступа к ВМ:
- В поле Логин укажите имя пользователя
yc-user
. - В поле SSH-ключ вставьте содержимое созданного ранее публичного ключа.
- В поле Логин укажите имя пользователя
-
Нажмите кнопку Создать ВМ.
Выполните команду, указав сохраненный на предыдущем шаге идентификатор группы безопасности:
yc compute instance create \
--name mywebserver \
--zone ru-central1-b \
--network-interface subnet-name=webserver-subnet-ru-central1-b,nat-ip-version=ipv4,security-group-ids=<идентификатор_группы_безопасности> \
--create-boot-disk image-folder-id=standard-images,image-id=fd8jtn9i7e9ha5q25niu \
--ssh-key <SSH-ключ>
Где --ssh-key
— путь к файлу с открытым SSH-ключом и его имя. Например ~/.ssh/id_ed25519.pub
.
Результат:
done (32s)
id: fhmaq4shfrcm********
folder_id: b1gt6g8ht345********
created_at: "2023-12-23T05:36:34Z"
name: mywebserver
zone_id: ru-central1-b
platform_id: standard-v2
resources:
memory: "2147483648"
cores: "2"
core_fraction: "100"
status: RUNNING
metadata_options:
gce_http_endpoint: ENABLED
aws_v1_http_endpoint: ENABLED
gce_http_token: ENABLED
aws_v1_http_token: DISABLED
boot_disk:
mode: READ_WRITE
device_name: fhmprher1d0q********
auto_delete: true
disk_id: fhmprher1d0q********
network_interfaces:
- index: "0"
mac_address: d0:0d:ad:13:91:7e
subnet_id: e9bk1m87r4m4********
primary_v4_address:
address: 192.168.1.11
one_to_one_nat:
address: 158.160.***.***
ip_version: IPV4
security_group_ids:
- enpa5j0mrgm4********
gpu_settings: {}
fqdn: fhmaq4shfrcm********.auto.internal
scheduling_policy: {}
network_settings:
type: STANDARD
placement_policy: {}
Подробнее о команде yc compute instance create
читайте в справочнике CLI.
Чтобы создать виртуальную машину, воспользуйтесь методом REST API create для ресурса Instance или вызовом gRPC API InstanceService/Create.
В вашем каталоге будет создана виртуальная машина mywebserver
. Чтобы подключиться к ней по SSH, используйте логин yc-user
и публичный IP-адрес этой ВМ. Если вы планируете пользоваться созданным веб-сервером длительное время, сделайте публичный IP-адрес этой ВМ статическим.
Создайте публичную зону DNS
-
В консоли управления
выберите ваш каталог. -
Выберите сервис Cloud DNS.
-
Нажмите кнопку Создать зону.
-
Задайте настройки зоны DNS, соответствующие вашему домену:
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
example.com.
соответствует доменуexample.com
. Публичные зоны верхнего уровня (TLD-зоны) создавать нельзя. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode . - Тип —
Публичная
. - Имя — имя зоны.
- Зона — доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоны
-
Нажмите кнопку Создать.
Выполните команду:
yc dns zone create \
--name <имя_зоны> \
--zone <доменная_зона> \
--public-visibility
Где:
--name
— имя зоны DNS.--zone
— доменная зона. Название зоны должно заканчиваться точкой. Например, название доменной зоныexample.com.
соответствует доменуexample.com
. Публичные зоны верхнего уровня (TLD-зоны) создавать нельзя. Чтобы создать доменную зону с нелатинскими символами, используйте кодировку Punycode .
Результат:
id: dns39gihj0ef********
folder_id: b1gt6g8ht345********
created_at: "2023-12-21T16:43:37.883Z"
name: my-domain-zone
zone: example.com.
public_visibility: {}
Подробнее о команде yc dns zone create
читайте в справочнике CLI.
Чтобы создать публичную зону DNS, воспользуйтесь методом REST API create для ресурса DnsZone или вызовом gRPC API DnsZoneService/Create.
Делегируйте домен сервису Cloud DNS
Чтобы делегировать домен сервису Cloud DNS, в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов:
ns1.yandexcloud.net
ns2.yandexcloud.net
Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи до 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кэшируются записи для доменов.
Проверить делегирование домена можно с помощью сервиса Whoisdig
:
dig +short NS example.com
Результат:
ns2.yandexcloud.net.
ns1.yandexcloud.net.
Создайте ресурсную запись типа A
Создайте в вашей зоне DNS ресурсную запись типа А, указывающую на публичный IP-адрес веб-сервера:
-
В консоли управления
выберите ваш каталог. -
Выберите сервис Cloud DNS.
-
Выберите созданную ранее DNS-зону.
-
Нажмите кнопку Создать запись.
-
Задайте параметры записи:
-
В поле Имя выберите
Совпадает с именем зоны (@)
. -
В поле Тип выберите тип записи
A
. -
В поле Значение укажите публичный IP-адрес веб-сервера.
Узнать IP-адрес виртуальной машины можно в консоли управления
на странице ВМ в блоке Сеть или с помощью команды CLIyc compute instance get <имя_ВМ>
.
-
-
Нажмите кнопку Создать.
Выполните команду:
yc dns zone add-records \
--name <имя_зоны> \
--record "<доменное_имя> 600 A <IP-адрес_ВМ>"
Где:
--name
— имя созданной ранее публичной зоны DNS.--record
— параметры создаваемой ресурсной записи:-
<доменное_имя>
— доменное имя, должно заканчиваться точкой. Например, для доменаexample.com
здесь нужно указатьexample.com.
-
<IP-адрес_ВМ>
— публичный IP-адрес веб-сервера.Узнать IP-адрес виртуальной машины можно в консоли управления
на странице ВМ в блоке Сеть или с помощью команды CLIyc compute instance get <имя_ВМ>
.
-
Результат:
+--------+--------------+------+---------------+-----+
| ACTION | NAME | TYPE | DATA | TTL |
+--------+--------------+------+---------------+-----+
| + | example.com. | A | 51.250.**.*** | 600 |
+--------+--------------+------+---------------+-----+
Подробнее о команде yc dns zone add-records
читайте в справочнике CLI.
Чтобы создать ресурсную запись в зоне DNS, воспользуйтесь методом REST API updateRecordSets для ресурса DnsZone или вызовом gRPC API DnsZoneService/UpdateRecordSets.
Проверьте работу сайта
Теперь сайт на вашем веб-сервере доступен по доменному имени. Чтобы проверить работу сайта, введите в браузере его IP-адрес или доменное имя:
http://<публичный_IP-адрес_ВМ>
http://example.com
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- Удалите ВМ.
- Удалите статический публичный IP-адрес, если вы зарезервировали его специально для этой ВМ.
- Удалите созданную доменную зону.