centos7系统 maven jar包开机自启


centos7系统 maven jar包开机自启


进入系统文件夹

cd /usr/lib/systemd/system

新建开机自启脚本

vim self_priming.service(没有安装vim命令的用vi)

self_priming.service

#!/bin/sh
[Unit]
Description=self_priming
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
ExecStart=/usr/local/data/self_priming/self_priming_start.sh
ExecStop=/usr/local/data/self_priming/self_priming_stop.sh
PrivateTmp=true

[Install]
WantedBy=multi-user.target

代码中启动脚本和停止脚本路径可自定义。

创建启动脚本
进入/usr/local/data/self_priming 目录下

新建脚本self_priming_start.sh

vim self_priming_start.sh

self_priming_start.sh

#!/bin/sh

export JAVA_HOME=/usr/java/jdk
export PATH=$JAVA_HOME/bin:$PATH

nohup java -jar /usr/local/data/self_priming/self_priming.jar > /logs/self_priming.log 2>&1 &

echo $! > /var/run/self_priming.pid

上述代码中jdk路径根据自己路径修改。

新建脚本self_priming_stop.sh

vim self_priming_stop.sh

self_priming_stop.sh

#!/bin/sh

PID=$(cat /var/run/self_priming.pid)

kill -9 $PID

增加权限

chmod +x self_priming_start.sh
chmod +x self_priming_stop.sh

启动maven jar

systemctl status self_priming
systemctl enable self_priming
systemctl disable self_priming
systemctl start self_priming
systemctl stop self_priming

<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、付费专栏及课程。

余额充值