Cum să creați sau să configurați un serviciu pe serverele Linux folosind Systemd

Systemd este un set de daemoni, instrumente, biblioteci și servicii concepute pentru a gestiona și configura centralizat toate serviciile pe Linux sisteme de operare. Systemd ne permite să interacționăm direct cu nucleul sistemului de operare, iar astăzi acest demon este prezent în marea majoritate a distribuțiilor bazate pe Linux, cum ar fi Debian, Ubuntu si multe altele. Ținând cont că acesta se ocupă de controlul serviciilor de sistem, este esențial să putem ști cum să creăm singuri un serviciu, să-l pornim și să-l oprim oricând dorim, lucru fundamental pentru a ne gestiona corect sistemul de operare. Astăzi, în acest articol, vă vom învăța cum să vă creați propriile servicii pe sistemele Linux.

creați sau configurați un serviciu pe serverele Linux folosind Systemd

În zilele noastre, marea majoritate a aplicațiilor depind de Systemd pentru a-și crea propriile demoni, sau cunoscute și ca „daemon” sau pur și simplu servicii în sistem. Când instalăm un program nou, dacă acesta trebuie să fie executat la pornirea sistemului de operare, acesta va încorpora direct un fișier special conceput astfel încât systemd să-l recunoască și să îl pornească de fiecare dată când pornim sistemul de operare, totuși, este foarte este posibil ca nu toate Aplicațiile să încorporeze această funcționalitate, iar dacă dorim să pornească cu sistemul de operare, trebuie să creăm noi înșine o anumită configurație, astfel încât să pornească automat și să fie constant în sistem.

În următorul exemplu pe care vi-l vom arăta, vom crea un serviciu pentru motorul de actualizare Tiny Tiny RSS, deși făcând câteva mici modificări pe care le vom indica mai târziu, îl vom putea folosi pentru a executa orice script, comandă sau serviciu pe care trebuie să-l rulăm în fundal în sistemul nostru de operare cu Systemd.

Unul dintre punctele forte ale Systemd este că funcționează exact la fel pe toate sistemele de operare bazate pe Linux, nu contează dacă folosești Debian, Ubuntu sau orice altă distribuție, este exact același pe toate și aceeași configurație. fișierul vă va servi.

Creează-ți propriul serviciu sau demon

Primul lucru pe care trebuie să-l facem este să introducem calea în care se află toate serviciile Systemd, în cazul nostru vă vom da exemplele folosind Debian, dar calea în diferitele sisteme de operare este exact aceeași, nu ar trebui să existe diferență.

Ruta pe care trebuie să mergem pentru a vedea fiecare dintre servicii este „/etc/systemd/system/”, prin urmare, dacă folosim comanda „cd” vom putea merge fără probleme pe această rută:

cd /etc/systemd/system/

Dacă facem un „ls” pentru a lista toate serviciile, le vom putea vedea pe toate cele care sunt create implicit. În funcție de programele pe care le-ați instalat, vom avea unele servicii sau altele.

Odată ce ne aflăm în calea corectă, acum va trebui să creăm un fișier care se termină în „serviciu”, așa cum puteți vedea în captura de ecran anterioară. Toată configurația care trebuie efectuată trebuie să fie în acest fișier de configurare, în cazul nostru vom crea un fișier numit « ttrssupdate.service » prin executarea comenzii:

sudo nano ttrssupdate.service

În cazul în care doriți să utilizați vi sau vim, o puteți face și fără probleme, indiferent de editorul de text pe care îl utilizați, cel mai important lucru este conținutul fișierului pentru a crea demonul personalizat și că au extensia „serviciu”. asa cum ati vazut. Trebuie să ținem cont de faptul că pentru a crea un fișier în această cale, este complet necesar să fii root pentru a-l crea sau să folosești „sudo” pentru a-l putea crea corect.

Conținutul fișierului, în acest exemplu, este următorul:

[Unit] Description=Daemon TTRSS Auto-Update Feeds
After=network.target mysql.service
[Service] User=www-data
ExecStart=/var/www/html/rss/update_daemon2.php
[Install] WantedBy=multi-user.target

Trebuie să avem în vedere că acest serviciu va începe întotdeauna cu sistemul de operare, cu excepția cazului în care decideți să nu o faceți.

În continuare, vă vom arăta ce înseamnă fiecare dintre părțile fișierului de configurare anterior:

  • Descriere: putem introduce aici numele si o descriere a ceea ce va face demonul nostru, in acest caz putem pune ceea ce vrem, este o descriere pentru administratorul de sistem, sa stie ce face demonul fara a fi nevoie sa cautam mai departe cod.
  • După: vom indica dacă vrem să se încarce după alte servicii sau componente ale sistemului. Acesta este ceva foarte important, deoarece dacă serviciul nostru necesită un alt serviciu, atunci va trebui să urmăm o anumită secvență. Există și o altă directivă numită „Înainte” care face opusul, indicând că serviciul nostru este executat înaintea celuilalt serviciu pe care îl specificăm.
  • Utilizator - Utilizatorul sistemului de operare care va rula demonul. Poate funcționa și cu Group. Acest lucru este foarte important, deoarece în funcție de permisiunile de care are nevoie serviciul, va trebui să-l rulăm cu root, utilizatorul nostru neprivilegiat sau orice alt utilizator de sistem.
  • ExecStart: trebuie sa indicam calea absoluta (nu functioneaza relativ) catre scriptul sau binarul pe care vrem sa-l executam pentru a porni serviciul in cauza.
  • Caut de: directive de utilizare și alte dependențe.

Odată ce avem fișierul nostru .service configurat, este recomandat să verificăm dacă proprietarul fișierului este root și că grupul este, de asemenea, în plus, ar trebui să configuram permisiunile 777 pentru fișierul în cauză, putem face acest lucru:

chmod 777 ttrssupdate.service

Acum că îl avem complet configurat, trebuie să îl activăm și vă vom învăța cum să gestionați serviciul.

Gestionați serviciul creat

Acum că am creat serviciul în sistemul de operare, înainte de a putea începe să-l folosim, trebuie să-l activăm cu comanda „activare”. Pentru a face acest lucru, trebuie pur și simplu să rulăm comanda „systemctl enable” urmată de numele serviciului pe care tocmai l-am creat. Nu este necesar să rulați acest lucru în aceeași cale în care sunt stocate fișierele, în cazul nostru ar fi:

systemctl enable ttrssupdate.service

Desigur, ne va cere parola de superutilizator a sistemului pentru a o activa corect, pentru acest tip de sarcină este esențial să avem permisiuni de superutilizator, altfel nu vom putea face nimic.

Acum că am activat serviciul, trebuie să-l pornim manual prima dată. Din acest moment va rula mereu, chiar și atunci când repornim sistemul de operare, acest serviciu va porni și el automat.

systemctl start ttrssupdate.service

În aceste momente, serviciul va fi activ în sistemul nostru de operare. Deși systemd poate fi destul de complicat dacă intrăm în lucruri avansate, crearea unui serviciu nu este prea complicată, așa cum ați văzut pe parcursul acestui tutorial. În continuare, vă vom arăta și alte comenzi foarte utile pentru a gestiona serviciul nostru nou creat:

  • sudo systemctl daemon-reload: această ordine ne permite să reîncărcăm din nou toate serviciile, foarte util dacă modificăm mai multe dintre ele, în acest fel, o putem face global cu toate.
  • sudo systemctl stop ttrssupdate.service: această comandă ne permite să oprim serviciul pornit anterior, prin oprirea serviciului am putea face modificări care nu au putut fi făcute la pornire, de exemplu, pentru a aplica modificări va trebui să oprim și să pornim serviciul .
  • sudo systemctl restart ttrssupdate.service: ne permite să repornim serviciul (este la fel ca oprirea și pornirea lui, dar într-o singură comandă).
  • journalctl -u ttrssupdate.service: ne permite să vedem jurnalul generat de serviciul în cauză, în cazul în care apare o eroare la executarea acestuia, sau orice avertizare care ar putea duce la probleme viitoare.
  • sudo systemctl status ttrssupdate.service: ne permite să vedem informațiile de stare despre serviciul în cauză, această comandă este esențială pentru a vedea dacă rulează sau nu.

După cum ați văzut, crearea unui serviciu cu systemd este destul de simplă, iar gestionarea lui folosind diferitele comenzi pe care le-am indicat este, de asemenea, destul de simplă.