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

来源:简书

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

相关文章
|
3天前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
13 1
|
13天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
|
15天前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
40 4
|
17天前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
33 5
|
24天前
|
JavaScript 前端开发 数据安全/隐私保护
Web开发者必看:手把手教你如何轻松播放m3u8流地址,解锁视频播放新技能,让你的项目更上一层楼!
【10月更文挑战第23天】随着互联网技术的发展,m3u8格式因良好的兼容性和高压缩率被广泛用于网络流媒体传输。本文介绍如何在Web端播放m3u8流地址,包括引入视频播放器(如Video.js)、创建播放器容器、初始化播放器及播放m3u8流的具体步骤。此外,还涉及处理加密m3u8流的示例。
81 1
|
1月前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
53 1
|
15天前
|
Java 持续交付 项目管理
使用Maven进行项目管理:提高Java Web开发的效率
Maven 是一款强大的项目管理和构建自动化工具,广泛应用于Java社区。它通过依赖管理、构建生命周期管理、插件机制和多模块项目支持等功能,简化了项目的构建过程,提高了开发效率。本文将介绍Maven的核心功能及其在Java Web开发中的应用。
34 0
WK
|
21天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
36 0
|
.NET Linux C#
Centos 7 搭建.net web项目
现在的.NET Core 1.0版本是一个很小的核心,APIs和工具也并不完整,但是随着.Net Core的不断完善,补充的Apis和创新也会一起整合到.NET Framework中。 安装centos系统 请自行安装或百度教程 安装 libicu包 和 dotnet 温馨提示:如果需要用vsc编辑的话创建项目的时候一定要用普通账号登录否则没有权限,但是生成的时候就需要切换成root权限,否则也会没有权限。
1079 0
|
11天前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第8天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括系统准备、配置安装源、安装 SQL Server 软件包、运行安装程序、初始化数据库以及配置远程连接。通过这些步骤,您可以顺利地在 CentOS 系统上部署和使用 SQL Server 2019。

热门文章

最新文章

下一篇
无影云桌面