极简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