Si estabas necesitando correr Python Standalone con PM2 en tu propio servidor cPanel, preparamos esta guía para que en minutos puedas estar desarrollando y poniendo a funcionar tu app web.
Si tienes un servicio de Hosting o Cloud Hosting, deberás crear tu Aplicación de Python dentro de cPanel directamente con su entorno virtual. Para ello dirígete a esta otra guía: Cómo utilizar Python en tu hosting cPanel
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
Te recomendamos descargar y correr la siguiente aplicación de ejemplo para probar Python: https://github.com/wnpower/PythonTestApp
Se sugiere que el puerto de escucha esté en el rango de 4000 a 5000.
- 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 - Edita el puerto de escucha de la App.
- 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
Si ya tienes un servidor web corriendo y quieres que tu App de Python sea accesible vía web, deberás configurar algunas reglas que hagan de "proxy" desde el servicio web hacia tu App de Python en ejecución.
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 de Python 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. Ten en cuenta que esa guía está destinada a NodeJS pero son los mismos pasos para su instalación.
- 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
Para asegurarte de que tu App Python se mantenga iniciada a pesar de actualizaciones y reinicios del servidor de hosting donde se encuentra alojada, crea la siguiente tarea programada CRON cada 15 o 30 minutos en tu cPanel:
PATH=$PATH:$HOME/bin:$HOME/python_env/bin; export PATH; /usr/bin/pgrep 'PM2' -u "$(whoami)" >/dev/null || (cd ~/CarpetaApp/; pm2 start 'python3 NombreApp.py' --watch)
Recuerda reemplazar "CarpetaApp" por la carpeta de tu App y "NombreApp.py" por el archivo de inicio que le corresponda.
¡Esperamos haber podido ayudarte en levantar tu app en Python!
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.