上文中,tomcat配置完成了。接下来我们需要将我们的项目打包部署至tomcat服务器。
传统的Web应用进行打包部署时,通常会打成War包的形式,然后将War包部署到Tomcat等服务器中,而SpringBoot应用使用的是嵌入式Servlet容器,也就是说,SpringBoot应用默认是以jar包形式进行打包部署的,而如果想要使用传统的War包形式进行打包部署,就需要进行一些配置。
由于Spring Boot应用中已经嵌入了Tomcat服务器,所以将Spring Boot应用以默认jar包形式进行打包部署非常简单和方便。
1:项目打jar包
SpringBoot项目maven打包插件配置:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--热部署配置-->
<configuration>
<!--fork:如果没有该项配置,整个devtools不会起作用-->
<fork>true</fork>
</configuration>
</plugin>
打包操作就很简单了,如下图所是示:
如果没有出现其他的错误的话,那你就会在项目根目录下的target目录下发现一个.jar文件,如下图所示:
我们可以通过命令行启动这个jar文件。
java -jar xxxxxx.jar
执行结果如下图所示:
接下来我们在浏览器中访问:
如下效果如下图所示:
后台运行命令:
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 &
2:部署至linux
我的linux服务器系统是centos
app-server-auto.sh:
#!/bin/sh
# chkconfig: 2345 10 90
# description: myservice ....
# ./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):启动脚本app-server-auto.sh拷贝至/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
3:注册服务
(1):创建服务目录
#创建目录
mkdir /usr/share/nginx/html/java
(2):创建应用启动用户并授权
#创建组
getent group java || groupadd -r java
#创建用户
getent passwd java || useradd -r -d /opt -s /bin/nologin -g java java
(3):更改目录权限
chown -R java:java /usr/share/nginx/html/java
(4):注册应用服务
在/usr/lib/systemd/system目录下增加app.service,目录必须是绝对目录
vi /usr/lib/systemd/system/app.service
输入以下内容:
[Unit]
Description=App-server description
After=syslog.target
[Service]
User=java
Group=java
ExecStart=/usr/local/jdk-11.0.22/bin/java -Xms512M -Xmx512M -jar /usr/share/nginx/html/java/app-server.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
刷新命令
systemctl daemon-reload
管理命令(app名字的由来是因为在/usr/lib/systemd/system/下创建的app.service)
#配置开机启动
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
部署成功!!!
二:java项目部署nginx
server {
listen 80;
server_name java.guanchao.site;#填写你的域名
location / {
proxy_pass http://127.0.0.1:7099; # 表示代理到指定的ip地址,就是你之前服务器访问的地址带上端口号
proxy_set_header Host $host;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log /home/logs/java.guanchao.site.log; # 注意注意:需要提前创建在对应路径下创建logs目录,否则重启nginx会报错!
}
重启nginx
systemctl restart nginx
浏览器访问:java.guanchao.site/testsss
如下图所示:
SpringBoot打包jar项目部署nginx成功!
推荐:
Spring Boot官方更推荐使用可执行的JAR(executable JAR)打包方式,而不是WAR文件。Jar方式有如下三个优点
1.方便快捷
2.更好的可移植性
3.更好的性能
有好的建议,请在下方输入你的评论。