Systemd μλΉμ€λ‘ μλ° μ ν리μΌμ΄μ μ€ννκΈ°
Run a Java Application as a Service on Linux λ₯Ό μ°Έκ³ ν΄λ³΄λ Systemd
μλΉμ€λ₯Ό μ¬μ©ν΄μ μλ° μ ν리μΌμ΄μ
μ μ€ννκ³ κ΄λ¦¬νλ μλΉμ€λ₯Ό λ±λ‘ν μ μλ€λ κ²μ μκ²λμλ€. κ·Έλμ μλ° μ ν리μΌμ΄μ
μ λ°°ν¬νκΈ° μν μ μ€ν¬λ¦½νΈ
λ₯Ό μμ±νμ¬ μ€ννκ³ μ’
λ£νκ³ λ°°ν¬ν΄μ€κ³€ νλ€. λ°λ©΄μ Nginxμ κ²½μ° ν¨ν€μ§λ‘ μ€μΉνμ¬ μλμΌλ‘ μλΉμ€κ° λ§λ€μ΄μ Έμ μ½κ² μ€νν μ μμλ€. μ κ· νλ‘μ νΈλ‘ μΈν΄ λ°λͺ¨μ© μ ν리μΌμ΄μ
μ μλ‘κ² λ°°ν¬ν΄μΌνλ μꡬμ¬νμ΄ μκ²ΌκΈ°μ μ΄λ²μλ Systemd μλΉμ€λ‘ λ±λ‘νμ¬ κ΄λ¦¬ν΄λ³΄μ.
Systemd μλΉμ€ λ±λ‘νκΈ°
/etc/systemd/system/
ν΄λ νμμ vi
λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄μ μλμ κ°μ΄ μλΉμ€ νμΌμ λ§λ€μ΄μΌ νλ€. μ ν리μΌμ΄μ
λλ μλΉμ€ μ΄λ¦
μ νμΌλͺ
μΌλ‘ μμ±νλ κ²μ μΆμ²νλ€.
/etc/systemd/system/app.service[Unit] Description=Java application service After=syslog.target network.target [Service] Type=simple SuccessExitStatus=143 Restart=on-failure RestartSec=10s User=ubuntu Group=ubuntu WorkingDirectory=/home/ubuntu/ Environment=JAVA_HOME=/home/ubuntu/.sdkman/candidates/java/current ExecStart=/bin/java -jar /home/ubuntu/app.jar ExecStop=/bin/kill -15 $MAINPID [Install] WantedBy=multi-user.target
리λ μ€ μλ²μ μ¬λ¬κ°μ μλ° λ²μ μ νΌμ©νλ κ²½μ° μ ν리μΌμ΄μ μ€ν μ νμν JDK λ²μ μ μ¬μ©ν μ μλλ‘ νκ²½ λ³μλ₯Ό μ§μ νλλ‘ νμ. μκΈ°μΉ μμ μν©μΌλ‘ μ ν리μΌμ΄μ μ΄ μ’ λ£λλ κ²½μ° λ€μ μ€νλ μ μλλ‘ Restart μ΅μ μ μ μ©νλ κ²μ κ³ λ €νμ.
Systemd μλΉμ€ μ€ννκΈ°
service
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μλ° μ ν리μΌμ΄μ
μλΉμ€λ₯Ό μ€ννκ³ μ’
λ£ν μ μμΌλ systemctl
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ μλΉμ€λ₯Ό λ°μνκ³ λ¦¬λ
μ€ μλ²κ° λ€μ μ€νλμ΄ systemd μλΉμ€κ° μ€νλλ©΄ μλμΌλ‘ μμλ μ μλλ‘ enable
λͺ
λ Ήμ΄λ₯Ό μννλ κ²μ΄ μ’λ€.
Termianlsudo systemctl daemon-reload # Systemd μλΉμ€ μμ μ μλ μ€ν λ±λ‘ ubuntu@ubuntu:~$ sudo systemctl enable app.service Created symlink /etc/systemd/system/multi-user.target.wants/app.service β /etc/systemd/system/app.service. sudo systemctl status app.service # sudo service app status ubuntu@ubuntu:~$ sudo service app status β app.service - Java application service Loaded: loaded (/etc/systemd/system/app.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2023-10-12 14:01:24 UTC; 22min ago Main PID: 25835 (java) Tasks: 23 (limit: 2256) Memory: 150.6M CGroup: /system.slice/app.service ββ25835 /bin/java -jar /home/ubuntu/app.jar
κ°λμ© ν¨ν€μ§λ‘ μ€μΉν μλΉμ€λ€μ΄ μκΈ°μΉ μμ μν©μΌλ‘ 리λ μ€ μλ²κ° μ¬μ€νλμμλ μλμΌλ‘ μ€νλμ§ μλ μν©μ΄ μ’ μ’ λ°μνλ€.
μ ν리μΌμ΄μ μ΄ μ μμ μΌλ‘ λμνλ κ²μ κ·ΈμΉμ§ μκ³ λ€μν λ¬Έμ μ λν΄ κ³ λ―Όν΄μΌν νμμ±μ΄ μλ κ² κ°λ€.
μ ν리μΌμ΄μ λ‘κ·Έ μ‘°ννκΈ°
μΌλ°μ μΌλ‘ μ ν리μΌμ΄μ
μ΄ μμ±ν λ‘κ·Έ νμΌμ tail
λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμ¬ μ΄ν΄λ³΄μμΌλ μ ν리μΌμ΄μ
μλΉμ€λ‘ λ±λ‘νμκΈ°μ λ³λμ νμΌλ‘ μ μ₯νλ μ΅μ
μ λμ§ μμλ€λ©΄ journalctl
λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν΄μ λ‘κ·Έλ₯Ό μ‘°νν΄μΌνλ€.
Terminalsudo journalctl -u app.service -f
μ΄μμ€μΈ μ ν리μΌμ΄μ μ΄λ μλΉμ€μ κ²½μ° μ λμνλ μ μ€ν¬λ¦½νΈλ₯Ό κ΅³μ΄ μλΉμ€ λ°©μμΌλ‘ λ°κΎΈμ§λ λ§μ.