Установка и настройка домена для сайта Django на VPS

👁 221 просмотров
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

После того, как проект готов, нужно, чтобы им можно пользоваться через доменное имя второго или третьего уровня project.mydomen.ru или mydomen.ru.

На самом деле, нет разницы какого уровня будет домен. В данном примере условимся, что нам нужен субдомен нашего домена выделить под проект на Django. Если он будет третьего уровня, то надо будет дописать в DNS — редакторе регистратора запись CNAME именем project и www.project со значениями mydomen.ru. 

Пример создания субдомена в DNS в панели регистратора домена
Пример создания субдомена в DNS в панели регистратора домена. Обратите внимание на точку в конце значения.

 

Замечание. Не забываем, что если даже NS — сервера вы добавили к вашему домену регистратора, то это не полностью означает, что этот домен уже будет прикреплен к вашему VPS. Вторым шагом после этого является создание со стороны VPS доменной зоны под этот домен и субдомен. Если домен куплен там же, где VPS, то , в большинстве этот процесс должен быть автоматизирован, но не факт.

Далее у нас может быть несколько случаев развития событий:

  • у нас в системе установлена какая-то готовая панель, на подобие VestaCP, в который уже входит нужный инструментарий;
  • нам нужно ставить все сервисы и пакеты с нуля.

Разберем оба варианта. В случае панели управления покажу как это делать с VestaCP.

Замечание. С установкой Nginx и с работой вспомогательных утилит для стабильной работы проекта Django на продакшн мы уже сталкивались в Деплой проекта Django в продакшн с Nginx + Gunicorn + Supervisor. В данном статье повторим путь с уклоном на понимание процесса прикрепления домена к проекту, если нам не нужен VestaCP.

Установка домена под проект Django, используя VestaCP

VestaCP уже содержит сервер Nginx, который нам будет нужен, чтобы перенаправить все запросы к нашему проекту на Django.

1. Создаем новый WEB- сайт в панели VestaCP

Создание нового WEB-проекта
Создание нового WEB-проекта

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

Перзапуск сервера Nginx
Перезапуск сервера Nginx

Далее заходим по адресу 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 и проверяем. Если не сработало, то читаем статью, которая тесно с этим пунктом связана.