Доменное имя для вашего проекта

К вашему серверу уже можно обратиться по IP-адресу, но гораздо удобнее буквенное доменное имя: его проще запомнить и легче набрать в адресной строке (конечно, есть и исключения).
Доменное имя можно купить у любой компании-регистратора, а можно получить бесплатно.
Для учебных целей возьмём бесплатный домен, его можно зарегистрировать на сервисе Freenom.com. Freenom предлагает бесплатную регистрацию в пяти доменных зонах: .tk, .ml, .ga, .cf и .gq.
Зайдите на главную страницу сервиса Freenom, введите в строку поиска доменное имя, которое хотели бы получить и нажмите «Проверить доступность»:
image
Если домен занят — выберите другое имя и попробуйте снова.
Если имя свободно — нажимайте кнопку «Получить домен сейчас» и затем — кнопку «Оформить заказ» внизу страницы.
Введите свою почту слева внизу и нажмите кнопку "Verify My Email Address". Freenom пришлёт вам ссылку для регистрации: по ней вы попадёте на страницу подтверждения заказа.
Заполните форму и нажмите "Complete Order".
После этого зайдите в раздел "My Domains" из меню "Services" и нажмите на кнопку "Manage Domain" в строке своего домена. Там кликните по вкладке "Manage Freenom DNS":
image
В открывшейся вкладке нужно добавить две записи — одну с приставкой www, а другую — без:
image
Обе записи настраиваются одинаково:
Type (тип записи) — A, он определяет привязку домена к серверу по IP-адресу;
Target (цель) — к какому IP привязать доменное имя. Укажите публичный IP-адрес вашего сервера в Яндекс.Облаке.
После заполнения полей нажмите "Save Changes".
Потребуется некоторое время, чтобы данные о вашем новом домене попали на серверы DNS.

Domain Name System

Domain Name System обеспечивает сопоставление доменных имён и IP, которые этим именам соответствуют. Это своего рода многоуровневая справочная система, к которой обращаются компьютеры, чтобы узнать, на каком IP размещён ресурс с запрошенным доменным именем: ведь компьютеры понимают адресацию только по IP.
Когда в адресной строке браузера вы набираете praktikum.yandex.ru, запрос сперва отправляется к серверу DNS:
— ...скажите, а на каком IP расположен адрес "praktikum.yandex.ru"?
— Вам нужен IP 77.88.21.35, — отвечает DNS.
— Спасибо, соединяюсь!
Добавление новой записи в эту справочную систему требует довольно заметного времени. У Freenom это обычно занимает около 10 минут, но может потребоваться и несколько часов, наберитесь терпения.

Добавление доменного имени в настройки Django

Пока ваш новый домен добавляется в DNS — добавьте в настройки Django-проекта и nginx имя вашего домена.
Откройте в nano файл settings.py вашего Django-проекта, и добавьте в список ALLOWED_HOSTS два новых значения:
Скопировать кодBASH
ALLOWED_HOSTS = ['xxx.xxx.xxx.xxx', 'localhost', <'ваш-домен'>, <'www.ваш-домен'>] # вместо xxx.xxx.xxx.xxx — IP вашего сервера
Сохраните изменения и перезапустите Gunicorn командой sudo systemctl restart gunicorn, чтобы изменения вступили в силу.
Измените конфигурационный файл nginx. Откройте его в nano:
Скопировать кодBASH
sudo nano /etc/nginx/sites-enabled/default
Добавьте в строку server_name ещё два значения, через пробел:
Скопировать кодBASH
# инструкции для nginx server { ... server_name <ваш-ip> <ваш-домен> <www.ваш-домен>; ... }
После этого перезагрузите nginx командой sudo nginx -s reload, чтобы изменения вступили в силу.
Когда DNS обновятся, ваш сервер станет доступен по доменному имени.
Регистрация домена в более популярных зонах платная, вы можете посмотреть цены здесь же, на Freenom, или проверить цены на аналогичных сервисах.
Если по каким-то причинам Freenom откажет вам в регистрации домена первого уровня, то всегда можно подобрать себе бесплатный домен второго уровня, например, https://codotvu.co, там можно получить домен вида какое-то-имя.co.vu