Найти тему

Деплой сайта Django+Nginx на VDS/VPS сервер

Оглавление

Недавно передо мной встала задача разворачивания Django приложения на VDS сервере. У меня получилось это сделать довольно легко, и я написал эту инструкцию, которая точно описывает мои действия.

Перед тем как повторять следующие шаги я рекомендую вам создать на сервере обычного пользователя и выполнять все команды от него.

Шаг 1: Подключитесь к виртуальному серверу

Используйте SSH-клиент, такой как PuTTY (для Windows) или встроенный терминал (для Linux/Mac), чтобы подключиться к вашему виртуальному серверу. Введите IP-адрес сервера и учетные данные для входа.

Шаг 2: Установите необходимые пакеты

Обновите пакеты вашей операционной системы и установите необходимые пакеты, включая Python, pip и Nginx:

sudo apt update
sudo apt install python3 python3-pip nginx

Шаг 3: Установите и активируйте виртуальное окружение

Рекомендуется использовать виртуальное окружение для изоляции зависимостей проекта. Создайте и активируйте виртуальное окружение следующими командами:

python3 -m venv myenv
source myenv/bin/activate

Шаг 4: Клонируйте проект и установите зависимости

Склонируйте ваш проект Django на сервер и перейдите в его корневую директорию. Затем установите зависимости, указанные в файле requirements.txt:

git clone <URL_вашего_проекта>
cd <название_проекта>
pip install -r requirements.txt

Шаг 5: Настройте файлы конфигурации Nginx

Создайте новый файл конфигурации для вашего проекта в директории /etc/nginx/sites-available. Назовите его, например, myproject.conf, и отредактируйте его:

sudo nano /etc/nginx/sites-available/myproject.conf

Или

sudo nvim /etc/nginx/sites-available/myproject.conf

Вставьте следующий конфигурационный код, заменив <your_domain> на ваш домен или IP-адрес сервера, а <your_project_directory> на полный путь к директории вашего проекта:

server {
listen 80;
server_name <your_domain>;

location /static/ {
alias <your_project_directory>/static/;
}

location / {
proxy_pass <http://localhost:8000>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

Сохраните и закройте файл.

Шаг 6: Создайте символическую ссылку и перезапустите Nginx

Создайте символическую ссылку для вашего конфигурационного файла в директории /etc/nginx/sites-enabled:

sudo ln -s /etc/nginx/sites-available/myproject.conf /etc/nginx/sites-enabled/

Перезапустите Nginx, чтобы применить изменения:

sudo systemctl restart nginx

Шаг 7: Добавить разрешенные хосты

Откройте файл settings.py и в переменную ALLOWED_HOSTS между скобок добавьте ’*’:

ALLOWED_HOSTS = ['*']

Шаг 8: Настройка расположения статических файлов

Чтобы проще настроить взаимодействие Nginx со статическими файлами Django я советую расположите их общую папку в папке /var/www/. Для этого откройте settings.py и добавьте строчки:

import os
STATIC_ROOT = os.path.join(BASE_DIR, '/var/www/static')

А в файле /etc/nginx/sites-available/myproject.conf вместо <your_project_directory>/static/ напишите /var/www/static.

Шаг 9: Перенесите статические файлы и примените миграции

Перейдите в корневую директорию вашего проекта и выполните следующие команды:

python manage.py collectstatic
python manage.py migrate

Шаг 10: Запустите Django-приложение

Запустите ваше Django-приложение, используя следующую команду:

python manage.py runserver

Теперь ваш Django-проект должен быть доступен через ваш домен или IP-адрес сервера с использованием Nginx.

Обратите внимание, что это общая инструкция, и возможны различия в зависимости от вашей конкретной конфигурации и требований проекта. Рекомендуется ознакомиться с документацией Django и Nginx для получения более подробной информации и решения возможных проблем.