e21014f992
- 7개 sibling clone 후 monitoring.war 빌드 - systemd user unit으로 tomcat 라이프사이클 분리 - /monitoring/login.do 로 readiness probe (120s) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 lines
1.8 KiB
Desktop File
52 lines
1.8 KiB
Desktop File
# DJBank EAPIM Admin — user-scope systemd unit
|
|
#
|
|
# Install (one-time, on the host as `djb`):
|
|
# sudo loginctl enable-linger djb # allow services to outlive ssh logout
|
|
# mkdir -p ~/.config/systemd/user
|
|
# # workflow copies this file in on each deploy; for first boot you can also do:
|
|
# # cp /prod/.../deploy/systemd/eapim-admin.service ~/.config/systemd/user/
|
|
# systemctl --user daemon-reload
|
|
# systemctl --user enable eapim-admin
|
|
# systemctl --user start eapim-admin
|
|
#
|
|
# Why this exists:
|
|
# - `catalina.sh start` + `nohup &` does NOT escape the Gitea Actions runner
|
|
# process group. When the workflow step finishes, the runner sends SIGTERM
|
|
# to the process tree and Tomcat dies seconds after boot.
|
|
# - Running Tomcat as a systemd user service detaches lifecycle from the
|
|
# runner entirely. The workflow just calls `systemctl --user restart` and
|
|
# systemd owns the process.
|
|
|
|
[Unit]
|
|
Description=DJBank EAPIM Admin (Tomcat 9)
|
|
After=network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
|
|
Environment=JAVA_HOME=/apps/opts/jdk17
|
|
Environment=CATALINA_BASE=/prod/eapim/adminportal
|
|
Environment=CATALINA_HOME=/prod/eapim/apache-tomcat-9.0.116
|
|
Environment=CATALINA_PID=/prod/eapim/adminportal/temp/catalina.pid
|
|
|
|
# `catalina.sh run` keeps Tomcat in the foreground so systemd can supervise it.
|
|
ExecStart=/prod/eapim/apache-tomcat-9.0.116/bin/catalina.sh run
|
|
|
|
# Graceful shutdown via Tomcat's shutdown port, 30s window.
|
|
ExecStop=/prod/eapim/apache-tomcat-9.0.116/bin/catalina.sh stop 30
|
|
|
|
# Tomcat returns 143 on SIGTERM during normal stop — treat as success.
|
|
SuccessExitStatus=143
|
|
TimeoutStartSec=180
|
|
TimeoutStopSec=60
|
|
|
|
Restart=on-failure
|
|
RestartSec=10
|
|
|
|
# Memory / fd limits — adjust as needed.
|
|
LimitNOFILE=65535
|
|
|
|
[Install]
|
|
WantedBy=default.target
|