JavaEE如何将JavaWeb项目部署到Linux云服务器?

Posted 兴趣使然黄小黄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaEE如何将JavaWeb项目部署到Linux云服务器?相关的知识,希望对你有一定的参考价值。

写在前面

 大家好,我是黄小黄。不久前,我们基于 servlet 和 jdbc 完善了博客系统。本文将以该系统为例,演示如何将博客系统部署到 Linux 云服务器。

博客系统传送门:

【JavaEE】前后端分离实现博客系统(页面构建)
【JavaEE】前后端分离实现博客系统(后端实现)

需要做什么?

 如果我们想要在 Linux 系统上搭建 Java 运行环境,并且能够部署 Java Web 程序,需要满足以下几点(对于之前写的博客系统而言):

  1. 安装JDK
  2. Tomcat
  3. mysql

话不多说,正文开始!


文章目录


1 云服务器环境配置

1.1 JDK 的安装

  对于 JDK 的安装,我们采用基于 yum 的方式进行。yum,是一个“包管理器”,可以理解成我们手机里的应用商店~

通过以下命令,可以列出 应用商店服务器 上所有的软件包和名字:

yum list

  但是,对于一个应用商店而言,其包含的软件包的量是非常多滴~ 如果你草率的键入了该命令,就会造成刷屏的情况~ 这时,大概率你就只能对着屏幕大眼儿瞪小眼儿啦!


我们采用如下命令,对结果进行匹配:

yum list | grep jdk
  • | : 管道,其功能是将前一个命令的输出,作为后一个命令的输入;
  • grep:进行字符串过滤;
  • grep jdk:根据 yum list 输出的结果,来匹配包含 jdk 三个字母的文本行。

选择 java-1.8.0-openjdk-devel.x86_64 进行下载。

  • devel:表示开发工具,也就是jdk,东西最全~
  • x86_64:表示这个软件包适用于 64位的x86 CPU(x86是最主流的一种CPU架构,描述了CPU的大概规格)

执行如下命令进行安装,并键入 y 确认即可:

yum install java-1.8.0-openjdk-devel.x86_64


1.2 Tomcat 的安装

1.2.1 安装步骤

yum list | grep tomcat


 可见,使用 yum 方式,程序包都比较古老。而我们之前所写的博客系统使用到的Tomcat是8.5系列的版本。为了避免版本问题导致程序 bug,我们采用其他方式来安装 Tomcat。(Tomcat、JDK 和 Servlet版本必须匹配)

进入 Tomcat 官网,选择apache-tomcat-8.5.87.zip点击下载

https://tomcat.apache.org/download-80.cgi

下载好后可以直接将其拖拽到 xshell 中即可上传服务器。但是 默认情况下拖拽一般是不成功的,因为拖拽上传依赖 rz 命令, 需要使用如下指令来安装依赖的命令,才能上传:

yum install lrzsz
  • rz 命令:将 windows 上的文件传给 Linux 服务器
  • sz 命令:将 Linux 上的文件传给 windows

直接将下载好的apache-tomcat-8.5.87.zip拖拽到 xshell 中以上传服务器。

使用如下命令对其进行解压缩

unzip apache-tomcat-8.5.87

如果无法 unzip ,就可以先使用 yum 进行安装,不得不说,yum 是真滴方便~

yum install unzip

要想启动 tomcat,需要用到 startup 脚本。

  • .bat:windows 使用
  • .sh:Linux 使用

可是在 Linux 环境下无法通过双击启动,该怎么做呢?

  1. 首次使用,需要先给所有的 .sh 文件设置可执行权限(在bin目录下执行如下指令):
chmod +x *.sh

绿色表示可执行!

  1. 启动 Tomcat!(在bin目录下执行如下指令):
sh startup.sh

1.2.2 如何验证 Tomcat 是否启动成功?

方式1️⃣:查看 tomcat 进程

ps aux | grep tomcat
  • ps命令:相当于 Linux 上的任务管理器,会打印出当前主机的所有进程。
  • grep tomcat:匹配 tomcat 进程(按照 tomcat 关键字进行匹配)

方式2️⃣:查看端口号,tomcat 默认端口8080

netstat -anp | grep 8080


 上图所示,说明 Tomcat 启动成功。在一个主机上,一个端口只能被一个进程绑定。如果出现端口号冲突的情况,可以通过 vim 修改 server.xml 配置文件,修改端口号解决。

方式3️⃣:可以验证是否能够访问 tomcat 欢迎页面,如果能访问则启动成功。

访问地址为:服务器的外网IP : Tomcat端口号,例如:101.40.252.157 : 8080

 不过,一般情况下,都会连接超时。云服务器厂商,为了保护服务器不受到黑客攻击,对哪些端口能被外部访问进行了严格的限制,需要在云服务器后台界面,配置允许对外访问的端口~ 以腾讯云为例:

于是就可以正常访问啦!

1.3 MySQL 的安装

1.3.1 yum 安装 MariaDB

 MariaDB 和 MySQL 是孪生兄弟。(MySQL被收购后的新代码分支,一般感知不到 MariaDB 与 MySQL 的区别)

安装 mariadb 服务

yum install -y mariadb-server

安装 mariadb 命令行客户端

yum install -y mariadb

安装 mariadb C library

yum install -y mariadb-libs

安装 mariadb 开发包

yum install -y mariadb-devel

1.3.2 更改配置

配置数据库支持 utf8 ,使用 cd 进入对应的目录而后使用 vim 进行修改。

  1. 更改/etc/my.cnf.d/client.cnf文件[client]下加一行配置 default-character-set=utf8

  2. 更改/etc/my.cnf.d/mysql-client.cnf文件[mysql]下加一行配置 default-character-set=utf8

  3. 更改/etc/my.cnf.d/server.cnf文件[mysqld]下加配置:

collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
sql-mode = TRADITIONAL

1.3.3 启动服务

启动服务

systemctl start mariadb

设置服务开机自启动

systemctl enable mariadb

测试连接

mysql -uroot


2 部署博客项目

2.1 服务器上准备好项目依赖的数据

 将博客系统项目中的 db.sql 粘贴到服务器上运行,构建出博客系统需要的数据库、数据表以及必要的数据。

 为了使代码在服务器上运行,JDBC也能正常连接到数据库,需要对代码进行微调:主要是更改之前的 DBUtil.java 里的密码,使其与服务器上的数据库的密码匹配~

2.2 使用 Maven 重新打包项目

 基于 Maven 的 Package 操作生成 War 包。在 pom.xml 文件中添加如下配置,而后双击 package。

    <packaging>war</packaging>
    <build>
        <finalName>BlogSystem</finalName>
    </build>


最终会得到一个 BlogSystem.war 文件

2.3 将 war包 上传到云服务器

先 cd 到 /root/apache-tomcat-8.5.87/webapps 目录,即刚刚安装好的 Tomcat 的 webapps 目录。

将刚刚 package 打包的 war 包,即 BlogSystem.war 文件拖进 Xshell,上传至服务器。

Tomcat 处于运行状态时,会自动对 war 包进行解压缩。


3 通过公网 ip 访问部署的博客项目

网址为:云服务器公网IP : Tomcat 端口号 / 项目路径
例:http://101.40.252.157:8080/BlogSystem/blog_login.html


写在最后

 博客系统的完整代码已上传 gitee,如有需要请自取:https://gitee.com/hxh2001/blog-system
 以上便是本文的全部内容啦!创作不易,如果你有任何问题,欢迎私信,感谢您的支持!

将web应用部署到Tomcat的三种方式

Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应该规范说法,称Tomcat为一个JavaWeb服务器,而不是JavaEE服务器

我们使用IDE部署JavaWeb项目基本上都是一键完成,这是IDE给我们该来的好处,但是还是有必要了解一下部署项目的细节

要将JavaWeb应用部署到Tomcat,需要显式或隐式定定义一个Tomcat上下文。在Tomcat中,每一个Tomcat上下文都表示一个Web应用程序。所以我们也将分为隐式和显式两种方式来进行总结

显式部署

显式部署又分为两种方式:

  • 在Tomcat的conf/Catalina/localhost目录下创建一个XML文件
  • 在Tomcat的conf/server.xml文件中添加一个Context元素

方式一

如果决定给每一个上下文都创建一个XML文件(第一种方式),那么这文件名就很重要了,因为上下文路径就是从这个文件名的衍生得到的。例如,将一个Demo1

.xml文件放在conf/Catalina/localhost目录下,那么这个应用程序的上下文路径就是Demo1,访问的URL就为:http://localhost:8080/Demo1

这个上下文文件只有一行代码:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="d:/Demo1" reloadable="true"></Context>

这里的docBase是必须的属性,它定义了应用程序的位置。reloadable属性是可选的,如果存在并且值为true,那么一旦程序中Java类文件或者是其他资源文件有任何添加,减少或者是更新,TOmcat都可以检测到,并且重新加载该应用程序

当把上下文文件添加到Tomcat的指定目录下,Tomcat就会自动加载应用程序。当删除这个文件时,Tomcat就会自动卸载应用程序

方式二

在conf/server.xml文件中的Host标签下添加一个Context元素

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
      
      <Context path="/Demo2" docBase="d:/Demo1" reloadable="true"></Context>

</Host>

以第一种方式不同之处在于此处定义上下文需要给上下文路径定义path属性,这个path属性的值表示需要访问的项目名,访问的URL就为:http://localhost:8080/Demo2

一般来说,不建议通过server.xml来管理上下文,因为修改后只有重启Tomcat后,配置才能生效。不过,如果有多个应用程序需要测试,使用这种方式或许更为方便,因为可以在一个文件中同时管理所有的应用程序

隐式部署

方式三

隐式部署真是太方便了,非常建议使用这种方式部署项目。通过将一个war文件或者整个应用程序复制到Tomcat的webapps(Tomcat默认的部署项目位置,可以在server.xml文件中修改,但不建议修改)目录下,启动服务器就可以了

 

以上是关于JavaEE如何将JavaWeb项目部署到Linux云服务器?的主要内容,如果未能解决你的问题,请参考以下文章

JavaEE基础JavaWeb项目基础认识

如何在开发时部署和运行前后端分离的JavaWeb项目

如何部署android服务器端的java代码

如何将Java Web项目部署到服务器上

Java Web项目部署

Java笔记---部署 JavaWeb 项目到云服务器