En este Tutoriales En Linea les mostraremos la manera de subir su app de python en Heroku que es una plataforma como servicio de computación en la Nube que soporta distintos lenguajes de programación.
El tutorial asume que usted tiene:
- Una cuenta gratuita de Heroku.
- Python versión 3.10 instalado localmente; consulte las guías de instalación para OS X, Windows y Linux .
- la CLI de Heroku: Requisitos previos - La CLI de Heroku requiere Git , el popular sistema de control de versiones. Si aún no tiene Git instalado, complete lo siguiente:
Heroku Postgres gratuito , Heroku Data para Redis® gratuito y Heroku Dynos gratuito ya no están disponibles.
Si tiene aplicaciones que usan estos recursos, debe actualizar a nuestros nuevos planes de bajo costo u otros planes pagos para asegurarse de que sus aplicaciones continúen ejecutándose y conserven sus datos.
Instalar la CLI de Heroku
En este paso, instalará la interfaz de línea de comandos (CLI) de Heroku. Utiliza la CLI para administrar y escalar sus aplicaciones, aprovisionar complementos, ver los registros de su aplicación y ejecutar su aplicación localmente. Descargue y ejecute el instalador para su plataforma:
Una vez instalado, puede usar el comando heroku desde su shell de comandos. En Windows, inicie el Símbolo del sistema (cmd.exe) o Powershell para acceder al shell de comandos.
Utilice el comando heroku login para iniciar sesión en la CLI de Heroku:
$ heroku login
heroku: Press any key to open up the browser to login or q to exit
› Warning: If browser does not open, visit
› https://cli-auth.heroku.com/auth/browser/***
heroku: Waiting for login...
Logging in... done
Logged in as me@example.com
Este comando abre su navegador web a la página de inicio de sesión de Heroku. Si su navegador ya ha iniciado sesión en Heroku, simplemente haga clic en el botón Log in que se muestra en la página.
Esta autenticación es necesaria para que los comandos heroku y git funcionen correctamente.
Bueno, si tenemos nuestra aplicaion de python en nuestro ordenador y previamente ya la hemos hecho funcionar, simplemente siga estos pasos:
Nos ubicamos en el direcctorio de nuestra app, cd y el nombre de nuestra app.py:
C:UsersOmega>cd C:UsersOmegaPLAGIO
C:UsersOmegaPLAGIO>
Sin embargo si queremos clonar la aplicación de muestra para que tenga una versión local del código que luego pueda implementar en Heroku, ejecute los siguientes comandos en su shell o terminal de comandos local:
$ git clone https://github.com/omegayalfa/lo_que_quieras_clonar.git
$ cd lo_que_quieras_clonar
Ahora tiene un repositorio git en funcionamiento que contiene una aplicación simple, runtime.txt que especifica qué versión de Python se usará y un requirements.txt, que usa el administrador de dependencias de Python, Pip. Otro archivo que Heroku necesita es el Procfile. Éste le dice a Heroku qué comandos ejecutar para iniciar nuestro sitio web. Abre el editor de código, crea un archivo llamado Procfile en el directorio de tu proyecto y añade esta línea:
web: gunicorn app:app
Esta línea significa que vamos a desplegar una aplicación web, y que lo haremos ejecutando el comando gunicorn app:app (gunicorn es como una versión más potente del comando runserver de Django - recuerde que app:app es la app.py es el lanzador de nuestro proyecto en pocas palabras). Ahora guárdalo. ¡Hecho!
Esta imagen es una estructura de mi proyecto:
En este paso, implementará la aplicación en Heroku. Cree una aplicación en Heroku, que prepara a Heroku para recibir su código fuente con el comando heroku create - Recuerde que estamos ubicado en el directorio de nuestra aplicacion Python.
$ heroku create
Creating app... done, ⬢ serene-caverns-82714
https://serene-caverns-82714.herokuapp.com/ | https://git.heroku.com/serene-caverns-82714.git
Cuando crea una aplicación, heroku también crea un control remoto de git (llamado ) y se asocia con su repositorio de git local. Heroku genera un nombre aleatorio (en este caso serene-caverns-82714) para su aplicación, o puede pasar un parámetro para especificar su propio nombre de aplicación.
Si en algún momento te apetece cambiar el nombre de tu aplicación en Heroku, puedes hacerlo con este comando heroku apps:rename (reemplaza nombre-nuevo con el nuevo nombre que quieras usar) mas sobre rename:
$ heroku apps:rename nombre-nuevo
Nota: Recuerda que después de cambiar el nombre de la aplicación, tienes que visitar [nombre-nuevo].herokuapp.com para ver tu sitio web.
Ahora implemente su código con el comando git push heroku master:
$ git push heroku master
Enumerating objects: 708, done.
Counting objects: 100% (708/708), done.
Delta compression using up to 8 threads
Compressing objects: 100% (311/311), done.
Writing objects: 100% (708/708), 128.11 KiB | 64.05 MiB/s, done.
Total 708 (delta 352), reused 708 (delta 352), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-22 stack
remote: -----> Determining which buildpack to use for this app
remote: -----> Python app detected
remote: -----> Using Python version specified in runtime.txt
remote: -----> Installing python-3.10.7
remote: -----> Installing pip 22.1.2, setuptools 60.10.0 and wheel 0.37.1
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote: Collecting django<5.0,>=4.0
remote: Downloading Django-4.1-py3-none-any.whl (8.1 MB)
remote: Collecting gunicorn<21.0,>=20.0
remote: Downloading gunicorn-20.1.0-py3-none-any.whl (79 kB)
remote: Collecting dj-database-url<2.0,>=1.0
remote: Downloading dj_database_url-1.0.0-py3-none-any.whl (6.6 kB)
remote: Collecting whitenoise<7.0,>=6.0
remote: Downloading whitenoise-6.2.0-py3-none-any.whl (19 kB)
remote: Collecting psycopg2<3.0,>=2.0
remote: Downloading psycopg2-2.9.3.tar.gz (380 kB)
remote: Preparing metadata (setup.py): started
remote: Preparing metadata (setup.py): finished with status 'done'
remote: Collecting sqlparse>=0.2.2
remote: Downloading sqlparse-0.4.2-py3-none-any.whl (42 kB)
remote: Collecting asgiref<4,>=3.5.2
remote: Downloading asgiref-3.5.2-py3-none-any.whl (22 kB)
remote: Building wheels for collected packages: psycopg2
remote: Building wheel for psycopg2 (setup.py): started
remote: Building wheel for psycopg2 (setup.py): finished with status 'done'
remote: Created wheel for psycopg2: filename=psycopg2-2.9.3-cp310-cp310-linux_x86_64.whl size=159240 sha256=3399f4acef86b87602002c03ed36cdabaf0a70abc8fa3f412196a8a3d34715c0
remote: Stored in directory: /tmp/pip-ephem-wheel-cache-7q6yuegd/wheels/81/b6/3d/091aad3e8919ea76c84c2674b02ce3ab52de882e091c39249e
remote: Successfully built psycopg2
remote: Installing collected packages: whitenoise, sqlparse, psycopg2, gunicorn, asgiref, django, dj-database-url
remote: Successfully installed asgiref-3.5.2 dj-database-url-1.0.0 django-4.1 gunicorn-20.1.0 psycopg2-2.9.3 sqlparse-0.4.2 whitenoise-6.2.0
remote: -----> $ python manage.py collectstatic --noinput
remote: 131 static files copied to '/tmp/build_b1795ac0/staticfiles', 385 post-processed.
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 29.3M
remote: -----> Launching...
remote: Released v5
remote: https://serene-caverns-82714.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/serene-caverns-82714.git
* [new branch] master -> master
Ahora visite la aplicación en la URL generada por su nombre de aplicación. Como un atajo útil, puede abrir el sitio web de la siguiente manera: Comando heroku open
Implementa tus cambios
Si por alguna razon tienes que cambiar algo en tu aplicacion, ya sea algo de CSS, o HTML sigas estos pasos: Realice algunos cambios en el código que acaba de clonar e impleméntelos en Heroku usando Git.
$ git add .
$ git commit -am "lo que quieras colocar para saber que cambios has hecho..etc"
$ git push heroku master
Opcional: Has desplegado tu código en Heroku, y especificado el tipo de proceso en un Procfile (nosotros elegimos tipo de proceso web). Ahora podemos decirle a Heroku que inicie este proceso web. Para hacerlo, ejecuta el siguiente comando:
$ heroku ps:scale web=1
Este comando le dice a Heroku que ejecute solamente una instancia de nuestro proceso web. Ya que nuestra aplicación de blog es bastante simple, no necesitamos demasiada potencia y por tanto está bien ejecutar solamente un proceso. Es posible pedirle a Heroku que ejecute más procesos (por cierto, Heroku le llama a estos procesos "Dynos" así que no te sorprendas si ves ese nombre) pero entonces dejaría de ser gratuito.
Ahora podemos visitar la aplicación en nuestro navegador con heroku open.
Comentarios