1.创建一个system服务文件
在/etc/systemd/system/目录下创建一个以 .service 结尾的文件,例如 your-java-app.service。可以使用sudo命令和文本编辑器创建:
sudo nano /etc/systemd/system/your-java-app.service
在文件中添加类似如下内容:
[Unit]
Description=Your Java Application
After=docker.service
Requires=docker.service
[Service]
ExecStart=/path/to/java -jar /path/to/your-java-app.jar
Restart=always
User=your_user
Group=your_group
[Install]
WantedBy=multi-user.target
请替换以下内容:
Your Java Application:服务的描述。
/path/to/java:Java可执行文件的路径。
/path/to/your-java-app.jar:你的Java应用程序的JAR文件路径。
your_user 和 your_group:Java程序运行的用户和用户组。
Description=Your Java Application:
设置服务的描述信息,用于标识这个服务是做什么的。
After=docker.service:
声明服务会在 docker.service 之后启动。这确保 Docker 服务已经启动后再启动你的 Java 服务。
Requires=docker.service:
声明服务依赖于 Docker 服务。如果 Docker 服务无法启动,该服务也不会启动。
ExecStart=/path/to/java -jar /path/to/your-java-app.jar:
定义了在启动服务时执行的命令。在这里,你使用 Java 可执行文件运行了一个 JAR 文件。确保替换 /path/to/java 和 /path/to/your-java-app.jar 为你实际的 Java 可执行文件路径和应用程序的 JAR 文件路径。(如果在CentOS上安装了OpenJDK(或其他JDK版本),它通常会将java命令添加到系统的PATH中,使其成为全局命令。因此,你可以直接在ExecStart中使用java -jar命令,而不需要提供完整的路径)
Restart=always:
声明服务在退出时总是重新启动。这有助于确保你的 Java 应用程序一直运行。
User=your_user 和 Group=your_group:
指定在容器中运行的进程的用户和用户组。(如果你希望使用 root 用户执行该服务,你可以将 User 和 Group 字段都设置为 root)
WantedBy=multi-user.target:
这个配置项定义了服务所属的target,即服务所期望的运行级别(或 “target”)。在这个例子中,multi-user.target表示多用户模式,即系统已经启动并准备接受用户登录。这个配置项主要规定了服务应该在何时启动。对于一个服务,它可能希望在多用户模式下启动,因为这是系统已经准备好运行用户服务的时刻。
2.重新加载Systemd配置:
保存并关闭编辑器。然后重新加载Systemd配置:
sudo systemctl daemon-reload
3.启动和启用服务:
启动服务并设置为开机自启动:
sudo systemctl start your-java-app
sudo systemctl enable your-java-app
4.检查服务状态:
使用以下命令检查服务状态:
sudo systemctl status your-java-app