Я не буду детально описувати весь процес розгортання Django-додатки, тому що він добре описаний в офіційному керівництві. У цій статті я тільки зроблю короткий конспект і опишу деякі проблеми, з якими я зіткнувся.
Розгортання Django-додатки на Heroku
Отже, щоб розгорнути додаток на Heroku потрібно виконати наступні команди:
Можна перевірити стан нод за допомогою команди ps:
Лог можна подивитися за допомогою команди log:
Запускати команди Django можна за допомогою команди run:
Проблема з оновленням пакетів Python
Прямого доступу до віртуального оточення немає, тому я не міг змусити Heroku оновлювати Django до останньої мінорній версії автоматично. Зараз поясню докладніше. Припустимо, що коли проект створювався, була актуальна версія Django 1.7.3, а сьогодні актуальна версія 1.7.8. Можна при кожному виході нової версії Django міняти requirements.txt, але я хочу щоб пакети оновлювалися автоматично.Зазвичай я це роблю так:
А в requirements.txt у мене такий рядок:
Так ось, якщо вказати в requirements.txt, що я хочу версію Django молодше 1.8, то стара версія 1.7.3 не оновиться, бо 1.7.3 теж молодше 1.8. На StackOverflow є кілька обговорень на цю тему:
- How to customize pip's requirements.txt in Heroku on deployment?
- How do I upgrade a dependency in a Python project on Heroku
Проблема з налаштуванням Django-додатки в різних середовищах
Зазвичай додаток існує на різних комп'ютерах в різних версіях. Один із шаблонів автоматичної зміни налаштувань програми - це імпорт додаткових налаштувань в settings.py.Зазвичай я видаляв потрібні файли за допомогою свого скрипта для розгортання проектів. Але Heroku сам розгортає додаток, і бере все, що є в репозиторії. Вирішити цю проблему можна як мінімум двома способами:
- використовувати різні гілки з різними масками в .gitignore для різних оточень,
- використовувати змінні оточення Heroku.
Змінну оточення в Heroku додатку можна створити за допомогою команди:
Тепер кінець мого файлу settings.py виглядає так: