# Деплой --- Регистрируемся на heroku по указанной ссылкее https://heroku.com/ Ещё нужно установить heroku toolbelt --- В активной виртуальной среде введите следующие команды: ``` pipenv install dj-database-url pipenv install dj-static pipenv install static3 pipenv install gunicorn pipenv install whitenoise pipenv install psycopg2 ``` --- Heroku необходимо знать, от каких пакетов зависит наш проект, поэтому мы воспользуемся pip для построения файла со списком. Оставаясь в активной виртуальной среде, введите следующую команду: `pip freeze > requirements.txt` --- Если вы не укажете версию Python, то Heroku будет использовать собственную версию Python по умолчанию. Убедитесь в том, что Heroku использует ту же версию Python, которая используется у вас. Создайте новый файл с именем runtime.txt в одном каталоге с файлом manage.py и введите следующую команду: `python-3.8.9` --- Settings.py ``` STATIC_ROOT = 'staticfiles' STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' if os.getcwd() == '/app': import dj_database_url DATABASES = { 'default': dj_database_url.config(default='postgres://localhost') } Поддержка заголовка 'X-Forwarded-Proto' для request.is_secure(). SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https') # Разрешены все заголовки хостов. ALLOWED_HOSTS = ['*'] # Конфигурация статических ресурсов BASE_DIR = os.path.dirname(os.path.abspath(__file__)) STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) ``` --- ``` MIDDLEWARE_CLASSES = ( # Simplified static file serving. # https://warehouse.python.org/project/whitenoise/ 'whitenoise.middleware.WhiteNoiseMiddleware', ... ``` --- Файл Procfile сообщает Heroku, какие процессы должны запускаться для правильной работы проекта. Это однострочный файл, который должен быть сохранен под именем Procfile (символ P верхнего регистра, без расширения) в одном каталоге с файлом manage.py. `web: gunicorn learning_log.wsgi --log-file -` --- Также необходимо внести изменения в файл wsgi.py для Heroku, потому что конфигурация для Heroku несколько отличается от той, которая использовалась ранее: ``` import os from django.core.wsgi import get_wsgi_application from dj_static import Cling os.environ.setdefault("DJANGO_SETTINGS_MODULE", "learning_log.settings") application = Cling(get_wsgi_application()) ``` --- Используем git ``` git init git add . git commit -am "Ready for deployment to heroku." git status ``` --- Запускаем heroku ``` heroku login heroku create git push heroku master ``` --- После ввода этих команд проект развернут, но еще не настроен полностью. Чтобы проверить, что серверный процесс был запущен правильно, введите команду `heroku ps` --- Теперь мы можем открыть приложение в браузере командой `heroku open` --- Вы должны выполнить команду migrate, чтобы подготовить базу данных и применить все миграции, сгенерированные в ходе разработки. Для выполнения команд Django и Python в проектах Heroku используется команда heroku run. `heroku run python manage.py migrate` --- Создание суперпользователя в Heroku ``` heroku run bash python manage.py createsuperuser exit ``` --- Безопасность проекта ``` DEBUG = False if... ALLOWED_HOSTS = ['learning-log.herokuapp.com'] ``` --- Закрепление и отправка изменений ``` git commit -am "Set DEBUG=False for Heroku." git push heroku master ``` ---
{"metaMigratedAt":"2023-06-17T02:12:48.009Z","metaMigratedFrom":"Content","title":"Деплой","breaks":true,"contributors":"[{\"id\":\"0d39d5a3-691d-488c-8f1e-1a0fb0be4f13\",\"add\":3463,\"del\":9}]"}
    204 views