• 25.生产上发布安装Spring-Boot应用


    之前的jar运行可通过 java -jar project.jar/java -jar project.jar -debug      

    除了使用java -jar运行Spring引导应用程序之外,还可以为Unix系统提供有效的可执行应用程序。一个完全可执行的jar可以像任何其他可执行二进制文件一样执行,也可以通过注册init.d或systemd。这使得安装非常容易在通用的生产环境中管理Spring引导应用程序。

    警告:

           完全可执行的jar正常运行是在文件的前面嵌入额外的脚本。目前,有些工具不接受这种格式,因此可能不总是使用这种技术。例如,jar -xf可能静默地不能提取一个已被完全执行的jar或war。如果您打算直接执行它,而不是使用java -jar或将其部署到servlet容器,那么建议您只将jar或war完全执行。

    创建一个完全可以运行的jar Maven配置

    <plugin>
            <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
       <configuration>
           <executable>true</executable>
       </configuration>

    </plugin>

    你可以通过键入./my-application.jar来运行你的应用程序(应用程序maven中artifactId的名称,前提是这个jar文件必须有x权限 chmod u+x   project.jar),包含jar的目录将用作应用程序的工作目录。

    SpringBoot应用程序可以很容易地作为Unix/Linux服务启动,使用init.d或systemd。

    • 安装作为init.d服务

         如果你已经配置了Spring Boot的Maven或Gradle插件来生成一个完全可执行的jar,并且你没有使用embeddedLaunchScript ,那么你的应用程序就可以作为一个init.d服务。简单地将jar符号链接到init.d支持标准start、restart和status。

    支持以下的特性:

    作为拥有jar文件的用户启动服务。只要用户有权限就可以启动 ,可以通过chown去配置

    应用用PID位置/var/run/<appname>/<appname>.pid

    控制台打印的日志为 /var/log/<appname>.log

    假设你的Spring Boot应用在/var/myapp,如果将Spring Boot程序作为init.d服务,创建的软连接为:

    $ sudo ln -s /var/myapp/myapp.jar /etc/init.d/   赋予root权限创建软连接

    创建软连接成功后启动项目

    $ service myapp start

    显示:Running [5029]

    以上步骤笔者在一台虚拟机上操作,报Unable to find java(对于这个问题还没有找到解决的方式,可能是JDK安装的有问题),在公司的物理服务器上运行操作是正常的。

    如果应用启动失败,可以检查启动时的日志/var/log/<appname>.log

    官方建议不要用root用户来启动在init.d中配置的spring boot服务,所以你应该建一个用户专门来启动你的spring boot服务。

    chown bootapp:bootapp your-app.jar

    $ sudo ln -s /var/myapp/your-app.jar /etc/init.d/

    为了复制启动修改你的jar文件,应该配置如下权限:

    $ chmod 500 your-app.jar   //只有自己有读和执行的权限

    • 安装作为systemd

          Systemd是System V init系统的继承者,现在正在被许多现代的Linux发行版所使用。尽管你可以继续使用init.d,也可以使用systemd ' service '脚本启动Spring引导应用程序。

          假设您在/var/myapp中安装了Spring Boot应用程序,将Spring Boot应用程序安装为systemd服务,创建在/etc/systemd/system目录下创建一个名为myapp的脚本(应该有x权限),具体示例如下:

    [Unit]
    Description=myapp
    After=syslog.target
    [Service]
    User=myapp #服务执行用户
    ExecStart=/var/myapp/myapp.jar #安装路径
    SuccessExitStatus=143
    [Install]
    WantedBy=multi-user.target

    注意:记住要更Description, User 和ExecStart字段,改成你的应用。

    注意,ExecStart字段没有声明脚本操作命令,这意味着默认情况下使用run命令。

    接着:

    (1) $ systemctl enable myapp.service

    (2) $ systemctl start myapp.service 

    (1),(2)命令必须执行

    systemctl status myapp.service 查看状态

     微信公众号

     

     

  • 相关阅读:
    打开 ASP.NET 配置设置窗体
    WCF中Service Configuration Editor的使用方法
    使用Process类调用EXE程序出错的问题
    C#子窗口关闭父窗口
    WCF客户端代理文件创建和使用中的问题
    JS 中的文件操作
    WCF在 IIS上面 部署的步骤
    asp.net中怎么将json格局的数据添加下拉菜单
    计算两个日期相差的天数
    SQL语句解释大全
  • 原文地址:https://www.cnblogs.com/niugang0920/p/12196379.html
Copyright © 2020-2023  润新知