Centos部署Springboot项目详解

准备启动jar包,app.jar放入指定目录。

一、命令启动

1、启动命令

复制代码
java -jar app.jar

2、后台运行

复制代码
nohup java -jar app.jar >/dev/null 2>&1 &

加入配置参数命令

复制代码
nohup java -Xms512M -Xmx512M -jar app.jar --server.port=9080 spring.profiles.active=prod >nohup.out 2>&1 &

随着配置参数越来越多,可创建启动脚本一键启动。

二、脚本启动

1、简单脚本

复制代码
vi start.sh

拷贝一下内容

复制代码
#!/bin/bash

#自定义
RESOURCE_NAME=test-server
SERVER_PORT=8080

#停止服务
PID=$(ps -ef | grep $RESOURCE_NAME  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
   echo $RESOURCE_NAME Application is already stopped
else
    kill $PID
    echo  $RESOURCE_NAME Application stopped successfully  pid = $PID
fi

#不输出启动日志
nohup java -jar $RESOURCE_NAME.jar \
--server.port=$SERVER_PORT \
--spring.profiles.active=prod \
>/dev/null 2>&1 &

#不输出日志
#>/dev/null 2>&1 &
#输出错误日志
#>/dev/null 2>nohup_err.out & 
#输出全部日志
#>nohup.out 2>&1 &

echo $RESOURCE_NAME Application started successfully

脚本授权

复制代码
chmod 775 start.sh

2、升级脚本

复制代码
vi app.sh

拷贝一下内容

复制代码
#!/bin/sh
# ./app.sh start 启动 stop 停止 restart 重启 status 状态
AppName=app-server.jar
#应用端口
SERVER_PORT=8080
# JVM参数
JVM_OPTS="-Dname=$AppName  -Duser.timezone=Asia/Shanghai -Xms512m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps  -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"

if [ "$1" = "" ];
then
    echo -e "\033[0;31m 未输入操作名 \033[0m  \033[0;34m {start|stop|restart|status} \033[0m"
    exit 1
fi

if [ "$AppName" = "" ];
then
    echo -e "\033[0;31m 未输入应用名 \033[0m"
    exit 1
fi

function start()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`

	if [ x"$PID" != x"" ]; then
	    echo "$AppName is running..."
	else
		nohup java $JVM_OPTS -jar $AppName\
		--server.port=$SERVER_PORT \
		--spring.profiles.active=mysql-test \
		--jasypt.encryptor.password=123456 \
		 > /dev/null 2>&1 &
		echo "Start $AppName success..."
	fi
}

function stop()
{
    echo "Stop $AppName"

	PID=""
	query(){
		PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
	}

	query
	if [ x"$PID" != x"" ]; then
		kill -TERM $PID
		echo "$AppName (pid:$PID) exiting..."
		while [ x"$PID" != x"" ]
		do
			sleep 1
			query
		done
		echo "$AppName exited."
	else
		echo "$AppName already stopped."
	fi
}

function restart()
{
    stop
    sleep 2
    start
}

function status()
{
    PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
    if [ $PID != 0 ];then
        echo "$AppName is running..."
    else
        echo "$AppName is not running..."
    fi
}

case $1 in
    start)
    start;;
    stop)
    stop;;
    restart)
    restart;;
    status)
    status;;
    *)

esac

3、开机启动

方式一

1、启动脚本拷贝至/etc/rc.d/init.d目录

注:需要把启动脚本中的路径都修改成绝对路径

2.给脚本app-server-auto.sh和jar包app-server.jar 添加权限

复制代码
sudo chmod +x /etc/init.d/app-server-auto.sh
sudo chmod +x /home/xxx/app-server.jar 

3.添加到chkconfig 并把chkconfig作为系统服务 然后设置开机自启

复制代码
#添加为系统服务
sudo chkconfig --add  app-server-auto.sh
#设置为开机启动
sudo chkconfig app-server-auto.sh on 
# 启动服务 查看脚本是否正确
sudo service app-server-auto.sh start

方式二

1、编辑/etc/rc.d/rc.local文件

复制代码
vi /etc/rc.d/rc.local

2、拷贝以下内容

复制代码
source /etc/profile && cd /home/hello/application/app-server && ./start.sh

重启机器就可以测试了

三、注册服务

1、创建服务目录

复制代码
#创建目录
mkdir /var/app 

2、创建应用启动用户并授权

复制代码
#创建组
getent group app|| groupadd -r app
#创建用户
getent passwd app || useradd -r -d /opt -s /bin/nologin -g app app

3、更改文件夹权限

复制代码
chown -R app:app /var/app

4、注册应用服务

在/usr/lib/systemd/system目录下增加app.service,目录必须是绝对目录

复制代码
vi /usr/lib/systemd/system/app.service

拷贝以下内容

复制代码
[Unit]
Description=App-server description
After=syslog.target

[Service]
User=app
Group=app

ExecStart=/usr/java/jdk1.8.0_202/bin/java -Xms512M -Xmx512M -jar /var/app/app-server.jar
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

刷新命令

复制代码
systemctl daemon-reload

5、管理命令

复制代码
#配置开机启动
systemctl enable app
#删除开机启动
systemctl disable app
#启动
systemctl start app
#停止
systemctl stop app
#重启
systemctl restart app
查看启动状态
systemctl status app
#刷新服务
systemctl daemon-reload
#查看日志
journalctl -u springboot.service

推荐一个免费的pdf转换网站,包含pdf转word、pdf拆分等功能。

PDF转换网站http://test.aipaca-cbec.com/index

相关推荐
跟着珅聪学java30 分钟前
spring boot +Elment UI 上传文件教程
java·spring boot·后端·ui·elementui·vue
我命由我1234535 分钟前
Spring Boot 自定义日志打印(日志级别、logback-spring.xml 文件、自定义日志打印解读)
java·开发语言·jvm·spring boot·spring·java-ee·logback
战族狼魂4 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
用键盘当武器的秋刀鱼7 小时前
springBoot统一响应类型3.5.1版本
java·spring boot·后端
小李同学_LHY8 小时前
三.微服务架构中的精妙设计:服务注册/服务发现-Eureka
java·spring boot·spring·springcloud
爱喝醋的雷达10 小时前
Spring SpringBoot 细节总结
java·spring boot·spring
嘵奇12 小时前
深入解析 Spring Boot 测试核心注解
java·spring boot·后端
技术liul13 小时前
解决Spring Boot Configuration Annotation Processor not configured
java·spring boot·后端
WSSWWWSSW14 小时前
安装nfs客户端(centos)
linux·运维·centos
步木木15 小时前
Anaconda和Pycharm的区别,以及如何选择两者
ide·python·pycharm