Création d'un service
Sur cette page
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