CentOS部署Java Web项目

简介: CentOS部署Java Web项目

从打包方式,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方式
  1. 新建启动脚本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
  1. 新建停止脚本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
  1. 添加启动权限

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

来源:简书

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
2天前
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
38 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
16天前
|
前端开发 Java 程序员
菜鸟之路day02-04拼图小游戏开发一一JAVA基础综合项目
本项目基于黑马程序员教程,涵盖面向对象进阶、继承、多态等知识,历时约24小时完成。项目去除了登录和注册模块,专注于单机游戏体验。使用Git进行版本管理,代码托管于Gitee。项目包含窗体搭建、事件监听、图片加载与打乱、交互逻辑实现、菜单功能及美化界面等内容。通过此项目,巩固了Java基础并提升了实际开发能力。 仓库地址:[https://gitee.com/zhang-tenglan/puzzlegame.git](https://gitee.com/zhang-tenglan/puzzlegame.git)
35 6
|
2月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
521 8
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
19天前
|
算法 搜索推荐 Java
【潜意识Java】深度解析黑马项目《苍穹外卖》与蓝桥杯算法的结合问题
本文探讨了如何将算法学习与实际项目相结合,以提升编程竞赛中的解题能力。通过《苍穹外卖》项目,介绍了订单配送路径规划(基于动态规划解决旅行商问题)和商品推荐系统(基于贪心算法)。这些实例不仅展示了算法在实际业务中的应用,还帮助读者更好地准备蓝桥杯等编程竞赛。结合具体代码实现和解析,文章详细说明了如何运用算法优化项目功能,提高解决问题的能力。
54 6
|
19天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
51 4
|
23天前
|
Java
CentOS7.8配置Adoptium-Java17运行环境
本指南介绍如何设置清华镜像源并安装 Temurin-17-JRE 运行环境。首先,编辑 `/etc/yum.repos.d/adoptium.repo` 文件,配置清华镜像源。接着,使用 `yum install -y temurin-17-jre` 命令安装 Temurin-17-JRE,并通过 `java --version` 验证安装成功。相关配置和操作界面截图附后。
40 8
|
1月前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
83 17
|
2月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
166 26
|
3月前
|
XML Java 测试技术
从零开始学 Maven:简化 Java 项目的构建与管理
Maven 是一个由 Apache 软件基金会开发的项目管理和构建自动化工具。它主要用在 Java 项目中,但也可以用于其他类型的项目。
98 1
从零开始学 Maven:简化 Java 项目的构建与管理
|
3月前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。