从打包方式,javaweb可以打包成war包和jar包两种方式。二者有一定区别,war包通常是Spring MVC项目打包,可执行的jar包通常是Spring Boot项目。
war是一个可以直接运行的web模块,通常用于网站,打成包部署到容器比如Tomcat,war不仅包含java类还可以有HTML页面、图像文件等其他资源。
普通jar包里面通常是java类,打成包便于管理、依赖。但是我们发布时候打的jar包和普通jar包不一样,这种jar包不能被其他项目所依赖,即使被依赖了也不能直接使用其中的类。一般的Spring MVC项目只能打包成war发布,而jar包是作为插件。Spring Boot项目可以打成可执行的jar包,因为Spring Boot内置了Tomcat容器。Spring Boot也可以打包成war,但是不推荐。从war和jar就可以看出来,Spring Boot比Spring MVC更好的做到了前后端分离。
一、部署war包
将war包放到Tomcat安装目录的webapps
文件夹下。启动Tomcat,程序会自动解压开war包。项目部署完毕。尝试访问,如果访问失败可以查看下端口和防火墙。
二、部署jar包
1、运行jar包
java -jar demo.jar
当前ssh窗口被锁定,按CTRL + C或关闭窗口,程序会停止运行。
nohup java -jar demo.jar &
nohup 意思是不挂断运行,当终端关闭时程序仍然运行。
当用 nohup 命令时,所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。&是指在后台运行。
停止程序需使用结束进程的方式。
nohup java -jar demo.jar > ./demo.log 2>&1 &
0表示标准输入,1表示标准输出,2表示标准错误。
>表示重定向,而2>&1中的>&是一个整体,不可分开。
> ./demo.log指定日志文件为demo.log,2>&1表示将标准错误也输出到标准输出中。
2、将jar应用设置为开机自启动服务
可以使用 systemctl 也可以使用 chkconfig 。这里推荐使用systemctl。
- chkconfig 方式
在/etc/init.d/
目录下创建shell脚本demoService.sh:
#!/bin/sh #程序名 RUN_NAME="demo.jar" #jar 位置 JAVA_OPTS=/root/demo.jar LOG_OPTS=/root/demo.log #开始 start() { source /etc/profile; nohup java -jar $JAVA_OPTS >$LOG_OPTS 2>&1 & echo "$RUN_NAME started success." } #结束 stop() { echo "stopping $RUN_NAME ..." kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'` } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo "Userage: $0 {start|stop|restart}" exit 1 esac
设置执行权限
chmod +x /etc/init.d/demoService.sh chmod +x /etc/init.d/demo.jar
chkconfig命令用于检查,设置系统的各种服务。
添加到chkconfig作为系统服务,并设置开机启动:
chkconfig --add demoService.sh (添加为系统服务) chkconfig demoService.sh on (开机自启动) service demoService.sh start(启动服务)
- systemctl方式
- 新建启动脚本
vim start.sh
#!/bin/sh nohup java -jar /usr/local/apps/demo-service/demo.jar > /logs/demo-service.log 2>&1 & echo $! > /var/run/demo-service.pid
- 新建停止脚本
vim stop.sh
#!/bin/sh PID=$(cat /var/run/shiftcalendar.pid) PID_EXIST=$(ps aux | awk '{print $2}'| grep -w $PID) if [ -n "$PID_EXIST" ]; then kill -9 $PID else echo the process $PID is not exist fi
- 添加启动权限
chmod +x start.sh chmod +x stop.sh
在 /usr/lib/systemd/system/
目录下创建服务demo.service
#!/bin/sh [Unit] Description=demo-service After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/root/app/reboot_shell/start.sh ExecStop=/root/app/reboot_shell/stop.sh PrivateTmp=true [Install] WantedBy=multi-user.target
设置为开机自启动服务
systemctl enable demo.service systemctl start demo.service systemctl status demo.service
作者:yaogoodgoodde
链接:https://www.jianshu.com/p/64cbad3673bf
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。