Aplikácia Spring Boot ako služba

1. Prehľad

Tento článok skúma niektoré možnosti spustenia aplikácií Spring Boot ako služby.

Najskôr vysvetlíme možnosti balenia webových aplikácií a systémové služby. V nasledujúcich častiach preskúmame rôzne alternatívy, ktoré máme pri nastavovaní služby pre systémy Linux aj Windows.

Na záver zakončíme niekoľkými odkazmi na ďalšie zdroje informácií.

2. Pokyny na nastavenie a zostavenie projektu

2.1. Balenie

Webové aplikácie sú tradične zabalené ako webová aplikácia aRchives (WAR) a nasadené na webový server.

Aplikácie Spring Boot môžu byť zabalené ako súbory WAR aj JAR. Posledne menovaný vkladá webový server do súboru JAR, ktorý umožňuje spúšťať aplikácie bez potreby inštalácie a konfigurácie aplikačného servera.

2.2. Konfigurácia Maven

Začnime definovaním našej konfigurácie pom.xml spis:

jar org.springframework.boot spring-boot-starter-parent 1.4.0.RELEASE .... org.springframework.boot spring-boot-maven-plugin true 

Obal musí byť nastavený na jar. V čase písania tohto článku používame najnovšiu stabilnú verziu Spring Boot, bude však stačiť akákoľvek verzia po 1.3. Viac informácií o dostupných verziách nájdete tu.

Všimnite si, že sme nastavili parameter do pravda pre spring-boot-maven-plugin artefakt. To zaisťuje, že a MANIFEST.MF súbor sa pridá do balíka JAR. Tento manifest obsahuje a Hlavná trieda položka, ktorá určuje, ktorá trieda definuje hlavnú metódu pre vašu aplikáciu.

2.3. Vytváranie aplikácií

Spustite nasledujúci príkaz v koreňovom adresári vašej aplikácie:

$ mvn čistý balíček

Spustiteľný súbor JAR je teraz k dispozícii v priečinku cieľ adresár a môžeme spustiť aplikáciu vykonaním nasledujúceho príkazu v príkazovom riadku:

$ java -jar váš-app.jar

V tomto okamihu ešte musíte vyvolať Java interpreter pomocou -jar možnosť. Existuje veľa dôvodov, prečo by bolo lepšie spustiť aplikáciu tak, že ju budete môcť vyvolať ako službu.

3. V systéme Linux

Na spustenie programu ako procesu na pozadí by sme mohli jednoducho použiť nič Príkaz Unix, ale ani to nie je z rôznych dôvodov preferovaný spôsob. Dobré vysvetlenie je uvedené v tomto vlákne.

Namiesto toho ideme do daemonizovať náš proces. V systéme Linux sa môžeme rozhodnúť nakonfigurovať démona buď pomocou tradičných Systém V zač skript alebo s Systemd konfiguračný súbor. Prvá z nich je tradične najznámejšou možnosťou, ale postupne sa nahrádza druhou.

Viac podrobností o tomto rozdiele nájdete tu.

Kvôli zvýšenej bezpečnosti najskôr vytvoríme konkrétneho používateľa, s ktorým bude služba spustená, a zodpovedajúcim spôsobom zmeníme povolenia spustiteľného súboru JAR:

$ sudo useradd baeldung $ sudo passwd baeldung $ sudo chown baeldung: baeldung your-app.jar $ sudo chmod 500 your-app.jar

3.1. Systém V zač

Spustiteľný súbor Spring Boot JAR veľmi uľahčuje proces nastavenia služby:

$ sudo ln -s /path/to/your-app.jar /etc/init.d/your-app

Vyššie uvedený príkaz vytvorí symbolický odkaz na váš spustiteľný súbor JAR. Musíte použiť celú cestu k spustiteľnému súboru JAR, inak symbolický odkaz nebude fungovať správne. Tento odkaz umožňuje spustiť aplikáciu ako službu:

$ sudo služba spustenie vašej aplikácie

Skript podporuje štandardnú službu začať, zastav, reštart a postavenie príkazy. Navyše:

  • spustí služby bežiace pod užívateľom baeldung práve sme vytvorili
  • sleduje ID procesu aplikácie /var/run/your-app/your-app.pid
  • zapisuje protokoly konzoly /var/log/your-app.log, ktoré môžete skontrolovať v prípade, že sa vaša aplikácia nespustí správne

3.2. Systemd

The systemd nastavenie služby je tiež veľmi jednoduché. Najskôr vytvoríme skript s názvom tvoja-app.service pomocou nasledujúceho príkladu a vložte ho do / etc / systemd / system adresár:

[Jednotka] Popis = Aplikácia Spring Boot After = syslog.target [Service] User = baeldung ExecStart = / path / to / your-app.jar SuccessExitStatus = 143 [Inštalovať] WantedBy = multi-user.target

Nezabudnite upraviť Popis, Používateľ a ExecStart zodpovedajú vašej žiadosti. Aj v tomto bode by ste mali byť schopní vykonať vyššie uvedené štandardné servisné príkazy.

Na rozdiel od Systém V zač prístup popísaný v predchádzajúcej časti, súbor ID procesu a súbor protokolu konzoly by mali byť výslovne nakonfigurované pomocou vhodných polí v servisnom skripte. Vyčerpávajúci zoznam možností nájdete tu.

3.3. Na začiatku

Upstart je správca služieb založený na udalostiach, potenciálna náhrada za Systém V zač ktorá poskytuje väčšiu kontrolu nad správaním rôznych démonov.

Táto stránka obsahuje dobré pokyny na nastavenie, ktoré by mali fungovať takmer v každej distribúcii systému Linux. Ak používate Ubuntu, pravdepodobne ho už máte nainštalovaný a nakonfigurovaný (skontrolujte, či existujú nejaké úlohy s názvom začínajúcim na „upstart“ v / etc / init).

Vytvárame pracovné miesto your-app.conf aby sme spustili našu aplikáciu Spring Boot:

# Miesto v /home/{user}/.config/upstart popis „Some Spring Boot application“ respawn # pokus o reštart služby, ak sa náhle zastaví java -jar /path/to/your-app.jar 

Teraz spustite príkaz „start your-app“ a služba sa spustí.

Program Upstart ponúka veľa možností konfigurácie úloh, väčšinu z nich nájdete tu.

4. V systéme Windows

V tejto časti uvádzame niekoľko možností, ktoré možno použiť na spustenie Java JAR ako služby Windows.

4.1. Windows Service Wrapper

Z dôvodu ťažkostí s licenciou GPL balíka Java Service Wrapper (pozri nasledujúcu podsekciu) v kombinácii s napr. licencia MIT spoločnosti Jenkins, projekt Windows Service Wrapper, tiež známy ako vyhráva, bolo počaté.

Winsw poskytuje programové prostriedky na inštaláciu / odinštalovanie / spustenie / zastavenie služby. Okrem toho ho možno použiť na spustenie ľubovoľného spustiteľného programu ako služby v systéme Windows, zatiaľ čo Java Service Wrapper, ako vyplýva z jeho názvu, podporuje iba aplikácie Java.

Najskôr si tu stiahnete binárne súbory. Ďalej konfiguračný súbor, ktorý definuje našu službu Windows, MyApp.xml, by malo vyzerať takto:

 MyApp MyApp Týmto sa spustí služba Spring Boot ako služba. java -Xmx256m -jar "% BASE% \ MyApp.jar" rotovať 

Nakoniec musíte premenovať winsw.exe do MyApp.exe aby sa jeho názov zhodoval s MyApp.xml konfiguračný súbor. Potom môžete nainštalovať službu takto:

$ MyApp.exe nainštalovať

Podobne môžete použiť aj vy odinštalovať, začať, zastav, atď.

4.2. Obálka služieb Java

Ak vám neprekáža licencia GPL na projekt Java Service Wrapper, táto alternatíva môže vyhovieť vašim potrebám rovnako dobre nakonfigurovať váš súbor JAR ako službu Windows. Program Java Service Wrapper v zásade tiež vyžaduje, aby ste ho zadali v konfiguračnom súbore, ktorý určuje, ako má byť váš proces spustený ako služba v systéme Windows.

Tento článok veľmi podrobne vysvetľuje, ako nastaviť také vykonávanie súboru JAR ako služby v systéme Windows, takže tieto informácie nie je potrebné opakovať.

5. Ďalšie odkazy

Aplikácie Spring Boot možno tiež spustiť ako službu Windows pomocou programu Procrun projektu Apache Commons Daemon. Procrun je sada aplikácií, ktoré umožňujú používateľom systému Windows zabaliť aplikácie Java ako služby systému Windows. Je možné nastaviť, aby sa takáto služba spustila automaticky pri zavedení počítača a bude pokračovať v prevádzke bez prihlásenia používateľa.

Viac podrobností o spustení aplikácií Spring Boot v systéme Unix nájdete tu. Existujú tiež podrobné pokyny na úpravu súborov jednotiek Systemd pre systémy založené na Redhat. Nakoniec

Na záver toto rýchle vysvetlenie popisuje, ako začleniť skript Bash do vášho súboru JAR, aby sa sám stal spustiteľným súborom!

6. Záver

Služby vám umožňujú veľmi efektívne spravovať stav vašej aplikácie a ako sme videli, nastavenie služieb pre aplikácie Spring Boot je teraz jednoduchšie ako kedykoľvek predtým.

Nezabudnite dodržiavať dôležité a jednoduché bezpečnostné opatrenia týkajúce sa povolení používateľa na spustenie vašej služby.


$config[zx-auto] not found$config[zx-overlay] not found