Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills
06.11.2024

Utilizar systemd para iniciar un servicio Linux en el arranque

Para aquellos que gestionan aplicaciones o servicios en alojamiento VPS Linux, garantizar que los servicios críticos se inicien automáticamente al arrancar es esencial para mantener un funcionamiento ininterrumpido. Usando systemd, un sistema init potente y flexible, puede configurar fácilmente los servicios para que se inicien justo cuando se inicia el sistema, lo que es crucial para las aplicaciones web, bases de datos y otros servicios esenciales que se ejecutan en entornos VPS. Esta guía le guiará a través de la configuración de una unidad de servicio systemd personalizada, para que pueda automatizar el inicio del servicio, agilizar la gestión y garantizar la fiabilidad en su configuración de alojamiento VPS Linux

Usar systemd para Iniciar un Servicio Linux al Arrancar

systemd es el sistema de inicio moderno utilizado por muchas distribuciones de Linux para gestionar los servicios y recursos del sistema. Una de sus características clave es la capacidad de iniciar los servicios de forma automática en el arranque, asegurando que las aplicaciones críticas y los servicios están en funcionamiento tan pronto como se inicia el sistema. Este artículo te guiará a través de los pasos para crear una unidad de servicio systemd y habilitarla para que se inicie en el arranque

¿Qué es systemd?

systemd es un sistema de inicio que sustituye a los antiguos sistemas de inicio como SysVinit y Upstart. Gestiona los procesos y servicios del sistema, permitiendo la paralelización del arranque de servicios, el arranque bajo demanda de demonios y un mejor control de los recursos. Con su estructura de archivos de unidad, systemd proporciona una forma flexible de gestionar servicios, sockets, dispositivos y otros recursos del sistema

Creación de un servicio systemd

Para iniciar un servicio en el arranque usando systemd, necesitas crear un archivo de unidad de servicio. Este archivo contiene toda la información necesaria para que systemd gestione el servicio. A continuación se explica cómo crear y configurar un archivo de unidad de servicio

Paso 1: Comprobar el directorio de trabajo

Abra su archivo de unidad de servicio para comprobar la directiva WorkingDirectory

sudo nano /etc/systemd/system/myapp.service

Busque la línea WorkingDirectory. Debe ser algo como esto( Busque: Crear el archivo de unidad de servicio)

WorkingDirectory=/etc/systemd/myapp

Compruebe que existe el directorio especificado

ls -l /etc/systemd/myapp

* /path/to/myapp – sustitúyalo por la ruta real que desee utilizar. Si recibe un error que indica que el directorio no existe, tendrá que crearlo

Paso 2: Crear el directorio de trabajo

Si el directorio no existe, créelo

sudo mkdir -p /etc/systemd/myapp

Establezca los permisos adecuados para que el usuario especificado en la directiva Usuario de su servicio pueda acceder a él. Por ejemplo, si su servicio se ejecuta como myuser

sudo chown myuser:myuser /etc/systemd/myapp

Crear el archivo de unidad de servicio

  1. Abra un terminal en su sistema Linux.
  2. Cree un nuevo archivo de unidad de servicio en el directorio /etc/systemd/system/. El nombre del archivo debe terminar con .service. Por ejemplo, para crear un servicio para una aplicación personalizada llamada myapp, debe ejecutar
    sudo nano /etc/systemd/system/myapp.service
  3. Añada el siguiente contenido al archivo, modificándolo según sea necesario para su aplicación:
    [Unit]
    Description=My Custom Application
    After=network.target
    [Service]
    ExecStart=/usr/bin/myapp
    Restart=always
    User=myuser
    WorkingDirectory=/etc/systemd/myapp
    [Install]
    WantedBy=multi-user.target
  • sección [Unidad]: Esta sección proporciona metadatos y dependencias para el servicio
      • Descripción: Una breve descripción del servicio.
      • Después de: Especifica que el servicio debe iniciarse después de que la red esté disponible.
  • sección [Servicio]: Esta sección define cómo se comporta el servicio
      • ExecStart: El comando para iniciar el servicio. Sustituya /usr/bin/myapp por la ruta de su ejecutable.
      • Restart: Define el comportamiento de reinicio. always significa que el servicio se reiniciará si se bloquea.
      • Usuario: Especifica el usuario bajo el cual debe ejecutarse el servicio.
      • DirectorioDeTrabajo: Define el directorio de trabajo para el servicio.
  • sección [Install]: Esta sección define cómo debe habilitarse el servicio.
      • WantedBy: Define el destino bajo el que debe iniciarse el servicio. multi-user.target es un destino común para los servicios de usuario.

Paso 3: Verificar permisos

Compruebe que el usuario tiene los permisos correctos para acceder al directorio de trabajo

ls -ld /etc/systemd/myapp

Asegúrese de que los permisos permiten al usuario leer y ejecutar archivos en este directorio

Paso 4: Ejecutable de prueba en el directorio de trabajo

Asegúresede que su aplicación puede ejecutarse desde este directorio de trabajo. Puede probar esto cambiando al usuario y navegando al directorio

sudo -u myuser bash
cd /etc/systemd/myapp
/usr/bin/myapp
Compruebe si se ejecuta sin errores. Si falla, solucione los problemas de la propia aplicación.

Paso 5: Recargar systemd e iniciar el servicio

Después de asegurarse de que el directorio de trabajo existe y está correctamente configurado, recargue la configuración de systemd

sudo systemctl daemon-reload

Intente iniciar el servicio de nuevo

sudo systemctl start myapp.service

Paso 6: Comprobar el estado

Compruebe el estado del servicio para ver si se ha iniciado correctamente

sudo systemctl status myapp.service

Paso 7: Revise los registros en busca de errores adicionales

Si el servicio sigue sin iniciarse, revise los registros para obtener información adicional

journalctl -u myapp.service

Paso 8: (Opcional) Detener y desactivar el servicio

Si alguna vez necesita detener el servicio o evitar que se inicie en el arranque, puede utilizar los siguientes comandos

  • Para detener el servicio
    sudo systemctl stop myapp.service
  • Para impedir que el servicio se inicie en el arranque
    sudo systemctl disable myapp.service

Conclusión

Utilizar systemd para iniciar un servicio Linux en el arranque es un proceso sencillo que mejora la fiabilidad y la gestión del sistema. Al crear un archivo de unidad de servicio, puede definir cómo debe ejecutarse su aplicación y asegurarse de que se inicie automáticamente con su sistema. Este método no sólo simplifica la gestión de servicios, sino que también proporciona potentes funciones para controlar el comportamiento de los servicios, haciendo de systemd una herramienta esencial para la administración moderna de sistemas Linux. Con estos pasos, puede configurar y gestionar eficazmente sus propios servicios, mejorando la funcionalidad general de su entorno Linux. Si se encuentra con algún problema, la revisión de los registros con journalctl puede proporcionar información útil sobre lo que podría estar funcionando mal.

Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills