ในที่สุดการเรียนรู้ของ Springboot ก็สิ้นสุดลง แต่ก็ยังทำให้เรามีคำถามนั่นคือโปรแกรมควรปรับใช้บนเซิร์ฟเวอร์ Linux ได้อย่างไร โปรแกรมจะปิดตัวลงหรือไม่หาก SSH ถูกตัดการเชื่อมต่อหลังจากเริ่มโปรแกรมด้วยคำสั่ง? ปัญหาแรกคือการแก้ปัญหาง่ายขึ้น คุณจะต้องตรวจสอบให้แน่ใจว่า JDK ได้รับการติดตั้งอย่างถูกต้องและจะไม่มีปัญหาใหญ่ ปัญหาที่ยุ่งยากคือหลัง กุญแจสำคัญในการแก้ปัญหาคือเพื่อให้แน่ใจว่าโปรแกรมทำงานในกระบวนการ daemon (พื้นหลัง) เวลานี้ฉันจะแบ่งปันวิธีการปรับใช้โปรแกรมอย่างถูกต้องภายใต้ Linux
เพื่อแก้ปัญหานี้ฉันตรวจสอบข้อมูลบนอินเทอร์เน็ตและพบโซลูชัน 3 วิธีต่อไปนี้
1 แพ็คเกจขวดลงในบริการระบบ (ไม่แนะนำ)
ข้อเสียของวิธีนี้ก็ค่อนข้างชัดเจนนั่นคือบริการมีแนวโน้มที่จะไม่เริ่มต้นเนื่องจากการแจกแจง Linux ที่แตกต่างกันมีความแตกต่างมากหรือน้อยในระดับเดียวกัน
2 ใช้คำสั่ง nohup เพื่อร่วมมือกับ Kill -9 xxx
วิธีนี้ง่ายกว่าที่จะยอมรับและเป็นการประนีประนอม แต่มันจะลำบากมากขึ้นในการหยุดโปรแกรมและใช้คำสั่งเพื่อค้นหากระบวนการแล้วใช้ Kill -9
3 ใช้หน้าจอ TMUX ฯลฯ (แนะนำ)
เมื่อพิจารณาถึงวิธีการนี้อย่างครอบคลุมมันเป็นวิทยาศาสตร์มากขึ้นเพราะมีอินเทอร์เฟซแบบครบวงจรและฟังก์ชั่นที่สอดคล้องกันเพื่อจัดการหลายเซสชันซึ่งใช้งานได้ง่ายขึ้น ข้อเสียคือต้องมีค่าใช้จ่ายในการเรียนรู้เล็กน้อย
คำสั่ง TMUX ที่ใช้กันทั่วไป:
$ tmux new -s session -name สร้างเซสชันใหม่
$ tmux a -t session -name การเข้าถึงเซสชันที่ระบุ
$ tmux detach /$ ctrl-b d ยกเลิกการเชื่อมต่อเซสชันปัจจุบัน
$ tmux kill-session -t session-name ปิดเซสชัน
$ tmux ls แสดงเซสชันทั้งหมด
คำสั่งหน้าจอทั่วไป:
$ screen -s window -name สร้างเซสชันใหม่
$ screen -r หมายเลขเซสชันหรือชื่อเพื่อเข้าถึงเซสชันเซสชัน/การเชื่อมต่อที่ระบุ
$ screen -ls แสดงเซสชันทั้งหมด
CTRL+AB แยกเซสชันปัจจุบัน
ctrl+ak
ต่อไปนี้เป็นความแตกต่างของพวกเขา แม้ว่า TMUX จะมีความก้าวหน้ามากขึ้น แต่วิธีการเลือกขึ้นอยู่กับพฤติกรรมการใช้งานของทุกคน
TMUX คล้ายกับหน้าจอ แต่ดีกว่าหน้าจอ ในการถามว่าสิ่งที่ดีอยู่ที่ไหนคำตอบง่ายๆคือแม้ว่าฟังก์ชั่นของหน้าจอจะเหมือนกัน TMUX ได้รับการออกแบบดีกว่า หน้าจอพร้อมใช้งาน แต่ไม่เสถียร
นี่คือสถานที่บางแห่งที่ TMUX ไปไกลกว่าหน้าจอ:
Springboot สะดวกกว่าในการใช้ Maven กับแพ็คเกจ ตรวจสอบการกำหนดค่าของ pom.xml เมื่อบรรจุภัณฑ์เพื่อให้แน่ใจว่ามีการกำหนดค่าดังต่อไปนี้:
<สร้าง> <plugins> <plugin> <molin> <sloupid> org.springframework.boot </groupid> <ratifactid> Spring-Boot-Maven-Plugin </artifactid> <การกำหนดค่า> <!-Fork: หากไม่มีการกำหนดค่านี้ <Executable> True </Executable> </การกำหนดค่า> </plugin> </plugins> lt;/build>
เพียงแค่ใช้ Maven ติดตั้งสำหรับบรรจุภัณฑ์ หากแพ็คเกจพบ JAR และเปลี่ยนชื่อได้สำเร็จให้อัปโหลดไปยังเซิร์ฟเวอร์ Linux เพื่อขออนุญาต
วิธีนี้แอปพลิเคชันเริ่มต้นแม้ว่าบรรทัดคำสั่งจะถูกปิดหรือตัดการเชื่อมต่อจาก SSH มันจะไม่ส่งผลกระทบต่อการทำงานปกติของโปรแกรม
ตัดการเชื่อมต่อ
หลังจากเซสชันเสร็จสิ้นโปรแกรมจะถูกปิดดังที่แสดงด้านล่าง
การใช้หน้าจอนั้นคล้ายกับ TMUX มันได้รับการฝึกฝนที่นี่ดังนั้นฉันจึงปรับใช้โปรแกรมเพื่อทำงานในพื้นหลัง เอฟเฟกต์ของการเลือกหน้าจอและ TMUX นั้นคล้ายคลึงกัน
PS: นี่คือคำอธิบายของการปรับใช้ Spring-Boot ใน Linux
ก่อนอื่น Maven ทำความสะอาดโครงการจากนั้น Maven ติดตั้งไว้ในแพ็คเกจ Jar ในโครงการจากนั้นลบกระบวนการรุ่นก่อนหน้าบน Linux
ตรวจสอบคำสั่ง PS -EF | Grep Java
ฆ่ากระบวนการฆ่า -9 หมายเลขกระบวนการ
เรียกใช้โครงการ Spring -Boot โดยตรง nohup java -jar sinocube.jar & ใช้ nohup เพื่อจบด้วย &
Nohup กลับไปที่ไฟล์บันทึกเอาต์พุต ไฟล์บันทึกสามารถปรับแต่งชื่อไฟล์ค่าเริ่มต้นคือ nohup.nohup.out
cat nohup.out ดูบันทึก nohup.out คือชื่อไฟล์ tailf nohup.out ดูการดูบันทึกแบบเรียลไทม์