如何在服务端部署
Spring Boot使用了内嵌容器,因此它的部署方式也变得非常简单,可以将Spring Boot项目打包成独立的jar包来运行,也可以单独打包成war包部署到Tomcat容器中运行,如果大规模的部署Jinkins是比较优秀的选择。
现在Maven、Gradle已经成了我们日常开发必不可少的构建工具,使用这些工具很容易地将项目打包成jar或者war包。
mvn clean package -Dmaven.test.skip=true
-
mvn clean package其实是两条命令,mvn clean是清除项目target目录下的文件,mvn package打包命令。两个命令可以一起执行。
-
-Dmaven.test.skip=true:排除测试代码后进行打包。
什么是上线、部署?
上线是指将开发完成的软件、网站或应用程序部署到生产环境中,使用户可以访问和使用的过程。在软件开发过程中,上线是一个重要的阶段,意味着项目从开发阶段转入实际运行阶段。
项目部署常见的方式有哪些?
- 手动部署,适用于小型项目或者临时测试的情况。开发人员手动将项目文件和代码复制到生产服务器上。使用java -jar 命令后台启动项目
- 自动化脚本部署:编写部署Shell脚本,自动化地将代码和配置文件部署到生产服务器上。
- CI/CD(持续集成/持续部署):通过持续集成和持续部署工具(如Jenkins、docker、k8s、GitLab CI/CD等)实现自动化部署。在代码提交或合并到特定分支时,自动触发构建、测试和部署流程。
- 灰度发布:将新版本部分地、逐步地发布给用户,以降低上线风险。可以通过逐步扩大用户范围,监测新版本的稳定性和性能。
方式一:在本地打包项目,将项目代码上传到服务器,并在服务器运行 使用nohup java –jar xxx.jar &命令来后台运行
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log &
nohup
:表示在后台运行程序,即使关闭终端,程序也会继续运行。java -jar reggie_take_out-1.0-SNAPSHOT.jar
:使用Java运行名为"reggie_take_out-1.0-SNAPSHOT.jar"的程序。&>
:将标准输出(stdout)和标准错误输出(stderr)合并,并重定向到指定的文件。reggie_take_out.log
:指定输出文件的名称为"reggie_take_out.log"。
。&>
:将标准输出(stdout)和标准错误输出(stderr)合并,并重定向到指定的文件。reggie_take_out.log
:指定输出文件的名称为"reggie_take_out.log"。&
:表示将程序放到后台运行。
方式二:使用git+maven+脚本从git拉取代码,并编译运行。
1). 在服务器中安装jdk、git、maven、MySQL,使用git clone命令将git远程仓库的代码克隆下来
A. 确认JDK环境
B. 确认Git环境
C. 确认Maven环境
D. 将我们开发完成的代码推送至远程仓库,并在服务器中克隆下来
#创建java代码存放目录
mkdir -p /usr/local/javaapp
#切换目录
cd /usr/local/javaapp
#克隆代码 , 需要使用自己的远程仓库
git clone https://gitee.com/ChuanZhiBoKe/reggie_take_out.git
2). 将reggieStart.sh文件上传到服务器,通过chmod命令设置执行权限
2.1). 脚本内容如下
#!/bin/sh
echo =================================
echo 自动化部署脚本启动
echo =================================
echo 停止原来运行中的工程
APP_NAME=reggie_take_out
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Stop Process...'
kill -15 $tpid
fi
sleep 2
tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`
if [ ${tpid} ]; then
echo 'Kill Process!'
kill -9 $tpid
else
echo 'Stop Success!'
fi
echo 准备从Git仓库拉取最新代码
cd /usr/local/javaapp/reggie_take_out
echo 开始从Git仓库拉取最新代码
git pull
echo 代码拉取完成
echo 开始打包
output=`mvn clean package -Dmaven.test.skip=true`
cd target
echo 启动项目
nohup java -jar reggie_take_out-1.0-SNAPSHOT.jar &> reggie_take_out.log &
echo 项目启动完成
3). 执行reggieStart.sh脚本文件,自动部署项目
执行完shell脚本之后,我们可以通过 ps -ef|grep java 指令,查看服务是否启动。
4). 关闭防火墙访问系统测试
http://{ip}:{端口号}