Tavaszi indító alkalmazás, mint szolgáltatás

1. Áttekintés

Ez a cikk a Spring Boot alkalmazások szolgáltatásként történő futtatásának néhány lehetőségét tárja fel.

Először elmagyarázzuk a webalkalmazások csomagolási lehetőségeit és rendszerszolgáltatásait. A következő szakaszokban különféle alternatívákat tárunk fel, amikor mindkét Linuxhoz, mint Windows alapú rendszerhez szolgáltatást állítunk be.

Végül néhány további információforrásra történő hivatkozással zárulunk.

2. Projektbeállítási és összeépítési utasítások

2.1. Csomagolás

A webalkalmazásokat hagyományosan Web Application aRchives (WAR) néven csomagolják, és egy webkiszolgálóra telepítik.

A Spring Boot alkalmazások WAR és JAR fájlként is csomagolhatók. Ez utóbbi egy webszervert ágyaz be egy JAR fájlba, amely lehetővé teszi az alkalmazások futtatását az alkalmazáskiszolgáló telepítése és konfigurálása nélkül.

2.2. Maven konfiguráció

Kezdjük azzal, hogy meghatározzuk a konfigurációnkat pom.xml fájl:

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

A csomagolást állítani kell befőttes üveg. Az írás idején a Spring Boot legújabb, stabil verzióját használjuk, de az 1.3 utáni bármely verzió elég lesz. Az elérhető verziókról itt talál további információt.

Figyelje meg, hogy beállítottuk a paraméter a igaz a spring-boot-maven-plugin műalkotás. Ez biztosítja, hogy a MANIFEST.MF fájl hozzáadódik a JAR csomaghoz. Ez a jegyzék a Főosztály bejegyzés, amely meghatározza, hogy melyik osztály határozza meg az alkalmazás fő módszerét.

2.3. Az alkalmazás felépítése

Futtassa a következő parancsot az alkalmazás gyökérkönyvtárában:

$ mvn tiszta csomag

A futtatható JAR fájl már elérhető a cél könyvtárat, és elindíthatjuk az alkalmazást a következő parancs végrehajtásával a parancssoron:

$ java -jar a-app.jar

Ezen a ponton még mindig meg kell hívnia a Java tolmácsot a -befőttes üveg választási lehetőség. Számos oka van annak, amiért előnyösebb lenne az alkalmazás elindítása azzal, hogy szolgáltatásként hívhatja meg.

3. Linuxon

A program háttérként történő futtatásához egyszerűen használhatjuk a nohup Unix parancs, de különféle okokból ez sem az előnyben részesített módszer. Ebben a témában jó magyarázat található.

Ehelyett megyünk démonizálni folyamatunk. Linux alatt dönthetünk úgy, hogy beállítunk egy démont akár egy hagyományosal V. rendszer szkript vagy a Systemd konfigurációs fájl. Az előbbi hagyományosan a legismertebb lehetőség, de fokozatosan felváltja az utóbbi.

Erről a különbségről itt talál további részleteket.

A fokozott biztonság érdekében először létrehozunk egy adott felhasználót a szolgáltatás futtatásához, és ennek megfelelően módosítjuk a futtatható JAR fájlengedélyeket:

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

3.1. V rendszer Init

A Spring Boot futtatható JAR fájl nagyon megkönnyíti a szolgáltatás beállítását:

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

A fenti parancs szimbolikus linket hoz létre a futtatható JAR fájlhoz. A futtatható JAR fájl teljes elérési útját kell használnia, különben a szimbolikus link nem fog megfelelően működni. Ez a link lehetővé teszi az alkalmazás szolgáltatásként történő indítását:

$ sudo service your-app indul

A szkript támogatja a szokásos szolgáltatást Rajt, álljon meg, újrakezd és állapot parancsokat. Ráadásul:

  • elindítja a felhasználó alatt futó szolgáltatásokat baeldung most hoztunk létre
  • nyomon követi az alkalmazás folyamatazonosítóját /var/run/your-app/your-app.pid
  • a konzol naplóit írja /var/log/your-app.log, amelyet érdemes ellenőrizni, ha az alkalmazás nem indul el megfelelően

3.2. Systemd

A systemd a szolgáltatás beállítása is nagyon egyszerű. Először létrehozunk egy nevű szkriptet a-app.szolgáltatás a következő példát felhasználva tegye be / etc / systemd / system Könyvtár:

[Egység] Leírás = Tavaszi rendszerindító alkalmazás után = syslog.target [Szolgáltatás] Felhasználó = baeldung ExecStart = / elérési út / a / app -hoz .jar SuccessExitStatus = 143 [Telepítés] WantedBy = többfelhasználós.target

Ne felejtse el módosítani Leírás, Felhasználó és ExecStart mezők, amelyek megfelelnek az alkalmazásának. Ezen a ponton is képesnek kell lennie a fent említett szokásos szolgáltatási parancsok végrehajtására.

Szemben a V. rendszer Az előző szakaszban leírt megközelítésnél a folyamatazonosító fájlt és a konzol naplófájlt kifejezetten a szolgáltatási parancsfájl megfelelő mezőinek felhasználásával kell konfigurálni. A lehetőségek teljes listája itt található.

3.3. Felindulás

Az Upstart egy esemény-alapú szolgáltatás menedzser, a V. rendszer amely jobban ellenőrzi a különböző démonok viselkedését.

A webhely jó telepítési utasításokkal rendelkezik, amelyeknek szinte minden Linux disztribúciónak működnie kell. Az Ubuntu használatakor valószínűleg már telepítve van és konfigurálva van (ellenőrizze, hogy van-e olyan munka, amelynek neve „kezdéssel” kezdődik / etc / init).

Munkahelyet teremtünk your-app.conf a Spring Boot alkalmazás elindításához:

# Helyezze a /home/{user}/.config/upstart leírásba a "Néhány tavaszi indító alkalmazás" újraszerelés # kísérleti szolgáltatás újraindítása, ha hirtelen leáll exec java -jar /path/to/your-app.jar 

Most futtassa a „start your-app” alkalmazást, és elindul a szolgáltatása.

Az Upstart számos jobkonfigurációs lehetőséget kínál, a legtöbbet itt találja.

4. Windows rendszeren

Ebben a részben bemutatunk néhány lehetőséget, amelyek felhasználhatók a Java JAR futtatására Windows szolgáltatásként.

4.1. Windows Service Wrapper

A Java Service Wrapper (lásd a következő alfejezetet) GPL licencével kapcsolatos nehézségek miatt, pl. a Jenkins MIT licencje, a Windows Service Wrapper projekt, más néven winswfogant.

Winsw programozott eszközöket biztosít a szolgáltatás telepítéséhez / eltávolításához / indításához / leállításához. Ezenkívül bármilyen futtatható fájl futtatására használható szolgáltatásként Windows alatt, míg a Java Service Wrapper a nevéből adódóan csak a Java alkalmazásokat támogatja.

Először töltse le itt a bináris fájlokat. Ezután a konfigurációs fájl, amely meghatározza a Windows szolgáltatásunkat, MyApp.xml, így kell kinéznie:

 MyApp MyApp Ez a Spring Boot szolgáltatást futtatja. java -Xmx256m -jar "% BASE% \ MyApp.jar" forog 

Végül át kell neveznie a winsw.exe nak nek MyApp.exe hogy neve megegyezzen a MyApp.xml konfigurációs fájl. Ezt követően telepítheti a szolgáltatást a következőképpen:

$ MyApp.exe telepítése

Hasonlóképpen használhatja eltávolítás, Rajt, álljon megstb.

4.2. Java Service Wrapper

Abban az esetben, ha nem bánja a Java Service Wrapper projekt GPL licencelését, ez az alternatíva megoldhatja a JAR fájl Windows-szolgáltatásként történő konfigurálásának igényeit. Alapvetően a Java Service Wrapper azt is megköveteli, hogy adjon meg egy konfigurációs fájlban, amely meghatározza a folyamat szolgáltatásként történő futtatását a Windows alatt.

Ez a cikk nagyon részletesen elmagyarázza, hogyan lehet a JAR fájl ilyen végrehajtását szolgáltatásként beállítani a Windows alatt, ezért nem kell megismételnünk az információkat.

5. További hivatkozások

A Spring Boot alkalmazások Windows szolgáltatásként is elindíthatók az Apache Commons Daemon projekt Procrun segítségével. A Procrun olyan alkalmazások összessége, amelyek lehetővé teszik a Windows felhasználók számára, hogy a Java alkalmazásokat Windows szolgáltatásként csomagolják. Az ilyen szolgáltatás beállítható úgy, hogy automatikusan elinduljon, amikor a gép elindul, és továbbra is futni fog anélkül, hogy bármely felhasználó be lenne jelentkezve.

További információk a Spring Boot alkalmazások Unix alatt történő indításáról itt találhatók. Részletes utasítások találhatók a Redd alapú rendszerek Systemd egységfájljainak módosításáról is. Végül

Végül ez a gyors útmutató leírja, hogyan építsünk be egy Bash szkriptet a JAR fájlba, hogy az maga futtathatóvá váljon!

6. Következtetés

A szolgáltatások lehetővé teszik az alkalmazásállapot nagyon hatékony kezelését, és amint láttuk, a Spring Boot alkalmazások szolgáltatásának beállítása most könnyebb, mint valaha.

A szolgáltatás futtatásához ne felejtse el követni a felhasználói engedélyekre vonatkozó fontos és egyszerű biztonsági intézkedéseket.