springboot war包在centos7 后台运行

一: 脚本启动:

#!/bin/bash
#该脚本为Linux下启动java程序的通用脚本。即可以作为开机自启动service脚本被调用,
#也可以作为启动java程序的独立脚本来使用。
#
#
#警告!!!:该脚本stop部分使用系统kill命令来强制终止指定的java程序进程。
#在杀死进程前,未作任何条件检查。在某些情况下,如程序正在进行文件或数据库写操作,
#可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,
#增加在执行kill命令前的一系列检查。
#

#这里可替换为你自己的执行程序,其他代码无需更改  xxx.war  或者  xxx.jar
APP_NAME=xxx.war


JMX_OPTS=" -Dcom.sun.management.jmxremote.port=28080 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false "
#java虚拟机启动参数
GC_OPTS=" -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -verbose:gc -Xloggc:gc.log ";
OOM_OPTS=" -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/soft/jdump/$APP_NAME";
JAVA_OPTS=" $GC_OPTS $OOM_OPTS -Xms512m -Xmx512m -Djava.awt.headless=true"

if [ ""x != "$JMX_PORT"x ]; then
        JAVA_OPTS="$JAVA_OPTS $JMX_OPTS"
fi


#使用说明,用来提示输入参数
usage() {
    echo "Usage: sh 执行脚本.sh [start|stop|restart|status]"
    exit 1
}
#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动方法
start(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java $JAVA_OPTS -jar $APP_NAME >> log 2>&1 &
  fi
}

#停止方法
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}

#重启
restart(){
  stop
  start
}

#根据输入参数,选择执行对应方法,不输入则执行使用说明
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

 

二:命令启动

nohup java -jar XXX.jar >log &

解释下 >log

command >out.file

command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

可通过jobs命令查看后台运行任务

jobs

那么就会列出所有后台执行的作业,并且每个作业前面都有个编号。

如果想将某个作业调回前台控制,只需要 fg + 编号即可。

fg 23

查看某端口占用的线程的pid

netstat -nlp |grep :9181

<think>好的,用户想了解在CentOS上部署Spring Boot项目的教程或指南。我需要结合提供的三个引用内容来整理步骤。首先,引用[1]详细介绍了两种部署方式:jarwar,并选择了jar方式。用户可能需要知道这两种方式的区别,所以应该先解释一下。然后,步骤方面,引用[1]提到了需要安装JDK和MySQL,如果已经安装可以跳过,所以需要分步骤列出环境准备部分。接着,项目打部分,需要说明Maven打命令和生成jar文件。上传文件可以使用xftp,这部分用户可能熟悉,但需要简要说明。运行jar命令后台运行和指定配置文件,这很重要。然后,引用[2]提到Spring Boot Admin客户端的配置,可能需要提醒用户注意服务端配置,特别是网络相关的设置。引用[3]提到了Docker部署,虽然用户没有直接问,但可以作为优化方法补充进去,因为Docker现在很流行。需要区分传统部署和Docker部署两种方式,让用户有更多选择。另外,注意事项里要提到防火墙设置,比如开放端口,以及如何查看日志,这些是部署后容易遇到的问题。最后生成相关问题的时候,要涵盖优化方法、常见问题、监控以及与传统部署的区别,这样用户可以有进一步了解的途径。需要确保步骤清晰,语言简洁,符合用户的需求,特别是针对CentOS系统的指导,比如使用yum安装软件,处理服务的管理命令等。同时,注意使用正确的格式,数学公式和代码块要正确标注,但这里主要是命令行和配置示例,所以用代码块裹。检查是否有遗漏的步骤,比如环境变量配置,或者数据库的初始化,可能需要用户自行处理,但引用中没有提到,所以暂时不加入。确保所有引用内容恰当标注,比如内嵌Tomcat、Docker的优势等,引用标识放在对应的建议后面。整个过程需要逻辑连贯,逐步引导用户完成部署,同时提供备选方案和常见问题解决方法。</think>### CentOS 部署 Spring Boot 项目指南 #### 一、环境准备 1. **安装 JDK 8+** Spring Boot 项目需要 Java 运行环境。通过以下命令安装 OpenJDK: ```bash yum install java-1.8.0-openjdk-devel ``` 验证安装:`java -version`[^1]。 2. **安装 MySQL 5.7+** 若需使用数据库,通过以下步骤安装 MySQL: ```bash wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm rpm -ivh mysql57-community-release-el7-11.noarch.rpm yum install mysql-community-server systemctl start mysqld ``` 初始化密码:`grep 'temporary password' /var/log/mysqld.log`。 #### 二、项目打与上传 1. **打为可执行 JAR** 在项目根目录执行 Maven 命令: ```bash mvn clean package -DskipTests ``` 生成的 JAR 文件位于 `target/` 目录,文件名格式为 `项目名-版本号.jar`。 2. **上传文件到服务器** 使用 Xftp 或 `scp` 命令上传 JAR 文件: ```bash scp target/your-project.jar user@your-server-ip:/opt/springboot/ ``` #### 三、运行 Spring Boot 项目 1. **启动服务** 通过以下命令运行项目(支持后台运行): ```bash nohup java -jar your-project.jar --spring.profiles.active=prod > app.log 2>&1 & ``` - `--spring.profiles.active=prod` 指定生产环境配置 - `nohup` 和 `&` 实现后台运行 - 日志输出到 `app.log` 2. **验证服务状态** 检查端口是否监听(默认 8080): ```bash netstat -tunlp | grep 8080 ``` #### 四、优化与监控 1. **Spring Boot Admin 集成** 若需监控服务状态,在客户端配置: ```yaml boot: admin: client: url: http://admin-server-ip:port instance: service-url: http://your-server-ip:8080 # 必须显式声明网络地址[^2] ``` 2. **Docker 部署(可选)** 通过容器化部署可简化环境依赖: ```dockerfile FROM openjdk:8-jdk-alpine COPY target/your-project.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] ``` 构建镜像:`docker build -t springboot-app .` 运行容器:`docker run -p 8080:8080 springboot-app`[^3] #### 五、注意事项 1. **防火墙配置** 开放服务端口: ```bash firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload ``` 2. **日志查看** 实时跟踪日志: ```bash tail -f app.log ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值