本文介绍使用Systemd服务轻松管理Java jar应用程序,Systemd是Linux的系统和服务管理器,它现在是许多发行版的默认初始化系统,包括Ubuntu 16.04/18.04、Debian 8/9、CentOS 7、Arch Linux操作系统。在本部署中,我有一个位于/opt/prod/目录下的Jar文件,根据经验,需要添加一个系统用户,该用户将使用systemd运行应用程序。可以先阅读Systemd入门教程。
一、创建应用程序用户和组 首先为用户创建一个系统组: sudo groupadd -r appmgr 接下来,我们使用默认组创建系统用户jvmapps: sudo useradd -r -s /bin/false -g appmgr jvmapps 确认用户已创建以及是否使用正确的组: # id jvmapps uid=992(jvmapps) gid=986(appmgr) groups=986(appmgr)
二、创建Systemd Service 我们现在可以创建一个systemd服务文件来管理我们的应用程序,需要以root用户身份创建此文件: sudo vim /etc/systemd/system/myapp.service 它具有如下内容: [Unit] Description=Manage Java service [Service] WorkingDirectory=/opt/prod ExecStart=/bin/java -Xms128m -Xmx256m -jar myapp.jar User=jvmapps Type=simple Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target 将User设置为先前创建的,将WorkingDirectory设置为带有jar文件的目录。 -Xms128m和-Xmx256m用于设置应用程序可以使用的最小和最大内存。 完成更改后,为项目目录授予用户和组所有权权限: sudo chown -R jvmapps:appmgr /opt/prod
三、使用systemd启动Java Application服务 接下来要做的是启动应用程序服务,但首先,重新加载systemd,以便它知道添加的新应用程序: sudo systemctl daemon-reload 重新加载后,启动该服务: sudo systemctl start myapp.service 要检查状态,请使用: sudo systemctl status myapp 输出信息如下:
你还可以启用服务以在服务器启动时启动: $ sudo systemctl enable myapp Created symlink from /etc/systemd/system/multi-user.target.wants/myapp.service to /etc/systemd/system/myapp.service. 要重新启动应用程序,请使用: sudo systemctl restart myapp
结语 经过以上操作,已经有一个由Systemd管理的Java应用程序了。
相关主题 |