SpringBoot Centos7 jar包自启方法

第一种

来源于:https://www.cnblogs.com/zhyg/p/5821684.html

Spring boot 应用服务安装部署(maven工程)

1.首先在maven工程的pom文件中引入以下标签并保存

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

这样就可以将Spring boot工程打包成可执行jar包

打开windows cmd 或linux 命令行  执行打好的可执行jar包 用以下命令就可以执行

java -jar  abcd.jar 就可以执行spring boot 应用程序

2.编辑安装linux服务安装文件

  本人是在windows环境下 用记事本先编辑好再上传到centos7 系统上面的

  (1)首先创建记事本文件

  (2)编写以下语句为了方便粘贴直接上文本

[Unit]
Description=abcd service
After=syslog.target

[Service]
Type=simple
ExecStart= /usr/bin/java -jar /home/app/abcd.jar

[Install]
WantedBy=multi-user.target

说明

Description 服务描述
/usr/bin/java java路径(我这里是绝对路径,可以使用其他可执行java的路径
/home/app/abcd.jar 可执行jar包的路径
然后将文本文件保存成后缀名为.service
上面的文件保存之后 可以是abcd.service

3.上传可执行jar包和.service安装文件
  jar包程序文件上传到自定义的位置(我们会在每个系统用户下定义一个叫app的文件夹将jar包保存在此文件夹)
  .service文件上传到系统/etc/systemd/system 目录下(本人用的是centos7系统,其他系统大同小异酌情处理)(如果你对linux文本编辑熟练的话 可以直接创建文件进行编辑)
  注意编码要一致(验证是否一致只需在linux服务器上打开.service文件看是都和windows一致是否有乱码)
4.在部署服务器上执行以下命令(centos7)
  首先 sudo systemctl daemon-reload 刷新服务配置文件
  然后 sudo systemctl enable abcd.service 设置开机重启(视情况而定)
  再  sudo systemctl start  abcd.service 启动服务
5.查看日志
  sudo journalctl -u abcd.service
以上linux各种操作都是在centos7下 其他版本系统基本差不多只是命令不同

这种方式的确可以实现党运行jar的进程挂掉后重启的效果,但是打印的日志不在jar包服务应该打印的位置。

还有一点是通过这种方式启动后,jar无法正常运行,估计是没有加环境变量导致的,但是没有找到解决方案;这种问题在第二种方法里也存在,但是找到了解决方案。

 

第二种

这种方式是通过crontab定时任务执行shell脚本实现jar包自动重启

先创建一个脚本restart.sh,编辑

#!/bin/sh
source /etc/profile
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/local/java/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/dt.jar:$JAVA_HOME/tools.jar
#java环境变量

jarDir="/var/www/voice.monitor.yuyin.tv/postpro.monitor"
jar="MscMoniter.jar"
logFile="/var/www/voice.monitor.yuyin.tv/postpro.monitor/restart.log"

restart(){
        cd ${2}
        if [ ! -f ${1} ];then
                echo "jar not exist" >> ${logFile}
                return
        fi
        (nohup java -jar ${1} &)
#端口映射       iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
}

check(){    
        count=$(ps -ef | grep ${1} | grep -v "grep")
        if [ -n "${count}" ];then
#               echo "`date` ${1} is running" >> ${logFile}
               echo "`date` ${1} s running"
        else 
                restart ${1} ${2}
                echo "`date` ${1} is down. restartig" >> ${logFile}
#               echo "`date` ${1} is down"

        fi
}   

check ${jar} ${jarDir}

然后通过crontab -e命令创建一个定时任务


*/1 * * * *  /etc/profile;/bin/sh /var/www/voice.monitor.yuyin.tv/postpro.monitor/restart.sh

在这里值得注意的是,/etc/profile;/bin/sh这个环境变量的路径一定要加上,否则会导致jar虽然通过定时任务的执行脚本启动了,但是无法正常运行。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<think>嗯,用户问的是如何在CentOS中运行Spring Boot的jar。我得先理清楚步骤,确保每个环节都准确。首先,用户可能已经有一个打好的jar文件,所以需要确认他们是否已经完成打。如果没打的话,可能需要先指导他们用Maven或Gradle构建项目。 然后,运行jar的基本命令是java -jar,但需要Java环境。CentOS默认可能没有安装Java,或者版本太旧。所以第一步应该是检查Java是否安装,以及版本是否符合要求。Spring Boot通常需要Java 8或更高版本,所以需要提醒用户确认版本,如果没安装的话,指导他们安装OpenJDK或者Oracle JDK。 接下来,用户可能需要让jar在后台运行,特别是服务器环境下。这时候应该介绍nohup和&的用法,或者使用systemd来创建服务,这样更可靠,还能设置开机动。systemd的服务文件配置需要详细说明,比如WorkingDirectory、ExecStart这些参数,还有可能需要的环境变量。 另外,日志管理也是一个重要部分。使用nohup的话,输出可能会被重定向到文件,但用systemd的话,可以通过journalctl来查看日志。这里需要提醒用户正确配置日志路径,方便后续排查问题。 安全问题也不能忽视,比如是否应该以root用户运行应用,或者创建一个专门的用户来运行,以降低权限。还有防火墙设置,确保应用的端口是开放的,可能需要用到firewall-cmd命令。 还有可能用户需要考虑如何优雅地停止应用,比如用kill命令发送SIGTERM信号,或者通过systemd来管理。这部分需要简单说明,避免直接使用kill -9导致数据不一致。 最后,可能需要一些优化建议,比如JVM内存参数的调整,或者结合Nginx做反向代理和负载均衡。这些都是提升应用稳定性和性能的常见做法。 得确保每个步骤都清晰,避免遗漏关键点,同时用用户容易理解的语言,结构分明,逐步引导他们完成整个过程。可能还需要提醒常见的坑,比如文件权限问题,或者端口冲突之类的。总之,目标是让用户按照步骤操作后,能够顺利在CentOS上运行他们的Spring Boot应用。</think>在CentOS系统中运行Spring Boot的JAR需要以下步骤,分为环境准备、运行配置和优化管理三个阶段: --- ### 一、环境准备 1. **安装Java环境** ```bash # 查看是否已安装Java java -version # 安装OpenJDK 11(推荐) sudo yum install -y java-11-openjdk-devel # 验证安装 which java ``` 2. **上传JAR** ```bash # 使用scp或sftp上传文件到服务器 scp your-app.jar user@centos-server:/opt/app/ ``` --- ### 二、基础运行方式 1. **直接运行** ```bash # 前台运行(退出终端会终止进程) java -jar your-app.jar # 后台运行(退出终端仍保持运行) nohup java -jar your-app.jar > app.log 2>&1 & ``` 2. **查看进程** ```bash ps -ef | grep java ``` --- ### 三、生产环境优化方案 #### 方案1:Systemd服务管理(推荐) 1. **创建服务文件** ```bash sudo vi /etc/systemd/system/springboot-app.service ``` 2. **服务配置模板** ```ini [Unit] Description=Spring Boot Application After=syslog.target [Service] User=appuser WorkingDirectory=/opt/app ExecStart=/usr/bin/java -Xms512m -Xmx1024m -jar your-app.jar SuccessExitStatus=143 Restart=always [Install] WantedBy=multi-user.target ``` 3. **操作命令** ```bash # 重载服务配置 sudo systemctl daemon-reload # 动服务 sudo systemctl start springboot-app # 设置开机动 sudo systemctl enable springboot-app # 查看日志 journalctl -u springboot-app -f ``` #### 方案2:Docker容器化部署 1. **创建Dockerfile** ```dockerfile FROM openjdk:11-jre VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] ``` 2. **构建并运行** ```bash docker build -t springboot-app . docker run -d -p 8080:8080 --name myapp springboot-app ``` --- ### 四、关键注意事项 1. **防火墙配置** ```bash sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload ``` 2. **日志管理** - 推荐使用`logrotate`进行日志切割 - Spring Boot默认日志路径:`/var/log/springboot-app/` 3. **内存调优** ```bash # 根据服务器配置调整JVM参数 java -Xms1g -Xmx2g -XX:MaxMetaspaceSize=512m -jar your-app.jar ``` 4. **健康检查** ```bash curl http://localhost:8080/actuator/health ``` --- ### 五、故障排查技巧 1. **查看动错误** ```bash journalctl -u springboot-app --since "5 minutes ago" ``` 2. **强制终止进程** ```bash # 查找进程ID ps -ef | grep java # 优雅关闭 kill -15 <PID> # 强制终止(慎用) kill -9 <PID> ``` 建议优先使用Systemd方案,它能提供完整的服务生命周期管理、自动重、日志集成等功能,更适合生产环境使用。对于需要快速迭代的场景,Docker方案可以简化环境依赖管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值