【JavaEE进阶】部署Web项目到Linux服务器

简介: 【JavaEE进阶】部署Web项目到Linux服务器

🍃前言

本篇博文主要内容为如何将本机的Web项目部署到Linux服务器

🍀什么是部署

我们在⼯作中会涉及到几个"环境"

  • 开发环境: 开发⼈员写代码用的机器.
  • 测试环境: 测试⼈员测试程序使用的机器.
  • ⽣产环境(线上环境): 最终项⽬发布时所使⽤的机器.对稳定性要求很⾼.

把程序安装到⽣产环境上,这个过程称为"部署".也叫"上线"

⼀旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到.

换句话说,如果程序有BUG,这个BUG也就被千千万万的⽤⼾看到了.

部署过程⾄关重要,属于程序开发中最重要的⼀环.⼀旦部署出现问题,极有可能导致严重的事故(服务器不可⽤之类的).

为了防⽌部署出错,⼀般公司内部都有⼀些⾃动化部署工具(如Jenkins等).

这里博主使⽤⼿⼯部署的⽅式来完成部署

🌲环境配置

要使程序正常运行,需要保证环境和程序都要正确,我们需要先设置环境

🚩数据准备

准备需要部署到服务器上的web项目所需要的数据库

首先建立我们所需要的数据库

接下这里我们有两种方法来填充里面的数据

  1. 建⽴相同的表结构,导入相同的数据
  2. 对原来数据库的数据进行打包,放入Linux某一个目录下面,然后打开相应的数据库,实用如下命令进行导入
source 打包的数据库在Linux里的文件路径

🚩程序配置⽂件修改

实际⼯作中,开发环境,测试环境以及⽣产环境的配置都是不⼀样的

⽐如mysql的⽤⼾名和密码

我们可以针对不同的环境,设置不同的配置

🎄构建项目并打包

在本地使用maven进行打包

  1. 如果Test代码中有与环境配置相关的操作(⽐如数据库相关的操作),打包会失败,点击下图①处的图标,可以跳过测试

  1. 点击clean->package

🎋上传Jar包到服务器,并运行

🚩上传Jar包

直接拖动打好的jar包到xshell窗⼝即可完成⽂件的上传

Xshell可以直接拖动⽂件到窗⼝,达到上传⽂件的⽬的,如果使⽤其他客⼾端,不⽀持⽂件的上传,需要借助lrzsz命令

  1. 上传⽂件
    sz filename
  2. 下载⽂件
    rz

执行该命令后,在弹出框中选择要上传的文件即可,上传的速度取决于网络.

如果执⾏上述命令之后,提⽰ Command ‘XX’ not found ,表⽰当前云服务器未安装lrzsz命令,需要先进⾏安装

安装lrzsz命令如下:

apt-get install lrzsz

🚩运行程序

运行程序分为两种,一种使永久的,一种是短暂的

我们现在来看一下短暂的语法如下

java -jar 所导入jar包名字

这个命令的运行方式会在你退出终端时就停止

接下来我们看一个永久的运行方式

nohup java -jar 所导入jar包名字 &

我们还可以通过该命令搭配 > 把需要输出的内容写到指定⽂件中.这样的操作称为"重定向".

举例如下:

nohup java -jar blog-0.0.1-SNAPSHOT.jar >/logs &

成功启动后与你在本机启动web项目的场景是一样的

🚩开放端口号

如果外网需要访问该服务,需要先服务器防火墙开放对应的端⼝号

本着服务器安全的原则,云服务器上的端口非必要不开启.

⽐如常见端⼝号:数据库3306,Redis6379,尽可能避免开放,而是采⽤其他⽅式来连接,⽐如配置隧道的⽅式

接下来博主以tx云服务器举例:

  1. 进⼊防火墙管理页面

  2. 添加规则

端⼝号写需要开放的端⼝号,多个端⼝号以逗号分割.

🌳常见问题

⼀个程序的正常运行,需要程序的正确和环境的正确.同样的代码在Windows上可以运行成功,不⼀定在Linux上运⾏成功.

不同的系统对代码的理解和止持是不同的.⽐如Windows系统对MySQL不区分大小写,Linux区分大小写

服务不能正常访问的原因有很多,主要分以下⼏⽅⾯

服务未启动

  • 使⽤ ps -ef|grep java 查看程序是否在运⾏
  • 使⽤ 相应的访问界面 看下是否有返回html⻚⾯,

如果有返回,说明程序启动成功了,考虑端⼝未开放

如果未启动成功,需要查看对应的⽇志,根据原因来分析.

  1. 数据库不存在
  2. 表不存在(区分大小写)
  3. 数据库密码不正确
  4. Jdk安装版本不对,或者未安装
  5. mysql未设置密码

🌴杀掉进程

如果我们需要重启服务,或者重新部署等,都需要先停⽌之前的服务.

  1. 查看当前服务的进程
ps -ef|grep java

上图35443就是该服务的进程

  1. 杀掉进程
kill -9 PID

⭕总结

关于《【JavaEE进阶】部署Web项目到Linux服务器》就讲解到这儿,感谢大家的支持,欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下

相关文章
|
3月前
|
Shell 网络安全 开发工具
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
服务器已经搭建好的项目如何关联至gitee对应仓库并且将服务器的项目代码推送至gitee-优雅草卓伊凡
241 5
|
10月前
|
移动开发 数据挖掘 开发者
服务器发送事件(SSE)在现代Web开发中的关键作用
服务器发送事件(SSE)是HTML5标准协议,用于服务器主动向客户端推送实时数据,适合单向通信场景。相比WebSocket,SSE更简洁高效,基于HTTP协议,具备自动重连、事件驱动等特性。常见应用场景包括实时通知、新闻推送、数据分析等。通过Apipost等工具可轻松调试SSE,助力开发者构建高效实时Web应用。示例中,电商平台利用SSE实现秒杀活动通知,显著减少延迟并简化架构。掌握SSE技术,能大幅提升用户体验与开发效率。
|
5月前
|
监控 Java Linux
Apache NiFi项目的编译与部署于CentOS服务器
总而言之,Apache NiFi的编译和部署虽然涉及多个步骤,但这些操作步骤简明扼要,即使是不太熟悉Java或Maven的用户也能跟随指南完成。通过遵循上述步骤,您将能够在CentOS服务器上成功部署Apache NiFi,为您的数据流处理任务建立一个功能强大的平台。
378 16
|
7月前
|
弹性计算 安全
阿里云服务器镜像,快速迁移项目数据
有时候旧服务器快到期了,想把项目、数据、软件挪到新服务器上,如果全部重新搭建的话,那无疑是耗时又费力。有了镜像迁移,就方便了许多。
591 1
|
10月前
|
Docker Python 容器
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
1235 2
|
3月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
306 10
|
3月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
3月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
456 8
|
3月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。