Composer es el gestor de paquetes estándar de PHP e imprescindible en cualquier proyecto Laravel. Por SSH puedes ejecutar comandos de Composer directamente en tu hosting para instalar, actualizar y gestionar paquetes. En esta guía aprenderás todo sobre el uso eficaz de Composer por SSH en tus aplicaciones Laravel.

¿Qué es Composer y por qué lo necesitas?

Composer es un gestor de dependencias que administra automáticamente todas las bibliotecas PHP que necesita tu proyecto. Lleva el control de los paquetes que necesitas y los instala en las versiones adecuadas. El propio Laravel también se instala y se actualiza con Composer. Esto convierte a Composer en una herramienta esencial para cualquier desarrollador de Laravel.

Las principales ventajas de Composer:

  • Gestión automática de todas las dependencias de tu proyecto, lo que significa que no tienes que preocuparte de controlar las versiones a mano.
  • Control de versiones para que los paquetes sigan siendo compatibles, lo que hace que tu proyecto sea más estable y fiable.
  • Actualización sencilla de bibliotecas con un solo comando, lo que te ahorra tiempo y esfuerzo.
  • Carga automática (autoloading) de clases PHP sin includes manuales, lo que hace que tu código sea más limpio y fácil de mantener.
  • Acceso a miles de paquetes a través de Packagist.org, lo que te permite añadir funcionalidades a tu proyecto rápidamente.

Activar el acceso SSH en tu hosting

Antes de poder usar Composer necesitas acceso SSH. En Theory7 lo activas fácilmente desde DirectAdmin, en las opciones de SSH. Tras la activación, te conectas con un cliente SSH. Este paso es crucial, porque SSH te permite ejecutar comandos en tu servidor de forma segura y eficiente.

En Windows se usa PuTTY; en Mac o Linux, el Terminal integrado:

ssh gebruikersnaam@example.nl

No olvides cambiar el nombre de usuario y el nombre de dominio por los tuyos. Una vez conectado, tienes acceso a la línea de comandos de tu servidor, donde puedes usar Composer.

Comprobar si Composer está disponible

En el hosting de Theory7, Composer suele estar ya instalado. Compruébalo con:

composer --version

Verás la versión instalada. Si Composer no está disponible, instálalo localmente en tu directorio personal (home). Normalmente basta con ejecutar unos cuantos comandos sencillos, según la configuración de tu servidor.

Comandos esenciales de Composer para Laravel

Instalar dependencias

Después de clonar un proyecto Laravel, instala todos los paquetes:

composer install

En entornos de producción se usan flags adicionales para mejorar el rendimiento:

composer install --no-dev --optimize-autoloader

El flag --no-dev hace que solo se instalen los paquetes necesarios para producción, lo que puede mejorar el tiempo de carga de tu aplicación.

Añadir paquetes nuevos

Añade un paquete a tu proyecto:

composer require vendor/package-naam

Por ejemplo, si quieres añadir laravel/sanctum para la autenticación de la API, usa:

composer require laravel/sanctum

Actualizar paquetes

Actualiza todos los paquetes a las versiones compatibles más recientes:

composer update

Este comando es útil para tener siempre las últimas actualizaciones de seguridad y funcionalidades. Ten en cuenta, sin embargo, que también puede provocar problemas de compatibilidad, así que prueba siempre tu aplicación después de actualizar.

Regenerar el autoloader

Después de hacer cambios manuales en tu classmap:

composer dump-autoload

Esto resulta especialmente útil si has añadido clases nuevas o has movido clases existentes.

Paquetes populares de Laravel

Algunos paquetes muy utilizados que se instalan con Composer:

  • laravel/sanctum - Tokens de autenticación de API, ideal para SPA y aplicaciones móviles.
  • spatie/laravel-permission - Sistema de roles y permisos, que te ayuda a gestionar eficazmente los derechos de los usuarios.
  • intervention/image - Edición y redimensionado de imágenes, imprescindible en cualquier aplicación que trabaje con contenido multimedia.
  • barryvdh/laravel-debugbar - Información de depuración durante el desarrollo, que te ayuda a localizar problemas rápidamente.
  • laravel/horizon - Panel de monitorización de colas, ideal para gestionar tus tareas en segundo plano.

Solucionar problemas frecuentes

Errores de límite de memoria

En proyectos grandes, Composer puede toparse con los límites de memoria. Aumenta el límite temporalmente:

COMPOSER_MEMORY_LIMIT=-1 composer install

Este comando establece el límite de memoria en ilimitado, lo que puede ser útil en instalaciones o actualizaciones grandes.

Tiempo de espera agotado con paquetes grandes

Aumenta el tiempo de espera (timeout) para las descargas lentas:

composer config --global process-timeout 600

Esto puede ayudar si trabajas con una conexión a internet lenta o si el servidor tarda en responder.

Problemas de caché

Vacía la caché de Composer si aparecen errores extraños:

composer clear-cache

Esto puede ayudar a resolver problemas causados por archivos de caché obsoletos o dañados.

Buenas prácticas con Composer

  • Haz siempre commit de composer.lock en tu repositorio Git. Así todo tu equipo usa las mismas versiones, lo que evita problemas de compatibilidad.
  • Usa install en producción, nunca update. Así evitas fallos inesperados causados por versiones nuevas.
  • Comprueba periódicamente si hay actualizaciones con composer outdated. Esto te ayuda a mantener tu proyecto al día.
  • Especifica restricciones de versión en composer.json. Así evitas actualizar por error a una versión incompatible.
  • Usa el flag --no-dev en los servidores de producción. Esto reduce la carga y aumenta la seguridad.

Composer.json frente a composer.lock

La diferencia entre estos dos archivos es importante:

  • composer.json - Define qué paquetes quieres y qué rangos de versiones son aceptables. Este archivo es la base de la configuración de tu proyecto.
  • composer.lock - Contiene las versiones exactas que se han instalado. Este archivo hace que tu proyecto siga siendo coherente, sea cual sea el lugar donde se instale.

Al hacer commit de composer.lock te aseguras de que todo tu equipo usa las mismas versiones, algo crucial para la colaboración y la coherencia del proyecto.

Con estos conocimientos gestionarás de forma eficiente todos los paquetes de tus proyectos Laravel por SSH. ¿Necesitas ayuda con tu hosting Laravel? El equipo de Theory7 está a tu disposición para ayudarte con todas tus preguntas y dificultades.