Implemente activos estáticos en heroku desde la máquina local; no se puede abrir el archivo ‘manage.py’: No existe tal archivo o directorio

Estoy intentando desplegar mis archivos de activos en heroku y obtengo esta salida en mi interfaz de línea de comandos:

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

Es extraño para mí, ya que actualmente estoy en el directorio / carpeta en el que se encuentra el archivo manage.py

Con el fin de obtener una implementación temprana de la aplicación, he elegido deshabilitar la variable de entorno DISABLE_COLLECT_STATIC de esta manera:

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

De acuerdo con lo anterior, cuando realizo git push heroku master puedo implementar mi aplicación:

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

De acuerdo con las acciones anteriores, en mi enlace principal https://neurorehabilitation.herokuapp.com/ hay un error, supongo que se debe a que los archivos estáticos no se enviaron y se deshabilitaron.

¿Es esto correcto? No lo sé …

Pero, algo que parece extraño es que en mi Administrador de Django https://neurorehabilitation.herokuapp.com/admin/ puedo detallar la plantilla y los estilos css y js en el administrador, entonces, no sé si heroku está trabajando con archivos estáticos. o no.

¿Qué sucedió aquí en esta situación con mis archivos estáticos?

Sin embargo, sigo mi proceso, y en esta oportunidad puedo desplegar de forma remota a las acciones de heroku relacionadas con los comandos manage.py .

He comprobado esto porque puedo ejecutar mis migraciones de mi aplicación:

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

Además, puedo crear dentro de mi aplicación desplegada un superusuario de mi barra de herramientas local …

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

Después, deshabilité la configuración de la variable de entorno previamente DISABLE_COLLECTSTATIC=1 ( DISABLE_COLLECTSTATIC=1 la variable de entorno de mi aplicación heroku del panel de configuración )

Pero, cuando ejecuto nuevamente el heroku run python manage.py collectstatic , recibo esta notificación:

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

Comprobando este inconveniente, supongo que mi error está aquí al final:

 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' 

Y, esto me dice que en mi aplicación heroku desplegada no existe el directorio static

He ejecutado heroku run bash para verificar el directorio de estructura dentro de mi aplicación heroku y puedo detallar el proyecto raíz llamado /app en heroku

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

Enlisté el contenido de /app y veo todos mis directorios y archivos de una forma similar a la que tengo en mi proyecto de entorno local de desarrollo 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 

Con mi error está relacionado con este tema:

FileNotFoundError: [Errno 2] No existe tal archivo o directorio: ‘/ app / neurorehabilitation / settings / static’

Luego entro a este directorio /app/neurorehabilitation/settings/ pero puedo ver que no existe un directorio llamado static interior, esa es la forma en que heroku intenta buscar:

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

Y esto se debe a que de acuerdo con el directorio de estructura que configuro cuando creo mi proyecto django en mi entorno de desarrollo local. Defino lo siguiente:

introduzca la descripción de la imagen aquí

Luego, según la situación anterior …

¿Por qué git cuando realizo la implementación en heroku, el proceso está buscando una ruta a neurorehabilitation/settings/static cuando esto no se configura desde la fuente original de sproject, es decir, mi proyecto en mi máquina antes de implementarlo en heroku?

¿Qué acción podría tomar al respecto? Plataforma Heroku, cuando ejecuto el heroku run python manage.py collectstatic intenta buscar un directorio que no existe o no está configurado en el directorio de estructura de mi proyecto?

Incluso bash crear la carpeta /app/neurorehabilitation/settings/static través de heroku run bash , pero esto no funciona

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

No sabía cómo abordar este problema. ¿Por qué en mi implementación de heroku no se crea el directorio de estructuras similar a mi proyecto local?

Alguien cual es la razon al respecto?

¿Es posible que en el momento todavía no haya entendido bien cómo funciona heroku en el instante de despliegue en relación con la estructura del directorio y los archivos cuando estos se cargan en la plataforma a través de git push heroku master ?

Cualquier apoyo será muy apreciado.

Gracias por la orientación 🙂

Has definido correctamente:

 STATICFILES_DIRS 

Dentro de su settings.py ?

Lo has creado localmente y lo has agregado a git (como directorio vacío …). La traza que tienes indica que falta esta carpeta. He creado un proyecto simple con la siguiente configuración:

 ~/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'),) 

Como puede ver, STATICFILES_DIRS contiene solo un directorio, que no existe:

 ~/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 

El comando collectstatic falla:

 ~/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  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' 

Espero que esto te lleve a resolver tu problema.

Mostraré paso a paso en esta respuesta lo que hice para implementar mi aplicación Django en Heroku. Espero que esta pregunta sea útil para los demás. También me gustaría dar las gracias a las personas que dedican tiempo a ayudarme con esto.

1. Configurar mi configuración para mis archivos estáticos en heroku

  • Configuraciones de configuraciones a Heroku.

La clave de eso es poder desplegar mis archivos estáticos en Heroku en mi settings/base.py , también de acuerdo con lo dicho por ahmed y Oz123 en sus respuestas.

En particular, tuve un problema que estaba en el valor de la directiva PROJECT_ROOT . Heroku sugiere que la directiva PROJECT_ROOT de esta manera:

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

Hice la configuración PROJECT_ROOT ( denominé BASE_DIR en mi settings/base.py ) como dice Heroku, pero siempre apareció un error, luego tomé la opción de dejar la directiva BASE_DIR ya que Django tiene por defecto como mi directiva PROJECT_ROOT en relación con Heroku configuración mencionada anteriormente.

Error estaba teniendo:

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

cuando tuve el BASE_DIR como:

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

Finalmente, en mi archivo settings/base.py , el contenido era:

 # 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/' 

Como mi BASE_DIR ( PROJECT_ROOT en heroku ) definí la ruta del sistema de archivos, finalmente mi directiva STATICFILES_DIRS también se vio comprometida como Oz123 me hizo referencia en su respuesta. :RE

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

Luego, de acuerdo con la configuración de implementación en mi proyecto ( cuadro rosa en esta imagen ) mi configuración / producción.py contiene:

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

También es necesario instalar el paquete dj-database-url en mi entorno virtual:

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

Agregue el paquete / dependencia dj-database-url en el archivo requirements/production.txt de esta manera:

 dj-database-url==0.4.0 

Este fue mi inconveniente por el cual el comando collectstatic no funcionó cuando heroku implementó la aplicación e intentó copiar y procesar mis activos en Amazon S3, donde tengo mis archivos estáticos de acuerdo con mi configuración de configuración


Además, quería compartir el proceso de implementación de mi heroku. Creo que esto será útil o incluso anecdótico.

Para desplegar una aplicación Django para heroku, es necesario tener en la raíz del proyecto los siguientes archivos:

  • requisitos.txt archivo

Tenía la carpeta myproject / Requirements / en la raíz de mi proyecto Django, pero el proceso de implementación de heroku no funciona de esta manera.

Luego creo en el mismo nivel o tabla de requisitos / carpeta un archivo Requirements.txt con el siguiente contenido:

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

Y mi archivo de requirements/production.txt se ha mantenido así:

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

El archivo Requirements / base.txt tiene todas las dependencias o paquetes necesarios en mi proyecto.

  • archivo runtime.txt

Necesito que Heroku instale la 3.4 python version en el proceso de implementación, luego fue necesario indicarlo en el archivo runtime.txt (creado en la raíz de mi proyecto) de esta manera

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

Un Procfile es un archivo de texto en el directorio raíz de su aplicación que define los tipos de proceso y declara explícitamente qué comando debe ejecutarse para iniciar su aplicación.

Mi Procfile se ha quedado así:

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

2. Probando el acceso desde mi máquina a través de heroku toolbet

Es necesario instalar la barra de herramientas Heroku.

que proporciona acceso a la interfaz de línea de comandos de Heroku que se utiliza para administrar y escalar aplicaciones y complementos, etc.

Pruebo el acceso a heroku desde mi máquina de esta manera:

 (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. Creando mi aplicación heroku

De acuerdo con esta respuesta , como la aplicación a implementar es python/Django la aplicación heroku debe crearse de esta manera:

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

Entonces, de esta manera mi aplicación heroku es creada en mi panel de control web.

introduzca la descripción de la imagen aquí

4. Configurar las variables de entorno en mi proyecto para Heroku

Tengo algunas variables de entorno en mi proyecto local utilizadas para ocultar mis claves secretas, usuario de la base de datos, nombre y contraseña, acceso a mis servicios web de amazon y mi cuenta s3 y las configuraciones usadas para el servidor de producción ( DJANGO_SETTINGS_MODULE )

Es necesario indicar a Heroku la forma en que conocerá estas variables de entorno.

De acuerdo con este enlace , configuraremos las variables para una aplicación implementada. Luego he configurado en heroku mis variables de entorno de esta manera:

  • DJANGO_SETTINGS_MODULE

Mi implementación será guiada para el archivo settings / production.py que se hereda de settings / base.py que tiene todos los paquetes / dependencias del dominio de la aplicación. Entonces mi variable DJANGO_SETTINGS_MODULE en heroku permanece así:

 (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

Yo ejecuto

 (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

Yo ejecuto

 (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

Yo ejecuto

 (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 : Valor en comillas simples

Yo ejecuto

 (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) ✗ 
  • ID de clave de acceso a los servicios web de Amazon : valor entre comillas simples

Yo ejecuto

 (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) ✗ 
  • Clave de acceso secreta de Amazon Web Services : valor en comillas simples

Yo ejecuto

 (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) ✗ 
  • Nombre del depósito de almacenamiento de Amazon Web Services : valor en comillas simples

Yo ejecuto

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

Luego, de acuerdo con las opciones anteriores en mi panel web, las variables de entorno se relacionan con:

introduzca la descripción de la imagen aquí

5. Ejecutar la operación de commit en el repository de heroku.

Primero comprobamos los archivos a confirmar.

 (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 ..." to unstage) new file: requirements.txt new file: runtime.txt Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." 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 ..." 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 

Hacer la operación de 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. Implementar nuestra aplicación de código en el repository heroku

Antes, reviso mis remotos repos. Tengo referencia al alias 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) ✗ 

Desplegar en el repository 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) ✗ 

7. Ejecutar el proceso de migración.

 (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. Creo mi superusuario en mi aplicación desplegada en la plataforma.

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

Y eso es todo. Con el proceso anterior podemos desplegar en heroky una aplicación Django.