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

来源:简书

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

相关文章
|
1天前
|
前端开发 Python
前后端分离的进化:Python Web项目中的WebSocket实时通信解决方案
在现代Web开发领域,前后端分离已成为一种主流架构模式,它促进了开发效率、提升了应用的可维护性和可扩展性。随着实时数据交互需求的日益增长,WebSocket作为一种在单个长连接上进行全双工通讯的协议,成为了实现前后端实时通信的理想选择。在Python Web项目中,结合Flask框架与Flask-SocketIO库,我们可以轻松实现WebSocket的实时通信功能。
9 2
|
28天前
|
Java Maven Android开发
解锁Web开发新技能:从零开始的Struts 2之旅——让你的Java编程之路更加宽广,首个应用实例带你飞!
【8月更文挑战第31天】对于初学者,掌握 Struts 2 框架不仅能提升 Web 开发能力,还能深入了解 MVC 架构。Struts 2 是一个基于 Servlet 的 Java 框架,提供表单验证、文件上传、国际化等功能,便于快速构建易维护的 Web 应用。本文通过示例演示如何从零开始搭建环境并创建一个简单的 Struts 2 项目,包括配置 `struts.xml`、编写 Action 类及视图文件,并配置 web.xml。通过这些步骤,你将学会基本的开发流程,为进一步学习高级功能打下基础。
34 0
|
28天前
|
开发者 Java 安全
Struts 2 实战秘籍:Action 驱动业务,配置文件成就高效开发!
【8月更文挑战第31天】Struts 2 框架作为 Apache 软件基金会的顶级项目,广泛应用于企业级 Web 应用开发。其核心组件 Action 类处理用户请求,而配置文件定义请求与 Action 类间的映射关系。掌握 Action 组件的最佳实践包括继承 `ActionSupport` 类、实现 `execute` 方法及使用类型安全的方法;配置文件的最佳实践则涉及组织 Action 到包中、定义全局结果及使用通配符映射。遵循这些最佳实践,可构建高效、可维护的 Web 应用程序。
30 0
|
28天前
|
Java 数据库连接 Spring
Struts 2 插件开发竟如魔法盛宴,为框架注入超能力,开启奇幻编程之旅!
【8月更文挑战第31天】在Web开发中,Struts 2插件开发允许我们在不改动框架核心代码的前提下,通过创建实现特定接口的Java类来扩展框架功能、调整其行为或促进与其他框架(如Spring、Hibernate)的集成,从而更好地满足特定业务需求。遵循良好的设计原则与实践,能够确保插件的高效稳定运行并提升整体项目的可维护性。具体步骤包括创建项目、定义插件类、实现初始化与销毁逻辑,并将插件部署至应用中。
45 0
|
28天前
|
前端开发 Java UED
告别页面刷新时代:Struts 2 Ajax技术揭秘,轻松实现动态加载,Web应用焕然一新!
【8月更文挑战第31天】在Web应用开发中,用户体验至关重要。为减少页面刷新带来的不适,Ajax技术应运而生。Struts 2作为流行的Java EE框架,通过内置的Ajax支持简化了无刷新页面动态加载的实现。本文通过对比传统请求响应模式,展示了Struts 2如何轻松实现Ajax功能,提升了用户体验和开发效率,并灵活地实现了数据交换。然而,使用Ajax时还需注意SEO和跨域请求等局限性。
32 0
|
28天前
|
开发者 安全 SQL
JSF安全卫士:打造铜墙铁壁,抵御Web攻击的钢铁防线!
【8月更文挑战第31天】在构建Web应用时,安全性至关重要。JavaServer Faces (JSF)作为流行的Java Web框架,需防范如XSS、CSRF及SQL注入等攻击。本文详细介绍了如何在JSF应用中实施安全措施,包括严格验证用户输入、使用安全编码实践、实施内容安全策略(CSP)及使用CSRF tokens等。通过示例代码和最佳实践,帮助开发者构建更安全的应用,保护用户数据和系统资源。
38 0
|
28天前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
38 0
|
28天前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
73 0
|
1月前
|
Java 应用服务中间件 Windows
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
【应用服务 App Service】App Service 中部署Java项目,查看Tomcat配置及上传自定义版本
|
弹性计算 数据可视化 关系型数据库
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
阿里云服务器部署Java Web项目和连接MySQL数据库全流程
5611 0
阿里云服务器部署Java Web项目和连接MySQL数据库全流程