web-dev-qa-db-fra.com

Redémarrer le service systemd lors du changement de fichier?

Je suis nouveau sur systemd et aimerais savoir quelle est la meilleure stratégie pour redémarrer mon application Web chaque fois que je déploie une nouvelle version.

Actuellement, je démarre mon service au démarrage et il reste là. Cependant, je souhaite qu'il redémarre automatiquement chaque fois que je modifie les fichiers, car chaque fois que je Push to master sur gitlab, le coureur récupère les fichiers, les compile et les copie dans le bon répertoire. Ensuite, je veux le redémarrer ou le fermer, mais je ne sais pas comment, car le redémarrer nécessite Sudo.

Voici mon dossier de service

[Unit]
After=mongod.service

[Service]
WorkingDirectory=/var/app/mywebsite/Web
Environment="HOME=/home/stan"
Environment="DOTNET_CLI_TELEMETRY_OPTOUT=1"
Environment="DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1"
ExecStart=/usr/bin/dotnet run -c Release -p /var/app/mywebsite/Web/project.json

[Install]
WantedBy=multi-user.target

Voici mon fichier ci pour être plus précis

before_script:
    - set DOTNET_CLI_TELEMETRY_OPTOUT=1
    - set DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
    - set HOME=/home/stan
    - cd Web
    - dotnet restore
    - dotnet build -c Release
    - cd ..
copy:
    script:
        - cp -R ./* /var/app/mywebsite/ # After this I would like to restart the website service
4
sed
  1. ouvrir Sudo visudo
  2. ajouter gitlab-runner ALL=(ALL) NOPASSWD: /bin/systemctl restart myapp
  3. maintenant vous pouvez faire Sudo /bin/systemctl restart myapp et il ne demandera pas de mot de passe
1
sed

Si vous voulez recharger systemd, rechercher des unités nouvelles ou modifiées, ajoutez:

Sudo systemctl daemon-reload
3
Emanuele Bosimini