Приветствую! В этой статье мы разберем процесс привязки доменного имени к Django-приложению, выпустим и настроим SSL-сертификат для этого домена, а также настроим все необходимые редиректы с помощью веб-сервера Nginx. Это заключительная часть по деплою Django-приложения, по результатам которой мы получим готовый Django-проект для продакшна. Итак, поехали.
Для начала нужно приобрести доменное имя (если вы этого еще не сделали). Самый простой вариант - это приобрести домен на сайте того хостинг-провайдера, где вы арендуете хостинг или сервер. Цены везде примерно одинаковые. На нашем сайте также есть статья со сравнением самых дешевых регистраторов доменных имен.
После приобретения домена в первую очередь нужно немного подождать его активации (от 1 до 12 часов, в зависимости от регистратора и доменной зоны). Это закономерно для всех новых, только что зарегистрированных доменных имен. Далее этот домен нужно привязать к нашему серверу, настроив DNS. На разных хостингах эта процедура выполняется по-разному. Я покажу на примере хостинга Zomro в панели управления ISPmanager.
В панели управления в левом меню выбираем пункт DNS-хостинг. В открывшемся окне жмем на кнопку "Заказать". После этого у вас появится DNS-хостинг на 50 доменов.
Если ваш хостинг или сервер находится на этом же аккаунте, то DNS-хостинг обойдется вам бесплатно. В противном случае за него нужно будет оплачивать 2.5$ ежемесячно.
Далее жмем на кнопку перейти и попадаем в DNS Manager:
В открывшемся окне жмем "Новый домен", выбираем тип Master, вводим наш домен, IP-адрес нашего сервера и адрес электронной почты:
Возвращаемся в панель управления хостинга, переходим в раздел "Домены", выбираем наш домен и жмем на кнопку NS:
В случае с хостингом Zomro прописываем следующие NS сервера:
ns1.zomro.net
ns2.zomro.ru
ns3.zomro.com
ns4.zomro.su
На этом привязка домена завершена, нужно лишь подождать пару часов обновления DNS. После этого наше Django-приложение будет открываться в браузере по доменному имени.
Если у вас возникли какие-либо проблемы с этим пунктом, то обратитесь в техподдержку своего хостинг-провайдера.
Настроим бесплатный SSL-сертификат Let's Encrypt для нашего сайта. Установим Let's Encrypt:
sudo apt install letsencrypt
sudo mkdir /var/www/example
Откроем конфиг:
sudo nano /etc/nginx/sites-available/default
Добавим следующую запись:
location /.well-known {
alias /var/www/example/.well-known;
}
Сохраним и перезапустим Nginx:
sudo service nginx restart
sudo letsencrypt certonly --webroot -w /var/www/example -d rating-casino.info -d www.rating-casino.info
sudo ufw allow 443/tcp
Еще раз откроем конфиг Nginx:
sudo nano /etc/nginx/sites-available/default
И добавим туда нужный код. В конечном итоге мой Nginx-конфиг выглядит следующим образом:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name rating-casino.info www.rating-casino.info;
return 301 https://rating-casino.info$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
ssl_certificate /etc/letsencrypt/live/rating-casino.info/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rating-casino.info/privkey.pem;
server_name www.rating-casino.info;
return 301 https://rating-casino.info$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name rating-casino.info;
ssl_certificate /etc/letsencrypt/live/rating-casino.info/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rating-casino.info/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8001;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
add_header Access-Control-Allow-Origin *;
}
location /.well-known {
alias /var/www/example/.well-known;
}
location /static/ {
alias /home/hostgeek/myapps/parser/env/lib/python3.8/site-packages/django/contrib/admin/static/;
expires modified +1w;
}
}
Сохраняем файл и перезапускаем Nginx:
sudo service nginx restart
Теперь наш сайт доступен по защищенному SSL-соединению. При попытке открыть сайт по http или по www будет выполнен редирект на https://rating-casino.info:
Эти редиректы нужны для SEO-оптимизации сайта. Если их не настроить, то поисковые системы будут видеть 4 разных сайта и делить весь SEO-вес между ними:
http://rating-casino.info
http://www.rating-casino.info
https://rating-casino.info
https://www.rating-casino.info
В процессе разработке вам наверняка придется настраивать и другие редиректы. Делается это опционально все в том же конфиге Nginx. Основные редиректы были представлены выше.
На этом все! За эти 5 статей мы выполнили полный деплой приложения Django. Также для удобства работы с файлами на сервере можно установить и настроить FTP-сервер - VSFTPD, но это мы сделаем уже в следующей статье.
Если у вас возникли какие-либо вопросы по этой статье, то задавайте их в комментариях, мы обязательно ответим на них. Спасибо за внимание!