После того, как проект готов, нужно, чтобы им можно пользоваться через доменное имя второго или третьего уровня project.mydomen.ru или mydomen.ru.
На самом деле, нет разницы какого уровн�� будет домен. В данном примере условимся, что нам нужен субдомен нашего домена выделить под проект на Django. Если он будет третьего уровня, то надо будет дописать в DNS — редакторе регистратора запись CNAME именем project и www.project со значениями mydomen.ru.
Замечание. Не забываем, что если даже NS — сервера вы добавили к вашему домену регистратора, то это не полностью означает, что этот домен уже будет прикреплен к вашему VPS. Вторым шагом после этого является создание со стороны VPS доменной зоны под этот домен и субдомен. Если домен куплен там же, где VPS, то , в большинстве этот процесс должен быть автоматизирован, но не факт.
Далее у нас может быть несколько случаев развития событий:
- у нас в системе установлена какая-то готовая панель, на подобие VestaCP, в который уже входит нужный инструментарий;
- нам нужно ставить все сервисы и пакеты с нуля.
Разберем оба варианта. В случае панели управления покажу как это делать с VestaCP.
Замечание. С установкой Nginx и с работой вспомогательных утилит для стабильной работы проекта Django на продакшн мы уже сталкивались в Деплой проекта Django в продакшн с Nginx + Gunicorn + Supervisor. В данном статье повторим путь с уклоном на понимание процесса прикрепления домена к проекту, если нам не нужен VestaCP.
Установка домена под проект Django, используя VestaCP
VestaCP уже содержит сервер Nginx, который нам будет нужен, чтобы перенаправить все запросы к нашему проекту на Django.
1. Создаем новый WEB- сайт в панели VestaCP
2. Редактируем конфигурационный файл Nginx по пути /home/<user>/web/conf/web/project.mydomen.ru.nginx.conf
Меняем содержимое, на подобие ниже и не забываем прописывать данные своего проекта. Порт текущего проекта 8001, если у вас другой — меняем на свой
server { #Все обращения на 80-м порту Nginx будет проверять #на соответствие нашему субдомену проекта listen IP_ADRESS_OF_MY_VPS:80; server_name project.mydomen.ru www.project.mydomen.ru; error_log /var/log/apache2/domains/project.mydomen.ru.error.log error; #Указываем путь к папке, где будут храниться статические данные сайта location /static/ { root /home/myprojectenv/project/;#Путь к папке проекта expires 30d; } #Указываем IP адрес проекта и порт, на котором он запущен. location / { proxy_pass http://IP_ADRESS_OF_MY_VPS:8001; proxy_set_header Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #Обработка ошибок location /error/ { alias /home/admin/web/project.mydomen.ru/document_errors/; } location @fallback { proxy_pass http://IP_ADRESS_OF_MY_VPS:8001; } location ~ /\.ht {return 404;} location ~ /\.svn/ {return 404;} location ~ /\.git/ {return 404;} location ~ /\.hg/ {return 404;} location ~ /\.bzr/ {return 404;} include /home/admin/conf/web/nginx.project.mydomen.ru.conf*; }
3. Перезапускаем сервер Nginx в панели VestaCP
Далее заходим по адресу project.mydomen.ru и убеждаемся, что по нему открывается наш проект на Django.
Установка домена под проект Django, используя только Nginx.
Ставим Nginx
sudo apt-get install nginx
Теперь идем и настраиваем Nginx по пути в файле
cd /etc/nginx/sites-available/
открываем файлик default
nano default
и перепишем некоторые моменты, как ниже
server { listen 80; server_name project.mydomen.ru; access_log /var/log/nginx/example.log; location /static/ { root /home/myprojectenv/project/; expires 30d; } location / { proxy_pass http://IP_ADRESS_OF_MY_VPS:8001; proxy_set_header Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
сохраняем и выходим.
Выполняем перезапуск Nginx, чтобы изменения вступили в силу
sudo service nginx restart
Заходим по адресу project.mydomen.ru и проверяем. Если не сработало, то читаем статью, которая тесно с этим пунктом связана.