springboot项目启动 java -jar详解

前言

在日常开发中,我们启动springboot项目直接运行项目中的启动类就可以了。但是如果需要将jar包在linux服务器上部署,没有启动类又该怎么启动呢?肯定很多小伙伴会说,那不是很简单么,java -jar不就行了么?这里详细介绍下java -jar中一些常用命令参数配置。

微服务启动中配置环境选择

在微服务开发中,如果我们没有使用springcloud config来统一管理各个服务的配置,那么配置文件就由服务本身来进行维护。一个服务需要在开发,测试,生产环境部署。如果只有一个配置文件,在不同环境部署的时候去修改这个配置文件。这种方法可行,但是效率很低而且还很容易出错。所以我们一般会采用多个配置文件。在springboot中, 多环境配置的文件名需要满足 application-{profile}.properties的格式, 其中{profile}对应你的环境标识, 如下所示

  • application-dev.properties 开发环境
  • application-test.properties 测试环境
  • application-prod.properties 生产环境

至于具体哪个配置文件会被加载,需要在 application.properties文件中通过spring.profiles.active 属性来设置,其值对应配置文件中的{profile}值。 如spring.profiles.active = test 就会加载 application-test.properties配置文件内容。所以在java -jar的时候,可以指定配置文件来选择不同的环境配置。如下所示

nohup java -jar myapp.jar --spring.profiles.active=test &

这里需要注意的一点,如果在jar包的包内包外都配置application-*.properties文件,服务启动的时候默认是先采用包外的配置。某个配置项在包外配置文件中没有配置,那么会去包内配置文件去检索,如果依旧没有找到,则服务启动会报错。

端口,堆内存配置

nohup java -Xms500m -Xmx500m -Xmn256m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError
 -jar myapp.jar  --server.port=8080 -verbose:class &

在上面的启动命令中

  • -Xms500m -Xmx500m -Xmn256m -Xss256m 用来设置堆内存
  • -server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存
  • 在排查jar包冲突时,可以指定启动的-verbose:class  打印出启动的应用实际加载类的路径,来排查来源。
  • -XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照
  • --server.port=8080 指定端口

指定输出位置

nohup java -jar -Dlogging.file=/usr/logs/myjar.log myjar.jar &

指定服务启动日志输出的文件。

有的时候日志比较多,导致保存日志的文件比较大,而这些日志没有必要保留。

nohup java -jar  myjar.jar  >/dev/null 2>&1 &

>/dev/null 2>&1。这条命令其实分为两命令,一个是>/dev/null,另一个是2>&1。

1. >/dev/null

这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,不会保存。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

2. 2>&1

这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,其实就是说将错误输出和标准输出都输出都同一个文件。linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。

总结

上面简单介绍了java -jar启动中经常会用到的一些参数配置。都是些基础知识,简单记录下。
 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot是一个非常流行的Java框架,它提供了一种简单、快速的方式来构建和部署Web应用程序。下面是一个简单的Spring Boot项目部署过程。 1. 编写Spring Boot应用程序 首先,你需要编写一个Spring Boot应用程序。这可能需要一些时间和经验,但这里只是简单地提到一些要点: - 确保你的应用程序具有清晰的结构,易于维护和扩展。 - 使用Spring Boot的自动配置功能,尽量减少手动配置。 - 使用Spring Boot的嵌入式Web服务器,如Tomcat或Jetty。 2. 打包应用程序 一旦你编写了Spring Boot应用程序,你需要打包它,以便可以在服务器上运行。你可以使用Maven或Gradle等构建工具来完成此操作。 对于Maven,你只需运行以下命令: ``` mvn clean package ``` 这将生成一个可执行的JAR文件。 3. 部署应用程序 现在你已经有了一个可执行的JAR文件,接下来就是将它部署到服务器上。 你可以选择使用任何云平台(如AWS、Azure、Google Cloud等)或自己的服务器。不过,在这里,我们将专注于如何使用Docker容器来部署应用程序。 以下是一些基本步骤: - 安装Docker并启动Docker服务。 - 创建一个Dockerfile,其中包含有关如何构建Docker镜像的信息。例如: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/myapp.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` - 在Dockerfile所在的目录中运行以下命令,以构建Docker镜像: ``` docker build -t myapp . ``` - 运行以下命令,以在Docker容器中启动应用程序: ``` docker run -p 8080:8080 myapp ``` 现在你的Spring Boot应用程序已经在Docker容器中运行,并且可以通过浏览器访问它了。 以上就是一个简单的Spring Boot项目部署过程。当然,实际情况可能更加复杂,但是如果你遵循这些基本步骤,应该可以轻松地将你的应用程序部署到服务器上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱琴孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值