Si estabas necesitando correr Python Standalone con PM2 en cPanel, preparamos esta guía para que en minutos puedas estar desarrollando y poniendo a funcionar tu app web.
Si necesitas correr Python sobre tu dominio, te recomendamos que cuentes con un plan Cloud Hosting como mínimo. Este tipo de alojamiento te garantizará la potencia necesaria para que tus aplicaciones funcionen como deben. Si no cuentas con uno, te mostramos en esta guía cómo actualizar el paquete.
Prepara el entorno para usar Python en cPanel
Lo primero que haremos es preparar nuestro plan de hosting para poder correr Python.
- Accede a la Terminal SSH de cPanel o por SSH.
- Ejecutando el siguiente comando. Esto creará una carpeta en /home/usuario/python_env con todos los ejecutables y librerías necesarios.
cd ~
virtualenv --python=python3 python_env -
Ahora corre el siguiente comando para que puedas ingresar al entorno.
Cuando lo hagas verás que aparece el nombre entre paréntesis en la consola. Esto significa que estás dentro.
Recuerda hacer esto cada vez que necesites interactuar con Pythonsource ~/python_env/bin/activate
(python_env) [usuario@server ~]$ -
Aprovecha para actualizar pip a la última versión:
pip install --upgrade pip
¡Listo! El entorno ya está preparado para correr tus aplicaciones de Python.
Despliega la aplicación
- Clona el siguiente repositorio de Github e ingresa a la carpeta:
$ git clone https://github.com/wnpower/PythonTestApp.git
Cloning into 'PythonTestApp'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 3), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (14/14), done.
Resolving deltas: 100% (3/3), done.
$ cd PtyhonTestApp - Ingresa al entorno Python.
source ~/python_env/bin/activate
- Instala los requerimientos.
pip install -r requirements.txt
- Ejecuta la app. Le pondremos "&" al final para que se ejecute en segundo plano temporalmente y mantengamos el acceso a la línea de comandos, sino, no podrás hacer otra cosa mientras.
(python_env) [usuario@server PythonTestApp]$ python miapp.py &
[1] 1164158
(python_env) [usuario@server PythonTestApp]$ * Serving Flask app "miapp" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on all addresses.
WARNING: This is a development server. Do not use it in a production deployment.
* Running on http://172.31.75.48:12345/ (Press CTRL+C to quit) - Presiona la tecla Enter un par de veces y ejecutar lo siguiente para corroborar que la app esté funcionando. Si todo anduvo bien veremos el string "This is Hello World!".
(python_env) [usuario@server PythonTestApp]$ curl http://localhost:12345
127.0.0.1 - - [24/Feb/2022 15:44:53] "GET / HTTP/1.1" 200 -
This is Hello World!
Crea el proxy para publicar la app en la web
Para poder acceder a la aplicación de forma pública, es decir, por web, es necesario crear un proxy que redirija el tráfico hacia el puerto en la cual escucha.
Para ello, crea un archivo .htaccess en el directorio web público del servidor web /public_html con el siguiente contenido, reemplazando "XXXXX" por el puerto de tu aplicación Python.
DirectoryIndex ""
RewriteEngine On
RewriteCond %{REQUEST_URI} ^.*/index.*
RewriteRule ^(.*)$ http://127.0.0.1:XXXXX/ [P,L]
RewriteRule ^$ http://127.0.0.1:XXXXX/ [P,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://127.0.0.1:XXXXX/$1 [P,L]
De esta forma podrás acceder desde tu explorador ingresando la URL https://tudominio.com/.
Si deseas aislar tu app en un subdominio, primero créalo usando esta guía y coloca el código de arriba en la carpeta del subdominio.
Manejando la app con PM2
El mejor método para gestionar tus aplicaciones, tanto Node.js como Python, es usar PM2. Sigue estos pasos:
- Instala PM2 siguiendo estos pasos.
- Una vez instalado, vuelve a ingresar a la Terminal SSH y ejecuta lo siguiente:
pm2 start "~/python_env/bin/python3 ~/CARPETA_APP/miapp.py"
La salida que vas a ver será algo así:
Cómo hacer que tu app se ejecute automáticamente con una Tarea Cron
Como estás trabajando en un entorno de hosting administrado, si tenemos que realizar un cambio de último momento, aplicar un reinicio de servicios, realizar un mantenimiento o aplicar actualizaciones en la plataforma, tu aplicación se detendrá y no volverá a iniciar automáticamente.
Para asegurarte de que tu app se mantenga iniciada, crea una tarea Cron cada 30 minutos en tu cPanel con el siguiente contenido:
PATH=$PATH:$HOME/bin:$HOME/nodejs/bin; export PATH; /usr/bin/pgrep 'PM2' ]/dev/null || (pm2 start '~/python_env/bin/python3 ~/CARPETA_APP/miapp.py' --watch)
¡Esperamos haber podido ayudarte en levantar tu app en Python!
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.