יישום אתחול האביב כשירות

1. סקירה כללית

מאמר זה בוחן כמה אפשרויות להפעלת יישומי Spring Boot כשירות.

ראשית, אנו הולכים להסביר את אפשרויות האריזה של יישומי האינטרנט ואת שירותי המערכת. בסעיפים הבאים, אנו בוחנים חלופות שונות שיש לנו בעת הגדרת שירות עבור לינוקס כמערכות מבוססות Windows.

לסיום נסכם בכמה התייחסויות למקורות מידע נוספים.

2. הוראות התקנת פרויקט ובנייה

2.1. אריזה

יישומי אינטרנט ארוזים באופן מסורתי כ- AARchives יישומי אינטרנט (WAR) ונפרסים לשרת אינטרנט.

יישומי אתחול האביב עשויים להיות ארוזים הן כקבצי WAR והן כקבצי JAR. האחרון מטמיע שרת אינטרנט בתוך קובץ JAR, המאפשר להריץ יישומים ללא צורך בהתקנה ותצורה של שרת יישומים.

2.2. תצורת Maven

נתחיל בהגדרת התצורה של שלנו pom.xml קוֹבֶץ:

צנצנת org.springframework.boot spring-boot-starter-parent 1.4.0.RELEASE .... org.springframework.boot spring-boot-maven-plugin true 

יש להגדיר את האריזה קַנקַן. אנו משתמשים בגרסה היציבה האחרונה של Spring Boot בזמן כתיבת שורות אלה, אך כל גרסה לאחר 1.3 תספיק. תוכל למצוא מידע נוסף על גרסאות זמינות כאן.

שימו לב שהגדרנו את פרמטר ל נָכוֹן בשביל ה spring-boot-maven-plugin חפץ. זה מוודא כי א MANIFEST.MF קובץ נוסף לחבילת JAR. מניפסט זה מכיל מעמד ראשי ערך המציין איזו מחלקה מגדירה את השיטה העיקרית ליישום שלך.

2.3. בניית היישום שלך

הפעל את הפקודה הבאה בתוך ספריית הבסיס של היישום שלך:

חבילה נקייה של mvn $

קובץ ה- JAR ההפעלה זמין כעת ב- יַעַד ספרייה ואנחנו יכולים להפעיל את היישום על ידי ביצוע הפקודה הבאה בשורת הפקודה:

$ java -jar your-app.jar

בשלב זה, אתה עדיין צריך להפעיל את מתורגמן Java עם ה- -קַנקַן אוֹפְּצִיָה. ישנן סיבות רבות מדוע עדיף שהאפליקציה שלך תתחיל בכך שתוכל להפעיל אותה כשירות.

3. בלינוקס

על מנת להריץ תוכנית כתהליך רקע, נוכל פשוט להשתמש ב- נוהופ פקודת יוניקס, אך זו לא הדרך המועדפת מסיבות שונות. הסבר טוב ניתן בשרשור זה.

במקום זאת, אנחנו הולכים לחרוג לחיים התהליך שלנו. תחת לינוקס, אנו עשויים לבחור להגדיר דמון עם מסורתי מערכת V init תסריט או עם מערכת קובץ תצורה. הראשונה היא באופן מסורתי האופציה המוכרת ביותר אך היא מוחלפת בהדרגה באחרונה.

תוכל למצוא פרטים נוספים על הבדל זה כאן.

לצורך אבטחה משופרת אנו יוצרים תחילה משתמש ספציפי להפעלת השירות ואנו משנים את הרשאות קובץ ה- JAR להפעלה בהתאם:

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

3.1. מערכת V ראשונית

קובץ JAR להפעלה של Spring Boot הופך את תהליך הגדרת השירות לקל מאוד:

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

הפקודה שלעיל יוצרת קישור סמלי לקובץ ה- JAR ההפעלה שלך. עליכם להשתמש בנתיב המלא לקובץ ה- JAR ההפעלה, אחרת הקישור הסמלי לא יפעל כראוי. קישור זה מאפשר לך להפעיל את היישום כשירות:

שירות $ sudo מתחיל את האפליקציה שלך

התסריט תומך בשירות הסטנדרטי הַתחָלָה, תפסיק, איתחול ו סטָטוּס פקודות. יתר על כך:

  • זה מתחיל את השירותים הפועלים תחת המשתמש ביילדונג זה עתה יצרנו
  • הוא עוקב אחר מזהה התהליך של היישום /var/run/your-app/your-app.pid
  • זה כותב יומני קונסולות אל /var/log/your-app.log, שתרצה לבדוק במקרה שהיישום שלך לא יתחיל כראוי

3.2. מערכת

ה systemd הגדרת השירות פשוטה מאוד גם כן. ראשית, אנו יוצרים סקריפט בשם your-app.service בעזרת הדוגמה הבאה והכנס אותה / etc / systemd / system מַדרִיך:

[יחידה] תיאור = יישום אתחול קפיצי After = syslog.target [Service] User = baeldung ExecStart = / path / to / your-app.jar SuccessExitStatus = 143 [Install] WantedBy = multi-user.target

זכור לשנות תיאור, מִשׁתַמֵשׁ ו ExecStart שדות שיתאימו ליישום שלך. אתה אמור להיות מסוגל לבצע את פקודות השירות הסטנדרטיות האמורות גם בשלב זה.

בניגוד ל מערכת V init בגישה המתוארת בסעיף הקודם, יש להגדיר את קובץ מזהה התהליך ואת קובץ יומן המסוף בצורה מפורשת באמצעות שדות מתאימים בסקריפט השירות. ניתן למצוא כאן רשימה ממצה של אפשרויות.

3.3. התחלה

Upstart הוא מנהל שירות מבוסס אירועים, תחליף פוטנציאלי ל- מערכת V init שמציע שליטה רבה יותר על התנהגות הדמונים השונים.

לאתר הוראות התקנה טובות שצריכות לעבוד כמעט בכל הפצת לינוקס. כשאתה משתמש באובונטו אתה כנראה מותקן ומוגדר כבר (בדוק אם יש עבודות עם שם שמתחיל ב"התחלה "ב / etc / init).

אנו יוצרים עבודה your-app.conf כדי להתחיל ביישום Spring Boot שלנו:

# מקום ב /home/{user}/.config/upstart תיאור "איזשהו יישום אתחול האביב" חוזר שוב # ניסיון שירות מחדש אם מפסיק בפתאומיות java -jar /path/to/your-app.jar 

כעת הפעל "הפעל את האפליקציה שלך" והשירות שלך יתחיל.

Upstart מציע אפשרויות תצורת עבודה רבות, את רובן תוכלו למצוא כאן.

4. בחלונות

בחלק זה אנו מציגים כמה אפשרויות העשויות לשמש להפעלת Java JAR כשירות Windows.

4.1. עטיפת שירות של חלונות

עקב קשיים ברישיון GPL של ה- Java Service Wrapper (ראה סעיף משנה הבא) בשילוב עם למשל רישיון ה- MIT של ג'נקינס, פרויקט Windows Service Wrapper, הידוע גם בשם winsw, נולדה.

Winsw מספק אמצעים פרוגרמטיים להתקנה / הסרה / הפעלה / הפסקת שירות. בנוסף, ניתן להשתמש בו להפעלת כל סוג של הפעלה כשירות תחת Windows, ואילו Java Service Wrapper, כמשתמע משמו, תומך רק ביישומי Java.

ראשית, אתה מוריד את הקבצים הבינאריים כאן. לאחר מכן, קובץ התצורה המגדיר את שירות Windows שלנו, MyApp.xml, צריך להיראות כך:

 MyApp MyApp זה מפעיל אתחול האביב כשירות. java -Xmx256m -jar "% BASE% \ MyApp.jar" לסובב 

לבסוף, עליך לשנות את שם ה- winsw.exe ל MyApp.exe כך ששמו יתאים ל- MyApp.xml קובץ תצורה. לאחר מכן תוכל להתקין את השירות כך:

התקנת $ MyApp.exe

באופן דומה, אתה יכול להשתמש הסר התקנה, הַתחָלָה, תפסיק, וכו.

4.2. עטיפת שירות Java

אם לא אכפת לך מרישיון GPL של פרויקט Java Service Wrapper, חלופה זו עשויה לתת מענה לצרכים שלך להגדיר את קובץ ה- JAR שלך כשירות Windows באותה מידה. ביסודו של דבר, ה- Java Service Wrapper גם דורש ממך לציין בקובץ תצורה המפרט כיצד להפעיל את התהליך כשירות תחת Windows.

מאמר זה מסביר בצורה מפורטת מאוד כיצד להגדיר ביצוע כזה של קובץ JAR כשירות תחת Windows, כך שאין לנו צורך לחזור על המידע.

5. הפניות נוספות

יישומי Spring Boot עשויים להיות מופעלים גם כשירות Windows באמצעות Procrun של פרוייקט Apache Commons Daemon. Procrun הוא קבוצת יישומים המאפשרים למשתמשי Windows לעטוף יישומי Java כשירותי Windows. ניתן להגדיר שירות כזה שיפתח אוטומטית כאשר המכונה תתחיל ותמשיך לפעול מבלי שאף משתמש יהיה מחובר.

פרטים נוספים על הפעלת יישומי Spring Boot תחת Unix נמצאים כאן. ישנן הוראות מפורטות כיצד לשנות קבצי יחידות Systemd עבור מערכות מבוססות Redhat. סוף כל סוף

לבסוף, הדרכה מהירה זו מתארת ​​כיצד לשלב סקריפט Bash בקובץ ה- JAR שלך, כך שהוא יהפוך בעצמו להפעלה!

6. מסקנה

השירותים מאפשרים לך לנהל את מצב היישומים שלך ביעילות רבה, וכפי שראינו, הגדרת השירות ליישומי Spring Boot היא כעת קלה מתמיד.

רק זכרו לעקוב אחר אמצעי האבטחה החשובים והפשוטים על הרשאות המשתמש להפעלת השירות שלכם.