Java 在Ubuntu14.04 LTS中作为init.d服务安装Spring启动应用程序

Java 在Ubuntu14.04 LTS中作为init.d服务安装Spring启动应用程序,java,linux,spring-boot,ubuntu-14.04,init.d,Java,Linux,Spring Boot,Ubuntu 14.04,Init.d,我已经生成了一个Spring Boot应用程序。和maven一起把罐子移到 /var/licence/licence-0.0.1-SNAPSHOT.jar 然后 但是当我打字的时候 lopes@localhost:/var/licence$ service licence start licence: unrecognized service 这些是/etc/init.d/license的属性 这是我的pom.xml: 我知道/etc/init.d只存储脚本文件。 您应该将脚本文件放在那个

我已经生成了一个Spring Boot应用程序。和maven一起把罐子移到

/var/licence/licence-0.0.1-SNAPSHOT.jar
然后

但是当我打字的时候

lopes@localhost:/var/licence$ service licence start
licence: unrecognized service
这些是/etc/init.d/license的属性

这是我的pom.xml:


我知道/etc/init.d只存储脚本文件。 您应该将脚本文件放在那个里,在那个里描述如何启动/停止服务。下面我编写了示例脚本,将其另存为/etc/init.d/license,您可以像这样启动/停止服务 sudo服务许可证启动

本文中的示例脚本详细信息


最好使用systemd单位文件,而不是老式的/etc/init.d。systemd是大多数Linux发行版使用的init系统,集成您的服务不仅更容易在下面看到,而且功能更强大,因为您可以免费获得对其他服务的监督、日志记录功能、依赖关系管理等

关于服务示例,首先需要将license.service放入目录/etc/systemd/system中,其内容如下:

[单位] Description=MyCorp提供的许可证服务 [服务] ExecStart=/var/license/license-0.0.1-SNAPSHOT.jar User=myuser 重新启动=故障时 [安装] WantedBy=default.target 然后运行以下命令:

#>systemctl daemon-reload
#>systemctl enable license
#>systemctl start license

请注意,SpringBoot可以创建一个可执行的JAR,即一个以shell脚本开头的JAR,因此您不需要显式地调用java。有关如何自定义的信息,请参阅。

您是否按照参考指南中的说明创建了可执行jar?是的,我按照参考指南中的说明创建了可执行jar,您使用的是哪个启动版本?您是否检查了日志?如前所述?一个可执行的Spring引导jar是一个如前所述的脚本。您不需要java-jar部分,因为jar应该是如前所述的可执行脚本。谢谢。更新了答案
lrwxrwxrwx   1 root root   46 Mar 27 18:17 licence -> /var/licence/licence-0.0.1-SNAPSHOT.jar
<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>   
                <configuration>
                    <executable>true</executable>
                </configuration>            
            </plugin>
        </plugins>
    </build>
...
#!/bin/sh
SERVICE_NAME=License
PATH_TO_JAR=/var/licence/licence-0.0.1-SNAPSHOT.jar
PID_PATH_NAME=/tmp/License.pid

case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
            nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null & 
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stoping ..."
            kill $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill $PID;
            echo "$SERVICE_NAME stopped ...";
            rm $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
                        echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
esac 
#>systemctl daemon-reload
#>systemctl enable license
#>systemctl start license