Локальный Deploy static assets to heroku from machine - can't open file 'manage.py': [Errno 2] не such file or directory

Я пробую разворачивать мои статические файлы моего приложения, которое пойдет в heroku, в amazon s3, так как я так считаю это конфигурировавшим в моих settings.

Когда я выполняю команду heroku run python manage.py collectstatic у меня есть следующая ошибка:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python manage.py collectstatic
Running python manage.py collectstatic on neurorehabilitation.... up, run.5168
python: can't open file 'manage.py': [Errno 2] No such file or directory
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Это странное для меня, благодаря тому, что я в настоящее время нахожусь в каталоге, где обнаружен файл manage.py

Я попробовал применять разрешения к файлу anage.py посредством chmod +x manage.py, но результат равен

Когда я выполняю команду git push heroky master не разворачивая статических раньше с heroku run python manage.py collectstatic, у меня есть этот log:

remote:      $ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 10, in 
remote:            execute_from_command_line(sys.argv)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
remote:            utility.execute()
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
remote:            self.fetch_command(subcommand).run_from_argv(self.argv)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
remote:            self.execute(*args, **cmd_options)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
remote:            output = self.handle(*args, **options)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
remote:            collected = self.collect()
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
remote:            for path, storage in finder.list(self.ignore_patterns):
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
remote:            for path in utils.get_files(storage, ignore_patterns):
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
remote:            directories, files = storage.listdir(location)
remote:          File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
remote:            for entry in os.listdir(path):
remote:        FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'

С отличным проектом, если я смог выполнять exitosamente команду heroku run python manage.py collectstatic

Я не могу понимать разум под, которая мой heroku toolbet не может находить мой файл manage.py

ОБНОВЛЕНИЕ

С целью иметь раннее развертывание моего приложения, я предпочел дезактивировать выбор статических файлов в платформе конфигурируя переменную окружения DISABLE_COLLECT_STATIC таким образом:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DISABLE_COLLECTSTATIC=1
Setting config vars and restarting neurorehabilitation... done
DISABLE_COLLECTSTATIC: 1
(nrb_dev) ➜  neurorehabilitation_projects git:(master)

Так сшей ее, когда я сделал git push heroku master в конце концов я смог разворачивать мое приложение, так как конечное извещение пошло:

remote: 
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 46M
remote: -----> Launching...
remote:        Released v15
remote:        https://neurorehabilitation.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/neurorehabilitation.git
 * [new branch]      master -> master
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Поскольку он может, поверните, в моей главной ссылке https://neurorehabilitation.herokuapp.com / существует ошибка, я понимаю, что он благодаря тому, что они не разместились или нет, связаны статические файлы... не, если я нахожусь в правильном: я это?

Но немного, что озадачивает меня, состоит в том, что я могу подробно описывать admin Джанго https://neurorehabilitation.herokuapp.com / admin/, и это что-то, что озадачивает меня благодаря тому, что администратор Джанго также обладает статическими файлами, тогда не, если heroku эта или не работая с ними...

Что произойдет здесь в этой ситуации с моими статическими файлами?

Однако, я остался и этот раз, если я могу разворачивать удаленно на heroku действия, которые вводили бы pyhon manage.py команду, доказательство этого состоит в том, чтобы он реализовал эффективная мой первая миграции моего приложения:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py migrate        
Running python manage.py migrate on neurorehabilitation.... up, run.7836
Operations to perform:
  Apply all migrations: contenttypes, auth, userprofiles, sessions, medical_encounter_information, admin
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying userprofiles.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying userprofiles.0002_auto_20160225_2130... OK
  Applying userprofiles.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0001_initial... OK
  Applying medical_encounter_information.0002_auto_20160225_2130... OK
  Applying medical_encounter_information.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0004_auto_20160225_2211... OK
  Applying medical_encounter_information.0005_auto_20160225_2211... OK
  Applying medical_encounter_information.0006_auto_20160225_2303... OK
  Applying medical_encounter_information.0007_auto_20160229_2204... OK
  Applying medical_encounter_information.0008_auto_20160229_2208... OK
  Applying medical_encounter_information.0009_auto_20160301_0130... OK
  Applying medical_encounter_information.0010_auto_20160301_0312... OK
  Applying medical_encounter_information.0011_auto_20160301_1525... OK
  Applying medical_encounter_information.0012_auto_20160301_1601... OK
  Applying medical_encounter_information.0013_auto_20160301_1606... OK
  Applying medical_encounter_information.0014_auto_20160301_1629... OK
  Applying medical_encounter_information.0015_auto_20160301_1633... OK
  Applying medical_encounter_information.0016_auto_20160301_1636... OK
  Applying sessions.0001_initial... OK
  Applying userprofiles.0004_auto_20160225_2211... OK
  Applying userprofiles.0005_auto_20160225_2211... OK
  Applying userprofiles.0006_auto_20160225_2303... OK
  Applying userprofiles.0007_auto_20160229_2204... OK
  Applying userprofiles.0008_auto_20160229_2208... OK
  Applying userprofiles.0009_auto_20160301_0130... OK
  Applying userprofiles.0010_auto_20160301_0312... OK
  Applying userprofiles.0011_auto_20160301_1525... OK
  Applying userprofiles.0012_auto_20160301_1601... OK
  Applying userprofiles.0013_auto_20160301_1606... OK
  Applying userprofiles.0014_auto_20160301_1629... OK
  Applying userprofiles.0015_auto_20160301_1633... OK
  Applying userprofiles.0016_auto_20160301_1636... OK
(nrb_dev) ➜  neurorehabilitation_projects git:(master)

Также мне удалось создать в моем приложении, развернутом в heroku супер пользователь для нее, с моего локального toolbet:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py createsuperuser
Running python manage.py createsuperuser on neurorehabilitation.... up, run.5381

Username: bgarcial
Email address: bgarcial@sample.com
Password: 
Password (again): 
Superuser created successfully.
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Непосредственно вслед я дезактивирую переменную окружения, конфигурировавшую ранее DISABLE_COLLECTSTATIC=1 (То, что я сделал, состоит в том, чтобы удалять ее с моих heroku dashboard в settings моего приложения)

Но когда я хочу вновь выполнить команду heroku run python manage.py collectstatic он перемещает это меня:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python  manage.py collectstatic
Running python manage.py collectstatic on neurorehabilitation.... up, run.9342

You have requested to collect static files at the destination
location as specified in your settings.

This will overwrite existing files!
Are you sure you want to do this?

Type 'yes' to continue, or 'no' to cancel: yes
Traceback (most recent call last):
  File "manage.py", line 10, in 
    execute_from_command_line(sys.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line
    utility.execute()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 345, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 348, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 399, in execute
    output = self.handle(*args, **options)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle
    collected = self.collect()
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect
    for path, storage in finder.list(self.ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/finders.py", line 112, in list
    for path in utils.get_files(storage, ignore_patterns):
  File "/app/.heroku/python/lib/python3.4/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
    directories, files = storage.listdir(location)
  File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
    for entry in os.listdir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Видя все это, я понимаю, что ошибка здесь в конце концов:

 directories, files = storage.listdir(location)
      File "/app/.heroku/python/lib/python3.4/site-packages/django/core/files/storage.py", line 299, in listdir
        for entry in os.listdir(path):
    FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'

И я понимаю, что в удаленном приложении, которое я развернул, не находит каталог static, который равно как в помещении это оттуда, откуда они порождаются, чтобы храниться в CDN, в этом случае в amazon S3.

Не, как то, чтобы противостоять этому: Почему в моем deployment не производятся полные каталоги, которые у меня есть в моем помещении machine?

ОБНОВЛЕНИЕ 2

Я выполнил heroku run bash чтобы подробно описывать структуру каталогов в моем приложении в облаке и я могу подробно описывать корень моего проекта, вызова /app в heroku.

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run bash    
    Running bash on neurorehabilitation.... up, run.5840
    ~ $ pwd 
    /app
    ~ $ 

Занеся в список Ваш контент я вижу все мои каталоги и файлы, сходным способом в, как у меня есть они в моем IDE/entorno

~ $ ls
avatars  custom_storages.py  django-multiselectfield-0.1.3.tar.gz  functional_tests  manage.py  medical_encounter_information  neurorehabilitation  Procfile  requirements  requirements.txt  runtime.txt  userprofiles

Как моя ошибка имеет общее с этим файлом...

FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'

Тогда я вхожу в вышеупомянутый каталог /app/neurorehabilitation/settings/ но я вижу, что не существует так называемый каталог static там внутри поскольку он пробует это искать heroku

~ $ cd /app/neurorehabilitation/settings/
~/neurorehabilitation/settings $ ls
base.py  development.py  __init__.py  production.py  staging.py  testing.py
~/neurorehabilitation/settings $ 

И это, потому что согласно структуре каталогов, которые я установил, когда верит в мой проект Джанго в моей локальной среде разработки, я определил следующее:

introducir la descripción de la imagen aquí

Тогда, согласно этому, потому что git, сделав deploy в heroku, он ищет маршрут neurorehabilitation/settings/static когда эта не дана, с первоначального шрифта (моя машина или среда разработки)...

Что могло бы делать по этому поводу, итак, heroku, когда я даю ему heroky run python manage.py collectstatic Этот ищет каталог, который не существует или не созерцался в структуре файлов моего проекта?

Включенный я думаю, что это разум, которым мои статические файлы не показаны, так как просвет очевидный, я не переслал их в push тогда в моем главном url приложения, уже развернутого https://neurorehabilitation.herokuapp.com не renderizan ни мои templates ни мои css ни мои js, потому что я предполагаю, что согласно тому, что последует за мной, heroku он ищет их, именно в вышеупомянутом каталоге он не существует: правда?

Хотя nose, потому что admin, если оно функционирует https://neurorehabilitation.herokuapp.com / admin / несмотря на то, что - app (django-suit), но у него есть эта css js и остальные...

Возможно, что он не понял хорошо, как он работает heroku в чувстве deployment в связи с файлами и каталогами

Я благодарен за какой-то тип ориентации :)

3
задан 31.03.2016, 19:24
2 ответа

Я захотел создать ответ шаг за шагом беря как ссылки какие-то ориентации, которые я получил (включая ответы и комментарии этого вопроса) и то, что я смог находить ресурсов и информации около темы.

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

  1. Конфигурируя, как будут работать статические файлы в settings чтобы разворачивать Heroku

Недостаток, из-за которого он не мог разворачивать мои статические файлы в Heroku, был в конфигурации моего файла settings/base.py

Специально, недостаток был в стоимости, у которой был мой так называемый директивный орган PROJECT_ROOT. Heroku предлагает, что директивный орган конфигурации PROJECT_ROOT будьте, таким образом:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

Я конфигурировал в PROJECT_ROOT (я назвал ее BASE_DIR в моем файле settings/base.py и так он сошлется здесь в дальнейшем на мой ответ), как Heroku это говорил, но ошибка всегда появлялась.

То, что я решил, состояло в том, что, как BASE_DIR у него есть стоимость назначенной по умолчанию конфигурации, когда себе будет верить в проект Джанго, тогда я оставил это таким, каков с этой стоимостью и не как это говорит Heroku.

В данных обстоятельствах, моя ошибка, которая у него была, что был этим:

FileNotFoundError: [Errno 2] No such file or directory: '/app/neurorehabilitation/settings/static'

он был, потому что он имел в BASE_DIR таким образом:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))

Тогда, чтобы это исправлять, в конце концов мой файл settings/base.py чтобы конфигурировать мое приложение, и что был развернут в Heroku, он остался, таким образом:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

# This line tells Django to look for static files in a folder named static inside each of our apps.
STATIC_URL = '/static/'

В действительности корень ошибки находится в стоимости, которая брала директивный орган STATICFILES_DIRS что является той, которая в конце концов помечает правило в связи со структурой каталогов статических файлов, не импортируя инфраструктуры, где они были развернутыми.

После того, как считает конфигурировавшим мой BASE_DIR формы, это он имеет значение для стоимости, которую он берет STATICFILES_DIRS, которая остается, таким образом, также для правильного despĺiegue моего приложения: (я думаю, что он также как и ее делает назначенной по умолчанию Джанго, asu, что ничего не нужно двигать с нею)

# With this configuration, Django will look for static files in a folder named static inside each app and into the neurorehabilitation/static folder
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

Поскольку у меня есть каталог settings (settings/{base.py, development.py,production.py,testing.py,staging.py}) и поскольку в этих моментах я готовлюсь помещать в производство мое приложение в Heroku, тогда я должен конфигурировать соответствующим способом мой файл settings/production.py так как это тот, которого брал Heroku для конфигурации развертывания.

Мой файл settings/production.py в связи с Heroku останься, таким образом:

# Heredo del archivo settings/base.py que es en donde estan las
# configuraciones base o comunes de mi proyecto Django 
from .base import *
import dj_database_url

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False

# ------ *** -------------
# For deploy to heroku
# ------ *** -------------

# Update database configuration with $DATABASE_URL.
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

ALLOWED_HOSTS = ['*']

Стоит выделять что, если не имеется набор settings, как это у меня есть здесь, все эти конфигурации могут идти в файле settings.py, который по умолчанию производит Джанго, когда будут верить в проект.

Если они считают необходимое знание, как конфигурирование набора settings.py, гениальная Марина Меле это объясняет, таким образом, в Вашем blog, который я рекомендую посещать и читать, очень полезная.

Adicionalmente, также необходимо устанавливать пакет dj-database-url в моей виртуальной среде, которую я использую в моей машине

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ pip install dj-database-url
Collecting dj-database-url
Installing collected packages: dj-database-url
Successfully installed dj-database-url-0.4.0
You are using pip version 8.1.0, however version 8.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

и также добавлять это под мой файл requirements/production.txt таким образом,

dj-database-url==0.4.0

Для требований пакетов, также имеется набор файлов этой формы requirements/{base.txt,development.txt,production.txt,testing.txt} согласно этому определению или ориентации

В этой точке числительного 1 главным образом я описываю разум, из-за которого команда collectstatic оно я не функционировало, когда он разворачивал мое приложение в heroku и пробовало копировать и обрабатывать мои статические файлы в Amazon S3, который, где у меня есть они.

Тогда, кроме того, также я захотел иметь процесс развертывания моего приложения Джанго в Heroku и других обязательных условиях для того, чтобы он стал эффективным.

  1. Другие необходимые файлы

Adicionalmente, для того, чтобы процесс despligue был успешным, необходимо иметь в корне моего проекта следующие файлы:


requirements.txt: Поскольку он упомянул ранее, у меня есть этот набор файлов для зависимостей от моих пакетов requirements/{base.txt,development.txt,production.txt,testing.txt}

Тогда в корне моего проекта я верю в так называемый файл requirements.txt (видеть желтый квадрат в ссылке) со следующим контентом:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ cat requirements.txt 
-r requirements/production.txt%                                                 (nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

И мой файл requirements/production.txt это осталось так:

-r base.txt
gunicorn==19.4.5
dj-database-url==0.4.0

Файл requirements/base.txt он содержит все зависимости или необходимые пакеты, которые базовые для моего приложения.


runtime.txt

Согласно этой ссылке, он необходим, чтобы Heroku установил версию python, с которой мы работаем, в моем случае, у меня есть 3.4.3, из-за, что контент моего файла runtime.txt (что также должен идти в корне моего проекта):

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ cat runtime.txt 
python-3.4.3
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Procfile

Согласно этой ссылке файл Procfile

определи типы процесса и объяви ясно, что команда должна быть выполненной, чтобы инициализировать мое приложение.

В связи с этим определением, главным образом то, что мы делаем, что наш файл Procfile у него будет инструкция, которая даст возможность серверу gunicorn, что возьмет просьбы и перешлет их в python, из-за чего это WSGI

В данных обстоятельствах, файл Procfile в корне проекта должен оставаться так:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ cat Procfile 
web: gunicorn neurorehabilitation.wsgi --log-file -
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗  
  1. Тестируя доступ с моей машины через Ероку Тоольбет

Необходимо устанавливать Ероку Тоольбет, который предоставляет доступ к интерфейсу командной строки Heroku (главным образом это часть или операционная система unix машины, где приглашено мое приложение в Heroku), который использован, чтобы управлять и взбираться на приложения также как и расширение, между другими вещами.

Мы тестируем доступ к Heroku с нашей машины этой формы:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku login
Enter your Heroku credentials.
Email: botibagl@gmail.com
Password (typing will be hidden): 
Logged in as botibagl@gmail.com
(nrb_dev) ➜
  1. Создавая мое приложение в Heroku

Согласно этому ответу как мое приложение, который он нужно разворачивать, он python и Джанго, приложение в Heroku с инструмента toolbet должно быть создано таким образом:

 (nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku create test-nrb --buildpack heroku/python
Creating test-nrb... done, stack is cedar-14
Setting buildpack to heroku/python... done
https://test-nrb.herokuapp.com | https://git.heroku.com/test-nrb.git
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Тогда, таким образом, мое приложение Heroku создается в моем dashboard в моем Веб счете:

introducir la descripción de la imagen aquí

  1. Конфигурируя переменные окружения, которые я считаю определенными в моем проекте для того, чтобы Heroku понял их

Особенно в моем проекте, в моей виртуальной среде в моей локальной машине, у меня есть какие-то определенные переменные окружения. Какие-то использованы, чтобы скрывать стоимость как мой SECRET_KEY's, DATABASE_USER, DATABASE_NAME, DATABASE_PASSWORD, и поскольку я использую Amazon S3, чтобы поселять мои статические файлы, тогда также я использую какие-то ключи и идентификаторов, чтобы соглашаться на эти ресурсы в Amazon.

Тогда как мы говорили, необходимо показывать Heroku форму, в которой он узнает эти переменные окружения.

Согласно этой ссылке, конфигурируются следующие переменные путь heroku toolbeet, таким образом:

  • DJANGO_SETTINGS_MODULE

Мое развертывание, на уровне конфигурации, будет вестись файлом settings/production.py который он получает в наследство settings/base.py что является тем, у которого есть все необходимые зависимости с перспективы домена моего приложения.

Тогда переменная DJANGO_SETTINGS_MODULE в Heroku она будет конфигурироваться, таким образом:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DJANGO_SETTINGS_MODULE=neurorehabilitation.settings.production 
Setting config vars and restarting test-nrb... done
DJANGO_SETTINGS_MODULE: neurorehabilitation.settings.production
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 
  • SECRET_KEY

Для SECRET_KEY конфигурация - следующая:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set SECRET_KEY='my_secret_key'
Setting config vars and restarting test-nrb... done
SECRET_KEY: 6o_g=0jeqp4)b4q!tt+ic4cgxs^0s=$_rtokd1ndja=4f(9&74
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Для доступа к базе данных, конфигурируются следующие переменные:

  • DATABASE_NAME

Имя базы данных:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DATABASE_NAME=mydatabasename
Setting config vars and restarting test-nrb... done
DATABASE_NAME: mydatabasename
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗
  • DATABASE_USER

Пользователь базы данных:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DATABASE_USER=mydatabaseuser
Setting config vars and restarting test-nrb... done
DATABASE_USER: mydatabaseuser
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 
  • DATABASE_PASSWORD

Пароль базы данных, password должен идти в простых кавычках

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set DATABASE_PASSWORD='mydatabasepassword'
Setting config vars and restarting test-nrb... done
DATABASE_PASSWORD: mydatabasepassword
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Чтобы соглашаться на Amazon S3 необходимо конфигурировать следующие переменные:

  • Веб Amazon Сервисес Аксесс Key идентификация

Стоимость идентификации должна идти в простых кавычках

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set AWS_ACCESS_KEY_ID='my_aws_access_key_id'
Setting config vars and restarting test-nrb... done
AWS_ACCESS_KEY_ID: my_aws_access_key_id
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗
  • Веб Amazon Сервисес Секрет Аксесс Кеи

Стоимость ключа должна идти в простых кавычках

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set AWS_SECRET_ACCESS_KEY='my_aws_secret_access_key'
Setting config vars and restarting test-nrb... done
AWS_SECRET_ACCESS_KEY: my_aws_secret_access_key
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 
  • Веб Amazon Сервисес Сторахе Bucket ямс

Стоимость имени bucket (единица хранения в Amazon) должна идти в простых кавычках

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku config:set AWS_STORAGE_BUCKET_NAME='my-bucket-name-in-s3' 
Setting config vars and restarting test-nrb... done
AWS_STORAGE_BUCKET_NAME: my-bucket-name-in-s3
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

Тогда, согласно выборам наверху, в моем Веб dashboard, переменные окружения остались такими:

introducir la descripción de la imagen aquí

  1. Подтверждая изменения в моем проекте (git commit) в хранилище моего приложения в Heroku

Сначала мы рассматриваем файлы, которые оно было добавлено, и они находятся в фазе staging или они готовы, чтобы быть конфирмантами:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git status
On branch master
Your branch is up-to-date with 'origin/master'.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file:   requirements.txt
    new file:   runtime.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   neurorehabilitation/settings/base.py
    modified:   neurorehabilitation/settings/development.py
    modified:   neurorehabilitation/settings/production.py
    modified:   requirements.txt
    modified:   runtime.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    .idea/
    Procfile
    gunicorn_start

(nrb_dev) ➜  neurorehabilitation_projects git:(master)

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add requirements.txt 
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add runtime.txt     
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add Procfile 
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add neurorehabilitation/settings/base.py 
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add neurorehabilitation/settings/development.py
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git add neurorehabilitation/settings/production.py

Мы реализуем операцию commit

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git commit -m 'Setup changes and configurations for deploy to heroku'
[master 69d69fe] Setup changes and configurations for deploy to heroku
 6 files changed, 38 insertions(+), 5 deletions(-)
 create mode 100644 Procfile
 create mode 100644 requirements.txt
 create mode 100644 runtime.txt
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗
  1. Мы разворачиваем код нашего приложения к хранилищу, которое heroku он создал для нее

Перед этим, хорошо, что мы удостоверяемся, что удаленные хранилища или мы иначе считаем распределенным. Это важно, потому что прозвище heroku дело в том, что мы должны иметь в виду для deployment в хранилище, что heroku он верит, создав приложение.

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git remote -v
heroku  https://git.heroku.com/neurorehabilitation.git (fetch)
heroku  https://git.heroku.com/neurorehabilitation.git (push)
origin  https://bgarcial@bitbucket.org/bgarcial/neurorehabilitation_projects.git (fetch)
origin  https://bgarcial@bitbucket.org/bgarcial/neurorehabilitation_projects.git (push)
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗

Мы разворачиваем приложение к хранилищу heroku

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ git push heroku master 
Counting objects: 20, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (13/13), done.
Writing objects: 100% (13/13), 1.17 KiB | 0 bytes/s, done.
Total 13 (delta 11), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Using set buildpack heroku/python
remote: -----> Python app detected
remote:      $ pip install -r requirements.txt
remote: 
remote:      $ python manage.py collectstatic --noinput
remote:        Found another file with the destination path 'admin/css/forms.css'. It will be ignored since only the first encountered file is collected. If this is not what you want, make sure every static file has a unique path.
remote:        147 static files copied.
remote: 
remote: 
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 46.1M
remote: -----> Launching...
remote:        Released v15
remote:        https://test-nrb.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy.... done.
To https://git.heroku.com/test-nrb.git
   9f0d32f..fcc62c9  master -> master
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 
  1. Мы выполняем миграции нашего приложения

Мы реализуем процесс миграции для того, чтобы стали эффективными наши модели:

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python manage.py migrate
Running python manage.py migrate on test-nrb.... up, run.1678
Operations to perform:
  Apply all migrations: medical_encounter_information, userprofiles, contenttypes, auth, admin, sessions
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0001_initial... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying userprofiles.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying userprofiles.0002_auto_20160225_2130... OK
  Applying userprofiles.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0001_initial... OK
  Applying medical_encounter_information.0002_auto_20160225_2130... OK
  Applying medical_encounter_information.0003_auto_20160225_2130... OK
  Applying medical_encounter_information.0004_auto_20160225_2211... OK
  Applying medical_encounter_information.0005_auto_20160225_2211... OK
  Applying medical_encounter_information.0006_auto_20160225_2303... OK
  Applying medical_encounter_information.0007_auto_20160229_2204... OK
  Applying medical_encounter_information.0008_auto_20160229_2208... OK
  Applying medical_encounter_information.0009_auto_20160301_0130... OK
  Applying medical_encounter_information.0010_auto_20160301_0312... OK
  Applying medical_encounter_information.0011_auto_20160301_1525... OK
  Applying medical_encounter_information.0012_auto_20160301_1601... OK
  Applying medical_encounter_information.0013_auto_20160301_1606... OK
  Applying medical_encounter_information.0014_auto_20160301_1629... OK
  Applying medical_encounter_information.0015_auto_20160301_1633... OK
  Applying medical_encounter_information.0016_auto_20160301_1636... OK
  Applying sessions.0001_initial... OK
  Applying userprofiles.0004_auto_20160225_2211... OK
  Applying userprofiles.0005_auto_20160225_2211... OK
  Applying userprofiles.0006_auto_20160225_2303... OK
  Applying userprofiles.0007_auto_20160229_2204... OK
  Applying userprofiles.0008_auto_20160229_2208... OK
  Applying userprofiles.0009_auto_20160301_0130... OK
  Applying userprofiles.0010_auto_20160301_0312... OK
  Applying userprofiles.0011_auto_20160301_1525... OK
  Applying userprofiles.0012_auto_20160301_1601... OK
  Applying userprofiles.0013_auto_20160301_1606... OK
  Applying userprofiles.0014_auto_20160301_1629... OK
  Applying userprofiles.0015_auto_20160301_1633... OK
  Applying userprofiles.0016_auto_20160301_1636... OK
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗
  1. Создал мой супер пользователь в мое приложение

Через createsuperuser

(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ heroku run python manage.py createsuperuser
Running python manage.py createsuperuser on test-nrb.... up, run.7499
Username: bgarcial
Email address: bgarcial@eafit.edu.co
Password: 
Password (again): 
Superuser created successfully.
(nrb_dev) ➜  neurorehabilitation_projects git:(master) ✗ 

И он также как и остается мое приложение, развернутое в платформе heroku https://test-nrb.herokuapp.com /

3
ответ дан 24.11.2019, 14:40

Git не сохраняет каталоги, одинокий файлы и только верьте в каталоги после того, как клонирую, что у них есть файлы внутри, следовательно, возможно, что, если каталог пустой (то есть нет никакого файла, который был бы trackeado в git внутри каталога) тогда heroku, у него будет вышеупомянутый каталог.

Кроме того tenes, что иметь в виду, что в heroku не tenés разрешение написания в /app, если ты нуждаешься в том, чтобы написать файлы (даже временной формы, составив) tenés, чем делать это в /tmp

3
ответ дан 24.11.2019, 14:40