1 min read

极简JAVA服务进程管理

极简JAVA服务进程管理

虽然当前容器化大行其道,然而还是会有些场景运行java程序使用比较传统systemd去管理,比如本文使用到的方式:

创建用户属组

export user=vqiu
export group=vqiu
export uid=1989

groupadd -g $uid $group
useradd -s /sbin/nologin --system -g $group -u 1989 vqiu

创建目录

sudo mkdir -pv /app         # Jar 包放置目录
sudo mkdir /etc/myapp       # 配置文件目录
sudo cp myapp.jar /app

sudo chown -R $user:$group /app /etc/myapp

systemd 服务变量文件

cat > /etc/myapp/environmentfile<<EOF
ROOT_DIR=/app
EXEC_JAR="myapp.jar"
JAVA_OPTS="-Xms128m -Xmx512m"
WEB_SERVER_PORT="8088"
USER="$user"
EOF

创建systemd 文件

cat >/etc/systemd/system/myapp.service<<EOF
[Unit] Description=My Java App - Spring Boot 
Documentation=https://vqiu.cn
After=network.target 

[Service]
EnvironmentFile=/etc/myapp/environmentfile
Type=simple
User=$user
WorkingDirectory=/app
ExecStart=/usr/bin/java $JAVA_OPTS -jar $EXEC_JAR 
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myapp 
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure 
RestartSec=60
LimitNOFILE=1048576

[Install] 
WantedBy=multi-user.target
EOF