Как поставить Django на сервер heroku в 2020 году. 10 шагов

Решил поделиться с вами тем, как поставить проект написаный на Python/Django на сервер heroku. Heroku — это бесплатный хостинг для тестирования своих проектов. Если вам нужно посмотреть как действует проект в боевом режиме — вперед!

1. Надо пройти регистрацию на heroku. В этом нет ничего сложного, просто вводите данные, подтверждаете на почте аккаунт, и вперед.

2. Установка командной строки heroku., слева-вверху видим burger меню, клацаем по нему и выбираем — Documentation -> Python, нажимаем Get Start With Python. Дальше слева нажимаем Set Up и выбираем установку heroku console на вашу операционную систему, тут нет ничего сложного, просто устанавливаем как вам удобно и все.

3. Закрываем пока что браузер и заходим в командную строку или bash. Переходим в папку с нашим django-проектом и открываем проект в текстовом редакторе (в моем случае Pycharm). Дальше нам придется работать с системой контроля версий git. Если у вас нет данной утилиты, то вы ее можете скачать по адресу — git-scm.com/downloads. Пройдите простую установку и возвращайтесь к данной статье.

4. В нашей консоли прописываем команду:

git init

После чего создаем в каталоге проекта файл .gitignore. В нем мы можем записать все файлы которые мы хотим проигнорировать при загрузке на сервер. Допустим на сервере я буду использовать базу данных MySQL, по этому файл db.sqlite3 мне не нужен.

Пишем этот код:

__pychache__/
*.pyc
db.sqlite3

После пишем в bush 3 команды


git add .
git commit -m "GIT init"

1-ая отвечает за добавление всех фалов в git.

2-ая за сохранение данных файлов на компьютере локально с сообщением GIT init.

5. Теперь входим в наш heroku через консоль. Пишем:

heroku login

Дальше вводим сначало E-mail, нажимаем Enter. Потом пароль и опять же Enter.

Вот мы и вошли. Дальше создаем приложение, мы это будем делать через консоль так что вводим в нее следующее:

heroku create

Команда создает приложение. После этой команды через пробел можно написать имя приложения. В противном случае heroku с генерирует его автоматически и выведет в консоль.

6. Дальше создаем несколько файлов, для того что бы heroku понял что мы загружаем и как:

Procfile
runtime.txt

  1. В runtime сразу пишем этот код:

    python-3.8.5
    

    После python-, пишите вашу версию python.
  2. Procfile:

    web: gunicorn appname.wsgi --log-file -
    

    Вместо appname пишите название своего проекта.


Дальше устанавливаем сам gunicorn для обслуживания django через wsgi:

pip install gunicorn

Сразу же устанавливаем whitenoise для работы со статическими файлами:

pip install witenoise

7. Теперь переходим в settings.py и делаем следующие изменения:

ALLOWED_HOSTS = ['*']

Добавляем static_root если у вас его нет:

import os

STATIC_ROOT = os.path.join(BASE_DIR, 'static')

8. Настраиваем работу с базой данных. Устанавливаем утилиту для более удобной работы:

pip install dj-database-url

переходим опять в настройки и пишем:

import dj-database-url

db_from_env = dj-database-url.config()
DATABASE['default'].update(db_from_env)

9. Последний файл который нам нужен — requirements.txt, в нем будут все установленные библиотеки:

pip freeze -> requirements.txt

У нас создался файл со всеми пакетами. Можете записать в него различные пакеты с их версиями. Обязательно надо записать эту строчку:

psycopg2==2.8.6

Если при дальнейших действиях у вас возникнут ошибки, посмотрите, может вам надо добавить сюда какой либо пакет.

10. Ну и финал, загружаем на сервер.

Переходим в консоль и пишем такие команды:


git add .
git commit -m "Diploy"
git push heroku main

Если у вас не получилось с main, попробуйте:

git push heroku master

И пошел процесс загрузки нашего проекта на heroku. Дальше вам в консоль напишет ссылку на наш проект. По ней мы будем переходить потом, а сейчас выполним все миграции:

heroku run python manage.py migrate

И создадим super user-а:

heroku run python manage.py createsuperuser

Переходим по раннее полученной ссылке, и видим наш проект. Вот так за 10 шагов мы загрузили наш проект на heroku и настроили базу данных. Всем спасибо за внимание.

Похожие публикации

Средняя зарплата в IT

110 500 ₽/мес.
Средняя зарплата по всем IT-специализациям на основании 7 138 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 5

    +1
    Хабр, который мы заслужили:
    почему если
    Допустим на сервере я буду использовать базу данных MySQL, по этому файл db.sqlite3 мне не нужен
    тем не менее
    Обязательно надо записать эту строчку:

    psycopg2==2.8.6
    с учётом того, что
    Psycopg is the most popular PostgreSQL database adapter for the Python programming language
    ?
      0

      Ctrl-A Ctrl-Enter
      Потому что "гладиулос" и diploy на bush.
      И статью вычитывать — это не модно.

        0
        Про Ctrl-Enter знаю.
        С Ctrl-A не сработает.
        Не вижу смысла использовать Ctrl-Enter для статьи, которой здесь быть не должно.
          0

          Это был намёк на то, что всю статью следует отправить в переработку.

        0

        Пф, это ещё что...


        import dj-database-url

      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

      Самое читаемое