En general el plan de hosting más adecuado para la mayoría de los sitios web pequeños y/o medianos, es un plan de hosting compartido, no todos los sitios requieren los todos los recursos y potencia de un cloud o de un servidor dedicado pueden ofrecer que son bastante más caros que un hosting compartido, sin embargo, no se trata de un tema solamente de costos, también un tema de gestión, los planes compartidos son mucho más fácil de trabajar y mantener debido a que la responsabilidad de gestión del servidor recae en el proveedor de hosting.

Sin embargo, los planes compartidos suelen por sus características carecer de acceso a la terminal, principalmente por un tema de seguridad, sin embargo, dependiendo del tipo de sitio puede ser necesario ejecutar algunos comandos y ese es uno de los motivos por el que algunos dueños de sitio deciden migrar a un cloud o un dedicado con toda la complejidad que eso implica.

¿Existe alguna manera de ejecutar comandos de consola en cPanel sin tener una consola? Sí, se puede, en muy pocos pasos se puede crear un cron que se encarge de verificar si hay comandos para ejecutar y que finalmente los ejecute.

Configuración previa

Para eso lo primero sera crear un archivo en cPanel, por ejemplo llamado run.sh y colocar el siguiente contenido:

#!/bin/bash

if [ -s ~/execute_commands ]; then
    mv ~/execute_commands ~/running.cmd
    chmod +x ~/running.cmd
    bash ~/running.cmd >> ~/run.log 2>&1
    rm ~/running.cmd
fi

El archivo se puede crear desde el Administrador de Archivos de cPanel o por FTP, una vez creado y que se le concedan permisos de ejecución (0755), se debe ir a la sección de cron y crear un cron, por ejemplo:

* * * * * bash ~/run.sh > /dev/null 2>&1

Si se le dio otro nombre diferente o se cambió la ruta se debe colocar la correcta en el cron, luego de configurado el cron, cada vez que en la carpeta raíz de cPanel creamos un archivo llamado execute_commands y en un minuto o menos, se ejecutaran los comandos que se coloquen dentro, la salida será enviada al archivo run.log tambien en el raíz.

El script puede parecer un poco más complicado de lo que debiera, sin embargo, tiene un motivo de ser, está escrito de esta forma para evitar que una segunda ejecución del cron encuentre y ejecute el mismo archivo, dado que el cron se ejecuta cada un minuto, si los comandos demoraran más de un minuto en finalizar, una segunda ejecución del cron podría generar problemas, así para evitar eso es que se renombra el archivo primero.

Ejecutar comandos

El archivo execute_commands que contendra los comandos se puede crear desde el Administrador de Archivos de cPanel o por FTP al igual que el cron, la diferencia en este caso es que este archivo se tendra que crear cada vez que se quieran ejecutar nuevos comandos.

Por ejemplo si se quiere ejecutar artisan y se esta usando PHP 8.2 se puede colocar  en execute_commands lo siguiente:

cd ~/public_html
/opt/cpanel/ea-php82/root/usr/bin/php /opt/cpanel/composer/bin/composer install --no-interaction

Si solo se quiere actualizar se puede usar:

cd ~/public_html
/opt/cpanel/ea-php82/root/usr/bin/php /opt/cpanel/composer/bin/composer update --no-interaction

Las rutas de PHP y composer pueden cambiar segun el servidor, ante la duda siempre es mejor consultar con el soporte cuales son las rutas correctas que corresponden a la versión de PHP en uso.

Por supuesto esto no se limita a artisan, pueden ejecutarse cualquier comando, aunque no hay que olvidar que los comandos no deben requerir intervención del usuario, es decir, debe ejecutarse totalmente desatendido

Conclusión

En resumen, los planes de hosting compartido son una opción ideal para pequeños y medianos sitios web, no solo por su bajo costo, sino también por su simplicidad de gestión, ya que el proveedor se encarga de la mayor parte del mantenimiento, sin embargo, en casos donde se requiere más control, como ejecutar comandos directamente, algunos usuarios pueden preferir soluciones más avanzadas como el cloud o servidores dedicados, a pesar de su mayor complejidad y costo.

Sin embargo, para quienes prefieren la sencilles de gestion del hosting compartido, pero necesitan ejecutar comandos ocasionales, existe la alternativa de configurar un cron en cPanel que permite ejecutar comandos sin acceso directo a la consola y de esta forma se puede manejar diversas tareas sin necesidad de migrar a un servidor más complejo, optimizando así tanto la simplicidad como la funcionalidad del sitio.

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Alvaro De León

Subscribe now to keep reading and get access to the full archive.

Continue reading