Gitlab

Création d'un service

Instancier un service

Contrairement à PHP dont le service tourne nativement sur le serveur, lorsque l’application utlilise un runtime spécficique (pour les applications Nodejs, Python, Ruby …) et doit être lancée sur le serveur, les dévelopeurs ont accès à Systemd au niveau utilisateur et peuvent donc gérer eux-mêmes les actions sur le service et son évolution:

  • Créer un service et le versionner dans le projet my-super-project/systemd/my-super-service.service :

    [Unit]
    Description=My super service for my super project
    
    [Service]
    ExecStart=~/root/start-server.sh
    Restart=always
    RestartSec=180
    
    [Install]
    WantedBy=default.target
    
  • Créer un script “post-deploy” et le versionner dans le dossier .deploy.d du projet (my-super-project/.deploy.d/022-install-service):

    #! /bin/bash
    
    mkdir -p ~/.config/systemd/user/
    cp ~/root/systemd/my-super-service.service ~/.config/systemd/user/my-super-service.service
    systemctl --user daemon-reload
    systemctl restart my-super-service
    

Tâches planifiées

On peut déployer ses tâches planifiées via un timer systemd (voir au dessus) ou une classique crontab versionnée dans votre dépôt:

  • Définir la tâche qui lancera le cronjob dans my-super-project/crontab
0 * * * * /bin/bash $HOME/root/hourly-script
  • Créer un script “post-deploy” pour installer le cronjob my-super-project/.deploy.d/033-install-cron:
#! /bin/bash
crontab ~/root/crontab
Top