Развертывание статических ресурсов на герою с локальной машины – невозможно открыть файл «manage.py»: Нет такого файла или каталога

Я пытаюсь развернуть мои файлы ресурсов в heroku, и я получаю этот вывод в моем интерфейсе командной строки:

(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

Чтобы получить раннее развертывание приложения, я решил отключить переменную среды 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 я могу развернуть приложение mi:

 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://neurorehabil.herokuapp.com/ есть ошибка, я думаю, что это потому, что статические файлы не были отправлены и были отключены.

Это правильно? Я не знаю …

Но что-то странное в том, что в моем Django Admin https://neurorehabil.herokuapp.com/admin/ я могу подробно описать шаблон и стили css и js в admin, тогда я не знаю, работает ли heroku со статическими файлами или нет.

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

Тем не менее, я следую своему процессу, и в этой возможности я могу удаленно развертывать действия heroku, связанные с командами 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) 

Кроме того, я могу создать внутри своего развернутого приложения суперпользователя из моей локальной панели инструментов …

 (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 ( я удаляю переменную окружения из моего приложения-панели приложения gash-приложений )

Но, если я снова heroku run python manage.py collectstatic команду 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 <module> 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' 

И, это говорит мне, что в моем приложении heroku развернуто не существует static каталог

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

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

Я перечислил содержимое /app и я вижу все мои каталоги и файлы аналогичным образом, как в моем проекте локальной локальной среды разработки django

 ~ $ 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] Нет такого файла или каталога: '/ app / neurorehabilitation / settings / static'

Затем я вхожу в эту директорию /app/neurorehabilitation/settings/ но я вижу, что не существует каталога с именем static внутри, то есть как поиск героя пытается:

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

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

введите описание изображения здесь

Затем, согласно предыдущей ситуации …

Почему git, когда я выполняю развертывание в heroku, процесс ищет путь к neurorehabilitation/settings/static когда это не настроено из исходного источника sproject, это означает, что мой проект на моей машине раньше, чтобы развернуть на герою?

Что я могу предпринять? Платформа Heroku, когда я выполняю heroku run python manage.py collectstatic command, эта попытка поиска в каталоге taht не существует или нет, настроена в каталоге структуры моего проекта?

Даже я пытаюсь создать /app/neurorehabilitation/settings/static папку через heroku run bash , но это не работает

 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ heroku run bash Running bash on test-nrb.... up, run.1604 ~ $ cd neurorehabilitation/settings/ ~/neurorehabilitation/settings $ mkdir static ~/neurorehabilitation/settings $ ls -all total 36 drwx------ 3 u51683 dyno 4096 Apr 1 15:07 . drwx------ 5 u51683 dyno 4096 Apr 1 15:02 .. -rw------- 1 u51683 dyno 8106 Apr 1 15:02 base.py -rw------- 1 u51683 dyno 684 Apr 1 15:02 development.py -rw------- 1 u51683 dyno 0 Apr 1 15:02 __init__.py -rw------- 1 u51683 dyno 930 Apr 1 15:02 production.py -rw------- 1 u51683 dyno 530 Apr 1 15:02 staging.py drwx------ 2 u51683 dyno 4096 Apr 1 15:07 static -rw------- 1 u51683 dyno 488 Apr 1 15:02 testing.py ~/neurorehabilitation/settings $ exit exit (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ heroku run python manage.py collectstatic Running python manage.py collectstatic on test-nrb.... up, run.5358 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 <module> 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) 

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

Кто-нибудь, в чем причина?

Возможно ли, что в тот момент я все еще не разбираюсь хорошо, как работает геройку при развертывании мгновенно по отношению к структуре каталогов и файлов, когда они загружаются на платформу через git push heroku master ?

Любая поддержка будет высоко оценена.

Спасибо за ориентацию 🙂

2 Solutions collect form web for “Развертывание статических ресурсов на герою с локальной машины – невозможно открыть файл «manage.py»: Нет такого файла или каталога”

Правильно ли вы определили:

 STATICFILES_DIRS 

Внутри settings.py ?

Вы создали его локально и добавили его в git (как пустой каталог …). У вашей трассы указывает, что эта папка отсутствует. Я создал простой проект со следующими настройками:

 ~/Software/h/hrku $ tail hrku/settings.py USE_TZ = True # Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/1.9/howto/static-files/ STATIC_URL = '/static/' STATIC_ROOT = '/var/www/dj' STATICFILES_DIRS = (os.path.join(os.path.dirname(__file__), '..', 'static'),) 

Поскольку вы можете видеть, что STATICFILES_DIRS содержит только один каталог, которого нет:

 ~/Software/h/hrku $ ls -l /home/ozn/Software/h/hrku/static ls: cannot access /home/ozn/Software/h/hrku/static: No such file or directory 

Команда collectstatic не работает:

 ~/Software/h/hrku $ python manage.py collectstatic You have requested to collect static files at the destination location as specified in your settings: /var/www/dj 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 <module> execute_from_command_line(sys.argv) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle collected = self.collect() File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect for path, storage in finder.list(self.ignore_patterns): File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/finders.py", line 112, in list for path in utils.get_files(storage, ignore_patterns): File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files directories, files = storage.listdir(location) File "/home/ozn/.virtualenvs/h/lib/python3.5/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: '/home/ozn/Software/h/hrku/static' - ~/Software/h/hrku $ python manage.py collectstatic You have requested to collect static files at the destination location as specified in your settings: /var/www/dj 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 <module> execute_from_command_line(sys.argv) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/__init__.py", line 353, in execute_from_command_line utility.execute() File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/__init__.py", line 345, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 176, in handle collected = self.collect() File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 98, in collect for path, storage in finder.list(self.ignore_patterns): File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/finders.py", line 112, in list for path in utils.get_files(storage, ignore_patterns): File "/home/ozn/.virtualenvs/h/lib/python3.5/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files directories, files = storage.listdir(location) File "/home/ozn/.virtualenvs/h/lib/python3.5/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: '/home/ozn/Software/h/hrku/static' 

Надеюсь, это приведет вас к решению вашей проблемы.

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

1. Настройте мои настройки для моих статических файлов в герою

  • конфигурации настроек в Heroku

Ключом к тому, что я могу развернуть свои статические файлы в Heroku, был в моих settings/base.py , согласуйте также с сказанными ahmed и Oz123 в своих ответах.

Частичная, моя деталь или неудобство было в значении директивы PROJECT_ROOT . Heroku предлагает, что PROJECT_ROOT директива этого способа:

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

Я BASE_DIR PROJECT_ROOT ( я BASE_DIR в своих settings/base.py ) таким образом, как говорит Heroku, но ошибка всегда появляется, тогда я беру на себя возможность оставить директиву BASE_DIR что Django имеет по умолчанию, как моя директива PROJECT_ROOT в связи с описанную выше конфигурацию 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/' 

Как и мой BASE_DIR ( PROJECT_ROOT в heroku ), определите путь к файловой системе, и, наконец, моя директива STATICFILES_DIRS также была скомпрометирована, так как Oz123 ссылался на меня в своем ответе. : D

 # 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"), ) 

Затем, соглашаясь на развертывание моих настроек в моем проекте ( розовый квадрат на этом изображении ), мои настройки / production.py остались такими:

 # ------ *** ------------- # 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 = ['*'] по # ------ *** ------------- # 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 = ['*'] 

Также необходимо установить пакет 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) ✗ 

Добавьте пакет / зависимость dj-database-url файл requirements/production.txt следующим образом:

 dj-database-url==0.4.0 

Это было неудобно для меня, потому что команда collectstatic не работала, когда heroku развернул приложение и попытался скопировать и обработать мои активы на amazon S3, где есть мои статические файлы в соответствии с моей настройкой настроек


Кроме того, я хочу поделиться своим процессом развертывания heroku из-за того, что считаю, что может быть полезным или даже анекдотическим

Для развертывания приложения Django в heroku необходимо, чтобы в корне проекта были следующие файлы:

  • файл требований.txt

У меня была папка myproject / requirements / в корне моего проекта Django, но процесс развертывания heroku не работает таким образом

Затем я создаю на том же уровне или иерархию требований / папку файл requirements.txt со следующим содержимым:

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

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

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

В файле требований / base.txt есть все зависимости или пакеты, необходимые в моем проекте.

  • Файл runtime.txt

Мне нужно, чтобы Heroku установил 3.4 python version в приложениях развертывания, тогда необходимо было указать ее в файле runtime.txt (созданном в корне моего проекта) таким образом

 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ cat runtime.txt python-3.4.3 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ 
  • Файл Procfile

Procfile – это текстовый файл в корневом каталоге вашего приложения, который определяет типы процессов и явно объявляет, какую команду следует выполнять для запуска вашего приложения.

Мой Procfile остался так:

 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ cat Procfile web: gunicorn neurorehabilitation.wsgi --log-file - (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ 

2. Тестирование доступа с моей машины через набор инструментов heroku

Необходимо установить набор инструментов 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) ➜ 

3. Создание приложения heroku

В соответствии с этим ответом , поскольку приложение для развертывания – это python/Django приложение heroku должно быть создано следующим образом:

 (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 создается на моей веб-панели

введите описание изображения здесь

4. Настройте переменные среды в моем проекте для Heroku

У меня есть некоторые переменные среды в моем локальном проекте, используемые для скрытых моих секретных ключей, пользователя базы данных, имени и пароля, некоторый доступ к моим веб-службам amazon и учетной записи s3 и настройкам, используемым для производственного сервера ( DJANGO_SETTINGS_MODULE )

Необходимо указать на Героку, как он будет знать эти переменные среды.

В соответствии с этой ссылкой мы настроим vars для развернутого приложения. Затем я настроил в heroku мои переменные среды следующим образом:

  • DJANGO_SETTINGS_MODULE

Мое развертывание будет ориентироваться на файл настроек / production.py, который наследует параметры / 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

Я выполняю:

 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ heroku config:set SECRET_KEY='mysecretkey' Setting config vars and restarting test-nrb... done SECRET_KEY: mysecretkey (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 : значение в одинарных кавычках

Я выполняю:

 (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 : значение в одинарных кавычках

Я выполняю:

 (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) ✗ 
  • Название Bucket Builder для 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) ✗ 

Затем, соглашаясь с приведенными выше параметрами, в моей веб-панели переменные среды остались такими:

введите описание изображения здесь

5. Выполните операцию фиксации в репозитории heroku

Сначала мы проверяем файлы, которые нужно совершить

 (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) ✗ 

6. Разверните наше приложение кода в репозиторий heroku.

Раньше я проверял свои репозитории remotes. У меня есть ссылка на псевдоним 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) ✗ 

Развертывание в хранилище героку

 (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) ✗ 

7. Выполните процесс миграции

 (nrb_dev) ➜ neurorehabilitation_projects git:(master) ✗ heroku run python manage.py migrate Running python manage.py migrate on test-nrb.... up, run.1678 System check identified some issues: WARNINGS: medical_encounter_information.RehabilitationSession.date_session_begin: (fields.W161) Fixed default value provided. HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now` medical_encounter_information.RehabilitationSession.date_session_end: (fields.W161) Fixed default value provided. HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now` userprofiles.User.birth_date: (fields.W161) Fixed default value provided. HINT: It seems you set a fixed date / time / datetime value as default for this field. This may not be what you want. If you want to have the current date as default, use `django.utils.timezone.now` 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) ✗ 

8. Я создаю своего суперпользователя в своем приложении, развернутом на платформе

 (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) ✗ 

И это все. С предыдущим процессом мы можем развернуть на heroky приложение Django

  • количество дней в сети по времени дня
  • Подавать заявку на бутылочку из пушки на Героку?
  • Хотелось бы использовать PubNub для отправки обновлений в реальном времени в веб-браузер пользователя
  • Используемое соединение Gunicorn: ('0.0.0.0', 5000)
  • Ошибка приложения Django в Heroku
  • Запуск кедра Heroku Локально с использованием Vagrant
  • Регистрация Django на Heroku
  • Настройка пушки для Django на Heroku
  • Python - лучший язык программирования в мире.