Het Toevoegen van Uw Eigen Diensten aan systemd Voor Eenvoudiger Beheer

Linux servers zijn ontworpen om links te draaien, in plaats van het starten van belangrijke programma ‘ s handmatig, waardoor ze in een tmux-sessie, moet u ze toevoegen aan systemd als een service die automatisch start bij het opstarten en opnieuw opstarten als er fouten ontstaan.

Werken Met Systemd En Diensten

Systemd winkels configuration voor services op twee plaatsen. De eerste is /lib/systemd/system/, waar je de configuratie voor veel services zijn op uw systeem. De meeste software installeert installeren diensten hier. De tweede is /etc/systemd/system/ die voorrang krijgt op de /lib/systemd directory en wordt meestal gebruikt om de gebruiker gemaakte diensten op. Er is ook een /etc/systemd/users/, die loopt diensten voor individuele ingelogde gebruikers, zoals het ophalen van e-mail.

Veel van deze services zijn niet in alle de tijd, zoals nginx of MySQL zou. U kunt afdrukken van een lijst van diensten die momenteel in gebruik swith:

service –status-alle

Diensten met een ” + ” – symbool worden uitgevoerd, en diensten met een “-” symbool zijn gestopt. U kunt meer gedetailleerde informatie met:

de status van de dienst nginx

Sinds diensten draaien in de achtergrond, melden zich niet van hun uitvoer naar de console, in plaats loggen uitgang naar het systemd journal. De “status” toont de laatste paar regels van dit tijdschrift, maar je kunt het direct met:

journalctl -fn 50 -u nginx

Dit commando drukt de meest recente 50 vermeldingen (-n) van de nginx service (-u). Het is geconfigureerd om af te drukken alles in en begin bij de bodem, het volgende nieuwe log posten als ze zijn gemaakt (-f).

Natuurlijk zijn er veel toepassingen zullen toch schrijven de meeste dingen die om hun toegang of fout logs, dus controleer deze goed. Het tijdschrift houdt van dingen vastgelegd rechtstreeks naar de console, dit kan nuttig zijn voor het opsporen van fouten in uw eigen diensten.

Eenvoudige Service Setup

Systemd is gebruikt voor een heleboel dingen in Linux; elk object beheert het is een Eenheid genoemd, en hebben een overeenkomstige “Eenheid Bestand” te definiëren wat ze zijn. Dit kunnen eenvoudige diensten, zoals nginx of MySQL zijn, maar ze kunnen ook dingen zoals mount points, apparaten, stopcontacten, en tal van andere onder-de-motorkap dingen, die allemaal beheerd worden door systemd. Units kunnen ook worden doelen gebruikt om te bepalen wanneer andere diensten wordt uitgevoerd (d.w.z. nadat het netwerk is geïnitialiseerd).

In dit geval echter, u waarschijnlijk wilt configureren van de toepassing als een basic service. Om dit te doen, je moet een nieuwe eenheid bestand, die je wenst te plaatsen in /etc/systemd/system/ en de naam met een .service-extensie:

touch /etc/systemd/system/myapp.service

Eenheid bestanden hebben een paar verschillende secties, maar over het algemeen zal er als volgt uitzien:

[Unit]
Beschrijving=Voorbeeld Service
Na het= – netwerk.doel
StartLimitIntervalSec=0

[Service]
Type=simple
Start=altijd
RestartSec=1
Gebruiker=serviceuser
ExecStartPre=
ExecStart=/pad/naar/uitvoerbare [opties]
ExecStartPost
ExecStop=
ExecReload=

[Install]
WantedBy=multi-user.doel

Ten eerste, het [Apparaat] – sectie, waarin een stel van metadata over het toestel. De Na het= – richtlijn kan worden gebruikt voor het delay-unit activering tot het andere apparaat wordt gestart, zoals het netwerk of een andere service, zoals mysql.Deze service maakt het niet een harde afhankelijk van de dienst, maar u kunt dat doen met het Vergt= of Wil= richtlijnen. In deze sectie configureert ook het maximum aantal keren dat het apparaat zal proberen gestart worden voordat systemd geeft helemaal op, omdat u waarschijnlijk wilt om het te blijven proberen, kunt u dit instellen op 0 om dit gedrag uitschakelen.

Daarna is de [Dienst] sectie, specifiek voor service unit bestanden. Dit is de plaats waar je het configureren van de Exec opties. Gebruiker zal de dienst als een bepaalde gebruiker. U kunt dit instellen op uw persoonlijke gebruikersaccount, wortel, of een op maat gemaakte service-account. Maar zorg ervoor dat de gebruiker voldoende rechten om haar werk te doen.

Er zijn een paar verschillende richtlijnen hier voor het opgeven van de programma ‘ s op te draaien. ExecStartPre zal eerst uitgevoerd, zodat u om te doen een installatie nodig zijn voordat de service echt begint. ExecStart is de belangrijkste uitvoerbare bestand. ExecStartPost loopt daarna, en ExecStop wordt uitgevoerd wanneer de service wordt afgesloten. ExecReload is een bijzondere richtlijn, en wordt gebruikt wanneer u een oproep “reload” in plaats van opnieuw opstarten. Dit kunt u uitvoeren om run-time het herladen van de configuratie, mits uw toepassing mogelijk is.

Ten slotte, de [Install] – sectie, waarin wat meer gedrag in verband met hoe systemd handgrepen van het apparaat. Dit wordt meestal gebruikt voor het opgeven van de WantedBy= richtlijn, die wordt gebruikt om te vertellen systemd wanneer om te beginnen met uw service en creëert symbolische koppelingen tussen doelstellingen en hun afhankelijke eenheden. Als u niet zeker weet welk doel te gebruiken, de multi-user.doel uitvoeren van diensten bij het opstarten nadat alles is geladen.

Kortom, de configuratie is vrij eenvoudig, en alles wat je echt moet doen, is in het uitvoerbare bestand als argument in de [Service] – sectie. Zodra je de service hebt gemaakt, u zult opnieuw de systemctl daemon bijwerken met de wijzigingen:

sudo systemctl daemon reload

En inschakelen (die zal draaien tijdens het opstarten, per de eenheid config):

sudo systemctl enable myapp

En dan begint de dienst:

sudo service myapp start

De dienst moet nu worden uitgevoerd in de achtergrond en u kunt controleren journalctl te kijken naar de output. Als deze gereed is, systemd zal automatisch beginnen met het weer, en het moet worden uitgevoerd bij het opstarten samen met de andere diensten op uw systeem.

Als u opnieuw uw service, kunt u gebruik maken van:

sudo service myapp opnieuw

Die zal voeren van de ExecStop= richtlijn, sluit het toestel en start deze opnieuw.


Posted

in

by

Tags: