Come Aggiungere i Vostri Servizi a systemd Per una Gestione più Semplice

0
186

I server Linux sono progettati per essere lasciato in esecuzione per tutto il tempo, piuttosto che in avvio di importanti programmi manualmente e li lascia in un tmux sessione, si dovrebbe aggiungere a systemd come un servizio che si avvia automaticamente all’avvio e riavviare il computer se si verificano errori.

Lavorare Con Systemd E Servizi

Systemd negozi di configurazione per i servizi a due posti. Il primo è /lib/systemd/system/, dove potrete trovare la configurazione per molti servizi sul tuo sistema. La maggior parte dei software installa l’installazione di servizi qui. Il secondo è /etc/systemd/system/, che sostituisce il /lib/systemd directory ed è generalmente utilizzato per il luogo creato dall’utente servizi. C’è anche /etc/systemd/users/, che gestisce i servizi per i singoli utenti connessi, come ritirare la posta.

Molti di questi servizi non correre per tutto il tempo come nginx o MySQL sarebbe. È possibile stampare un elenco di tutti i servizi attualmente in uso swith:

servizio –status-tutti

Servizi con il simbolo “+” sono in esecuzione, e servizi con un simbolo “-” sono stato arrestato. È possibile visualizzare informazioni più dettagliate con:

stato del servizio nginx

Dal momento che i servizi in esecuzione in background, che non registro la loro uscita per la console, invece output di registrazione a systemd gazzetta. Lo “status” di comando mostrerà le ultime righe di questo giornale, ma lo si può leggere direttamente con:

journalctl -fn 50 -u nginx

Questo comando consente di stampare l’ultima 50 voci di registro (-n) da nginx servizio (-u). È configurata per la stampa di tutto e di avvio in basso, seguendo le nuove voci del registro come sono stati creati (-f).

Naturalmente, molte applicazioni saranno ancora scrivere la maggior parte delle cose per l’accesso ai log di errore, in modo da essere sicuri di controllare quelli. La gazzetta tiene traccia delle cose connesso direttamente alla console, il che può essere utile per il debug dei propri servizi.

Semplice Servizio Di Installazione

Systemd è utilizzato per un sacco di cose in Linux; ogni oggetto amministra è chiamato Unità, e hanno un corrispondente Unità “File” per definire ciò che sono. Questi possono essere semplici servizi come nginx o MySQL, ma possono anche essere cose come punti di montaggio, i dispositivi, le prese di corrente, e un sacco di altri sotto la cappa di roba, il tutto gestito da systemd. Le unità possono anche essere obiettivi, usato quando altri servizi eseguire (cioè, dopo la rete viene inizializzato).

Per questo caso, però, si probabilmente desidera configurare l’applicazione come un servizio di base. Per fare questo, dovrete creare un nuovo file di unità che si desidera mettere in /etc/systemd/system/ e il nome con un .estensione del servizio:

touch /etc/systemd/system/myapp.servizio

File unità sono varie sezioni, ma in generale sarà simile a questa:

[Unit]
Descrizione=Esempio Di Servizio
Dopo=la rete.destinazione
StartLimitIntervalSec=0

[Servizio]
Tipo=semplice
Riavviare=sempre
RestartSec=1
Utente=serviceuser
ExecStartPre=
ExecStart=/path/to/file eseguibile [opzioni]
ExecStartPost
ExecStop=
ExecReload=

[Installazione]
WantedBy=multi-utente.destinazione

Prima di tutto, la [Unit] sezione, che definisce un gruppo di metadati su l’unità. Il Dopo= direttiva può essere utilizzata per unità di ritardo di attivazione fino a quando un’altra unità è iniziato, come rete, o di un altro servizio, come mysql.servizio Questo non è un disco carico di tale servizio, anche se si può fare anche con le Richiede= o= direttive. Anche in questa sezione consente di configurare il numero massimo di volte in cui l’unità si tenta di essere avviato prima di systemd dà interamente; dato che, probabilmente, vuole continuare a provare, è possibile impostare questo valore a 0 per disabilitare questo comportamento.

La prossima è il [Servizio] sezione, specifica per unità di servizio di file. Questo è dove potrai configurare la Exec opzioni. Utente verrà eseguito il servizio, come un certo utente. Si può impostare il vostro account personale, radice, o un servizio personalizzato account. Basta assicurarsi che l’utente dispone di autorizzazioni sufficienti per fare il suo lavoro.

Ci sono un paio di diverse direttive qui per specificare l’esecuzione di programmi. ExecStartPre verrà eseguito prima, che ti permette di eseguire qualsiasi programma di installazione necessari prima che il servizio inizia davvero. ExecStart è l’eseguibile principale. ExecStartPost corre in seguito, e ExecStop viene eseguito quando il servizio viene arrestato. ExecReload è una direttiva particolare, e viene utilizzato quando si chiama “ricarica” invece di riavviare. Questo consente di eseguire il tempo di ricarica di configurazione, a condizione che l’applicazione ha la capacità.

Infine, la sezione [Installazione], che definisce alcuni più comportamenti relativi a come systemd gestisce l’unità. Questo è più comunemente utilizzato per specificare il WantedBy= direttiva, che è utilizzata per indicare systemd quando iniziare il vostro servizio, e crea i collegamenti tra obiettivi e il loro carico di unità. Se non si è certi di destinazione da usare, multi-utente.obiettivo di eseguire servizi all’avvio, dopo che la maggior parte tutto è stato caricato.

In generale, la configurazione è abbastanza facile, e tutto ciò che dovete fare è inserire il vostro eseguibile come un argomento nella [Servizio] sezione. Una volta che il servizio è stato creato, è necessario ricaricare il systemctl demone aggiornamento con le modifiche:

sudo systemctl daemon-reload

E abilitarlo (che verranno eseguiti all’avvio, per l’unità config):

sudo systemctl enable myapp

E quindi avviare il servizio:

sudo service myapp inizio

Il servizio deve essere eseguito in background, e si può controllare journalctl a guardare la sua uscita. Se esce systemd inizierà automaticamente di nuovo, e si deve eseguire al boot, insieme ad altri servizi sul tuo sistema.

Se è necessario riavviare il servizio, è possibile utilizzare:

sudo service myapp riavviare

Che eseguirà il ExecStop= direttiva, spegnere l’unità, quindi avviare di nuovo.