您的位置:首页 > 编程语言 > Java开发

在Ubuntu上以服务方式运行Java程序

2017-10-17 00:00 295 查看


女主宣言

最近小编在项目中遇到了一个问题,打包的jar文件需要作为服务来使用,但是如何才能保证让jar文件开机自启动呢。小编使用的是Ubuntu的系统,所以查阅了相关资料之后,整理了此篇文章,供大家参考使用。在本文中,我们将使用示例服务包装器,在Ubuntu系统中以服务的方式运行JAR文件。包括自动启动和日志提示。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

假设您有一个JAR文件,您需要将它作为一个服务运行。此外,您希望它在系统重新启动时自动启动。那我们该怎么做呢?

其实,Ubuntu有一个内置的机制来创建自定义服务,使它们能够在系统启动时作为服务启动/停止它们。在这篇文章中,我将分享一个简单而优雅的方法来为您的JAR文件创建一个服务包装器,以便您可以将它作为一个服务运行。我们开始吧。

1

创建一个服务

> sudo vim /etc/systemd/system/my-webapp.service

复制/粘贴以下内容到文件 /etc/systemd/system/my-webapp.service 中:

[Unit]

Description=My Webapp Java REST Service

[Service]

User=ubuntu

# The configuration file application.properties should be here:

#修改为你的工作目录

WorkingDirectory=/home/ubuntu/workspace

#要执行程序的路径

#调用jar文件的shell执行文件

fileExecStart=/home/ubuntu/workspace/my-webapp

SuccessExitStatus=143

TimeoutStopSec=10

Restart=on-failure

RestartSec=5

[Install]

WantedBy=multi-user.target

2

创建调用服务的Bash脚本

下面是调用JAR文件 my-webapp 的bash脚本:

#!/bin/sh

sudo /usr/bin/java -jar my-webapp-1.0-SNAPSHOT.jar server config.yml

不要忘记给脚本授予可执行权限:

$ sudo chmod u+x my-webapp

3

启动服务

$ sudo systemctl daemon-reload

$ sudo systemctl enable my-webapp.service

$ sudo systemctl start my-webapp

$ sudo systemctl status my-webapp

4

设置日志记录

服务设置好之后,我们还需要记录一下日志信息,以供有问题的时候查阅。这里我们使用Linux的新日志系统Journald。

简单介绍下Journald,它是Linux的新日志系统。Journald和systemd绑定。 Journald使用journalctl工具读取日志,默认参数下显示所有日志内容。journalctl不是本文的重点,感兴趣的读者可以自行查阅资料去了解。

我们简单介绍两个参数,使用 -f 选项可以查看实时日志,使用 -n 可以指定日志行数,使用 -u 指定特定单元(同--unit)。

首先执行该命令,

$ sudo journalctl --unit=my-webapp

如果想查看实时日志的话,可以执行:

$ sudo journalctl -f -n 1000 -u spinal-webapp

停止服务:

$ sudo systemctl stop my-webapp

总结

以上就是在Ubuntu下以服务的方式来运行我们java程序的方式。看似很简单的一个功能,但是可以做出不简单的事情,毕竟可以让我们使用其他语言来实现服务。本文以java程序为例,仅仅是抛砖引玉。感兴趣的读者可以去尝试运行一下php、python等语言,或者CentOS、Debian等操作系统。

扫描下方二维码了解更多内容

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: