---
tags: Python Web
source: https://python-scripts.com/doska-obyavlenij-django
---
# Тема 12. Развертывание на Heroku
https://github.com/roman-yatsenko/django-news-heroku
https://arcane-castle-94924.herokuapp.com/ (reset every 24h)
## Heroku
1. Зарегистрироваться на https://www.heroku.com/
2. Установить [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli)
```shell
heroku login
pipenv lock
touch Procfile
```
### `Procfile`
```
web: gunicorn news_project.wsgi --log-file -
```
```shell
pipenv install gunicorn
```
### `pages_project\settings.py`
```python=28
ALLOWED_HOSTS = ['*']
```
### `.gitignore`
```
# db.sqlite3
```
Commit & push
## Deploy
```shell
heroku create
# get <appname>
heroku git:remote -a <appname>
heroku config:set DISABLE_COLLECTSTATIC=1
git push heroku main
heroku ps:scale web=1
heroku open
```
## Статические файлы
```shell
pipenv install whitenoise
```
### `settings.py`
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'whitenoise.runserver_nostatic', # new!
'django.contrib.staticfiles',
'blog',
'accounts',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', # new!
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
...
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') # new!
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' # new!
```
---
(c) Яценко Р.Н., 2021
[Учебный центр компьютерных технологий "Кит"](http://kit.kh.ua/)
<img src="https://i.imgur.com/Kh901c1.png" style="width: 150px; position: fixed; top: 100px; right: 10px; border: 0; box-shadow: none;">