JavaEE如何将JavaWeb项目部署到Linux云服务器?
Posted 兴趣使然黄小黄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaEE如何将JavaWeb项目部署到Linux云服务器?相关的知识,希望对你有一定的参考价值。
写在前面
大家好,我是黄小黄。不久前,我们基于 servlet 和 jdbc 完善了博客系统。本文将以该系统为例,演示如何将博客系统部署到 Linux 云服务器。
博客系统传送门:
需要做什么?
如果我们想要在 Linux 系统上搭建 Java 运行环境,并且能够部署 Java Web 程序,需要满足以下几点(对于之前写的博客系统而言):
- 安装JDK
- Tomcat
- 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 环境下无法通过双击启动,该怎么做呢?
- 首次使用,需要先给所有的 .sh 文件设置可执行权限(在bin目录下执行如下指令):
chmod +x *.sh
绿色表示可执行!
- 启动 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 进行修改。
-
更改
/etc/my.cnf.d/client.cnf
文件[client]
下加一行配置default-character-set=utf8
-
更改
/etc/my.cnf.d/mysql-client.cnf
文件[mysql]
下加一行配置default-character-set=utf8
-
更改
/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云服务器?的主要内容,如果未能解决你的问题,请参考以下文章