Пример запуска Django-проекта

Примерное руководство по деплою проекта на Django в cPanel-хостинге

cPanel v136.0.24

Данная статья послужит небольшим руководством по запуску вашего Django-проекта на нашем хостинге через панель управления cPanel.

Статья включает следующие шаги:

  1. Ознакомление с примерным проектом
  2. Запуск проекта на отдельном хостинге (deployment on production)
  3. Удаление примерного проекта с хостинга

Внимательно следуйте процессу и выполняйте шаги в правильной последовательности. Это поможет вам лучше понять процесс деплоя Django-проекта и впоследствии применять полученные знания к собственным проектам.

Примерный проект

В качестве примера мы выбрали проект под названием "Link Vault", то есть хранилище полезных ссылок. В нём мы рассмотрим добавление категорий и самих ссылок.

Проект состоит из двух простых веб-страниц (список ссылок и форма добавления ссылки), а Django контролирует добавление каждой категории и ссылки в базу данных.

  1. Название проекта (project). Это основная директория проекта, в которой располагаются основные настройки проекта, включая файлы settings.py и wsgi.py.
    Эта папка была создана командой создания проекта и по принятой практике названа core:
    Django
    django-admin startproject core .
    
  2. Папка "links" является директорией приложения. В ней хранятся все конфигурационные файлы, отвечающие за создание и управление полезными ссылками. Для её создания использовалась команда:
    Django
    python manage.py startapp links
    
  3. Папка, в которой находятся файлы веб-страниц проекта.
  4. venv — это папка виртуального окружения. В ней находятся все библиотеки, используемые проектом. Загружать её на хостинг не требуется. На хостинге виртуальное окружение создаётся отдельно и хранится в другом месте. Это мы рассмотрим позже. Команды для создания и активации виртуального окружения:
    python -m venv venv
    .\venv\Scripts\activate
    
  5. .env — файл, содержащий все конфиденциальные переменные окружения, ключи и пароли.
  6. Файл requirements.txt используется для хранения списка всех необходимых библиотек с их версиями и удобной последующей установки. Создаётся он следующим образом:
    pip freeze > .\requirements.txt
    

Полный проект предоставляется вам для изучения и ознакомления:

Скачать примерный проект в формате .zip

django-sample.zip

Откройте папку проекта через терминал и выполните:

Windows PowerShell
Linux bash
py -m venv venv
.\venv\Scripts\activate
py .\manage.py runserver

Загрузка проекта на сервер

Для начала спланируем последовательность действий:

  1. Создадим отдельный поддомен для проекта
  2. Создадим базу данных и пользователя базы данных (MySQL)
  3. Создадим новое Python Environment через интерфейс "Setup Python App"
  4. Загрузим ZIP-архив проекта в папку поддомена
  5. Настроим конфигурационные файлы для production
  6. Через терминал cPanel установим необходимые библиотеки и выполним миграции Django в новую базу данных
  7. Перезапустим Python App

Если готовы, приступим!

1. Создание поддомена

Для проекта создадим поддомен django.scroll.uz на нашем хостинге.

2. Создание базы данных и пользователя

Интерфейс "Database Wizard" в cPanel пошагово проведёт вас через процесс создания базы данных MySQL, пользователя и назначения необходимых прав доступа.

  1. На первом шаге задайте имя базы данных. Мы назовём её scroll_django (часть scroll_ формируется автоматически на основе имени пользователя хостинга и у вас будет другой).
  2. На следующем шаге создайте пользователя. Мы назвали его scroll_django-user (у вас имя также будет отличаться). Задайте ему надёжный пароль и сохраните его.
  3. На третьем шаге назначьте права пользователю. Мы выбираем "ALL PRIVILEGES", чтобы пользователь получил полный доступ к управлению базой данных.

Сохраните имя базы данных, имя пользователя и пароль.

3. Создание Python App

Откройте интерфейс "Setup Python App" в cPanel и нажмите кнопку "+ Create Application".

Заполните форму следующим образом:

  1. Выберите подходящую для проекта версию Python.
  2. Затем необходимо указать корневую директорию проекта, то есть папку, из которой он будет запускаться. Мы указали django.scroll.uz, поскольку при создании поддомена cPanel автоматически создаёт одноимённую папку.
    Проще говоря:
    • мы создали поддомен django.scroll.uz;
    • cPanel создал папку django.scroll.uz внутри директории пользователя /home/scroll/
  3. Здесь выбирается домен, на котором будет работать проект.
  4. Для удобства можно сразу указать файл логов. Мы выбрали папку "logs" и файл django.log.
  5. После заполнения всех полей нажмите кнопку "Create".

Python App будет создано, и здесь следует обратить внимание на три важных момента:

  1. Поля "Application startup file" и "Application Entry point" были заполнены автоматически. Именно поэтому мы не указывали их вручную при создании приложения.
  2. Здесь доступны кнопки остановки и перезапуска приложения.
  3. В верхней части отображается готовая команда для активации виртуального окружения. Нажмите на неё, чтобы скопировать и сохранить. Она понадобится позже.

4. Загрузка проекта на хостинг

Для этого используем интерфейс "File Manager" в cPanel.

Переходим в папку проекта и нажимаем кнопку "Upload"
Нажимаем кнопку "Select File", выбираем архив проекта и загружаем его
После завершения загрузки нажимаем ссылку "Go back ..." для возврата в "File Manager"
Выделяем загруженный архив, нажимаем кнопку "Extract" и подтверждаем распаковку
Чтобы видеть скрытые файлы, нажимаем кнопку "Settings" и включаем функцию "Show Hidden Files"
Таким образом проект будет загружен в нужную папку. При желании ZIP-архив можно удалить

5. Настройка конфигурации для production

Прежде всего необходимо отредактировать файл .env. Для этого нажмите правой кнопкой мыши по файлу и выберите пункт "Edit".

Файл .env мы изменили следующим образом:

Вам необходимо:

  • указать свой домен или поддомен в параметре "ALLOWED_HOSTS";
  • указать имя своей базы данных в "DB_NAME";
  • указать имя пользователя и пароль базы данных в "DB_USER" и "DB_PASSWORD".

Следующий файл, который необходимо настроить, это конфигурационный файл Passenger, созданный для Python App в cPanel.

В нашем проекте папка проекта называется core, поэтому для неё уже подготовлен пример файла Passenger под названием sample__passanger_wsgi.py.

Скопируйте содержимое этого файла в passanger_wsgi.py.

6. Установка библиотек и выполнение миграций

Через интерфейс "Terminal" в cPanel установим все необходимые библиотеки из файла requirements.txt.

Также выполните команду python3 manage.py migrate для применения миграций в новой базе данных MySQL и команду python3 manage.py createsuperuser для создания администратора.

7. Перезапуск приложения

Чтобы все внесённые изменения вступили в силу, необходимо перезапустить Python App. Для этого снова откройте интерфейс "Setup Python App" и нажмите кнопку перезапуска приложения.


На этом процесс загрузки проекта на хостинг завершён. Теперь можно открыть его через специально созданный поддомен и проверить работу.

Удаление примерного проекта и очистка хостинга

Теперь вы умеете запускать Django-проекты на хостинге. Поздравляем!

— Но разве это всё? — Нет. Важно не только правильно развернуть проект, но и правильно удалить его и очистить хостинг от связанных файлов.

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

Правильный порядок удаления Python-проекта:

Сначала необходимо удалить виртуальное окружение

Откройте интерфейс "Setup Python App" в cPanel и нажмите кнопку "Stop" для приложения.

Затем нажмите кнопку "Destroy", чтобы полностью удалить его.

Следующий шаг — удаление поддомена
Удаление Python App и домена не удаляет папку проекта. Поэтому последним шагом удаляем папку проекта через "File Manager"
Также не забудьте удалить базу данных и созданного для неё пользователя через интерфейс cPanel "Manage My Databases".