Блог компанії 3v-Hosting

Швидке розгортання Django-проекту на VPS сервері з попередньо встановленим стеком

VPS

7 хв.


Будемо чесними - розгортання проекту Django на VPS може бути виснажливою рутинною роботою. Ви орендуєте сервер, підключаєтеся до нього по SSH, встановлюєте пакети, налаштовуєте Nginx, налаштовуєте Gunicorn, створюєте користувачів PostgreSQL, пишете служби systemd, возитеся з правами доступу до файлів, і в кінці кінців ви витратили півдня на те, що не має ніякого відношення до фактичної розробки.

Але що, якщо я скажу вам, що є новий вид хостингу - «Django VPS» - де все це вже зроблено за вас? Де вам потрібно просто увійти, запустити скрипт, і ваш додаток буде готовий до роботи через 10-15 хвилин?

Я недавно тестував цей підхід і хочу розповісти вам про нього. Вважайте цю статтю звітом розробника, який занадто багато разів обпікався на стандартних налаштуваннях VPS і нарешті знайшов те, що «просто працює».

 

 

 

 

Отже, що ж таке Django VPS?

 

Django VPS - це віртуальний приватний сервер, який поставляється з усім необхідним для хостингу Django-проекту - вже встановленим, налаштованим і підключеним.

Більше не потрібно починати з нуля.

Замість того, щоб витрачати години на встановлення пакетів, налаштування Nginx, конфігурацію PostgreSQL і налаштування Gunicorn, ви отримуєте готову до виробництва конфігурацію з:

    - Ubuntu 22.04
    - Python 3.10 з підтримкою venv
    - PostgreSQL
    - Зворотний проксі Nginx
    - Сервер додатків Gunicorn
    - Попередньо налаштовані служби systemd
    - Брандмауер, HTTPS і скрипти розгортання

Це як ніби хтось взяв кращі практики DevOps, упакував їх в образ VPS і додав червону килимову доріжку для вашого репозиторію Git. Вам залишається тільки увійти.

 

 

 

 

Перший вхід: чистий аркуш і README

 

Як тільки ви отримуєте доступ до свого Django VPS, все виглядає досить продумано.

Ви підключаєтеся до сервера по SSH як користувач без прав root і відразу бачите README. Не ту розпливчасту інструкцію, в якій написано «встановіть тут свій додаток», а інструкцію з конкретними вказівками - що запускати, куди помістити свій проект, як керувати службами.

 

На вас чекають два скрипти:

    deploy.sh: запускає ваш додаток.
    reset.sh: видаляє все, якщо ви хочете почати заново.

Служба PostgreSQL запущена. Nginx чекає. Gunicorn готовий до роботи. Все, що вам потрібно, - це URL Git.

 

 

 

 

Запуск deploy.sh: ваш проект онлайн за лічені хвилини

 

Привабливість цього шаблону полягає в процесі розгортання. Скрипт deploy.sh виконує більшу частину рутинної нудної роботи, і робить це швидко.

 

Ось як це працює:

1. Після запуску скрипту він запитає у вас URL вашого проекту на Git. Скрипт клонує ваш проект в /srv/yourproject/.
2. Потім він попросить вас ввести облікові дані для бази даних. Скрипт запитає у вас ім'я бази даних, ім'я користувача і пароль, після чого він:

    - Створює базу даних PostgreSQL і користувача.
    - Надає необхідні дозволи.
    - Вставляє ці облікові дані у ваш .env або безпосередньо в settings.py, залежно від структури вашого проекту.


3. Отримавши необхідні дані, сервер налаштує середовище. 
    Він створює файл .env з усіма змінними, які зазвичай потрібні Django:

    SECRET_KEY
    DEBUG=False
    DB_NAME, DB_USER, DB_PASSWORD


    Налаштує службу systemd:
    Шаблонний файл служби заповнюється шляхом вашого проекту і прив'язується до Gunicorn через UNIX-сокет. Він включається і запускається негайно.


    Налаштує Nginx:
        Nginx отримує нову конфігурацію сайту, яка:

        - Вказує на сокет Gunicorn
        - Обслуговує статичні файли
        - Може автоматично налаштувати HTTPS за допомогою Certbot (необов'язково, але дуже зручно)


Після цього все готово. Вам потрібно тільки доінсталювати залежності вашого проекту і провести міграцію бази даних. Виконайте наведені нижче команди або ті команди, які потрібні для доналаштування вашого проекту:

    source venv/bin/activate
    pip install -r requirements.txt
    python manage.py migrate
    python manage.py collectstatic


Вітаємо! Ваш сайт запущений!

 


 

Інші статті на тему Python у нашому Блозі:


    - Як визначити довжину списку в Python

    - Встановлення та використання Virtualenv у Python3

    - Pip: Основи керування пакетами в Python

 


 

 

Потрібно почати заново? reset.sh до ваших послуг

 

Зробили помилку? Хочете протестувати інший проект? Немає проблем. Запустіть reset.sh, і він:

    - Зупинить і відключить службу Gunicorn.
    - Видалити папку вашого проекту.
    - Видалити користувача і базу даних PostgreSQL.
    - Очистить конфігурацію Nginx.

Через 10 секунд сервер буде таким же свіжим і чистим, як і в момент його отримання.
Це особливо корисно для тестування або якщо ви представляєте агентство, яке працює над декількома Django-проектами для своїх клієнтів.

 

 

 

 

Чим це відрізняється від звичайного VPS?

 

Звичайний VPS - це чисте полотно. І це звучить чудово, поки ви не усвідомлюєте, що від вас очікують намалювати на ньому Сикстинську капелу... за допомогою зубочистки.

Django VPS, з іншого боку, схожий на полотно, на якому вже намальований ескіз і нанесений ґрунт. Все, що вам потрібно зробити, - це заповнити його кольорами.

Він створений спеціально для Django, без зайвого багажу, наприклад PHP-стека, без інструментів WordPress і тому подібного. Він призначений для Python-розробників, які хочуть швидко запустити свій проект в прод.

 

 

 

 

Вбудована безпека і кращі практики

 

Крім усього іншого, наш шаблон враховує безпеку і надійність вашого сервера:

    - SSH root login відключений.
    - UFW включений, дозволені тільки порти 22, 80 і 443.
    - PostgreSQL прив'язаний до localhost.
    - Gunicorn використовує UNIX-сокет для проксірування Nginx.
    - HTTPS не є обов'язковим, але підтримується з коробки.
    - Служби управляються через systemd, а не через screen або nohup hacks.

Це дає вам впевненість, що ваш проект не просто працює - він працює безпечно.

 

 

 

 

Для кого це призначено?

 

Якщо ви індивідуальний розробник, який запускає MVP, фрілансер, що працює над сайтом клієнта Django, невелика команда, що розгортає тестові або виробничі додатки, або навіть викладач, який показує студентам, як запустити проект - цей шаблон заощадить вам час, нерви і нічні усунення неполадок.

Звичайно, цей шаблон не замінить інфраструктуру корпоративного рівня, але чудово підходить для невеликих і середніх проектів.

 

 

 

 

Заключні думки

Після використання такого VPS для Django повернення до порожнього сервера буде схоже на холодний душ. Справа не тільки в економії часу - це ясність розуму, коли ви знаєте, що всі шаблонні завдання вирішені, і ви можете зосередитися на своєму додатку.
Не потрібні CI/CD-конвеєри, не потрібні хмарні дашборди - тільки VPS, ваш репозиторій і скрипт, який говорить вашою мовою.

Ви відправляєте свій код. Він запускається в режимі реального часу. Кінець історії.