Недавно передо мной встала задача разворачивания 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 для получения более подробной информации и решения возможных проблем.