Web 部署

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Web 部署

Java 程序的部署



因为 Java 的代码具有可移植性,利用 Java 编写的程序,实际上并没有和底层操作系统直接交互,而是运行在 Java虚拟机上(JVM),就是因为 JVM,所以才屏蔽了不同操作系统之间的差异。所以,Java 编写代码后,可以在任何地方运行。


所以,利用 Java 编写的程序可以在 Windows 操作系统上运行,同时,我们不对代码进行任何修改,亦可以在 Linux 系统上运行。


本篇博客,我会详细介绍 Servlet 项目、Spring Boot 项目的云服务器部署。


一、Servlet 项目部署



1. 搭建环境


在部署之前,我们需要将准备工作全部做好,也就是搭建好依赖的环境。


步骤1:安装 JDK

步骤2:安装 Tomcat

步骤3:安装 MySQL


步骤1 安装 JDK


(1) 查找 JDK 版本


yum list | grep jdk


通过上面的命令,进行检索 JDK,选择 " devel " 版本的开发包,因为 " devel " 表示一个完整的开发包。( " devel " => " development " )


962de168ac08469d903dc917ad581c16.png


(2) 选择 JDK 版本并执行安装


yum install 你需要安装的版本


" install " 后面,应该跟着你选择的安装版本,此外,安装操作,只有 root 用户才能真正执行。


步骤2 安装 Tomcat


(1) 从 Tomcat 官网复制 zip 安装包的链接


04499451a8a040a280b7432ecc48a187.png


(2) 通过命令进行下载安装


weget http://downloads.apache.org/tomcat/tomcat-8/v8.5.82/bin/apache-tomcat-8.5.82.


将链接前面的协议 https 改为 http.


(3) 解压缩


unzip apache-tomcat-8.5.82.zip


2513d105f2e84c19ae31b17dc4182fb8.png


如果 Linux 系统没有预装 " unzip " 这样的解压功能,可以通过下面的命令进行安装。


yum install unzip


步骤3 安装 MySQL


必须明确,MariaDB 和 MySQL 可以说是双胞胎,但在 Linux 下,安装前者比安装后者,更为简单。

下面的链接是我老师写的安装步骤,CentOS 7 通过 yum 安装 MariaDB.


如果有小伙伴能够安装成功,请给我老师点个赞…


2. 启动 Tomcat


① 打开 tomcat 下的 bin 目录,并为 sh 文件赋予可执行权限


chmod u+x *.sh


a7670dddfbf147b0a0878c1cf20d31cf.png


② 启动 tomcat


sh startup.sh


通过下面的命令,查看 Tomcat 是否真正的启动成功。(如果是 LISTEN 表示成功)


netstat -anp | grep 8080   //netstat -anp | grep [端口号]


7c69ce47b68b495da86562e81b6efb86.png


如果 8080 端口处于 TIME_WAIT 状态,而 8005 处于 LISTEN 状态,我们就需要先将 8005 后台进程杀死。(8005 也是 Tomcat 的一个端口,只是用的少)


sudo kill -9 10284  //sudo kill -9 [PID]


577f5d07b140429c93c1f204b84379e6.png


③ 为防火墙添加新的规则


针对更改防火墙的设置,我们必须明确,它默认是在保护你服务器的端口不暴露到公网上,因为暴露端口很危险、也很容易被黑客入侵,所以,要想让 tomcat 能在公网被访问,就需要修改这里的防火墙或安全组的配置。


ECS 服务器对应着安全组;轻量应用服务器对应着防火墙。

不管是安全组还是防火墙,都是被设计用来拦截作用的。


下图是以腾讯的轻量应用服务器为例,如果小伙伴和我的不一样,可以问一问客服,它会帮你解决这一问题。


4193b119969f41e1a24c79094aa3f49a.png


④ 通过你的公网 IP ,再加上 8080 端口号,往浏览器输入,若成功,tomcat 一切就绪,就会出现下面的页面。


1c1d6450005f4b109028e111205041f0.png


3. 开始部署


步骤1 将 Java 项目打包


以我的项目为例子,先设置 war 包,接着点击 package,最后生成的包在 target 目录下。


6dec06a066bc45eab32e23ce1a0e5c15.png


步骤2 上传 war 包到 webapps 下


将 war 包复制到 tomcat/webapps 的目录下,直接拖拽即可。过了不到 2分钟,就可以看见 tomcat 会自动将 war 包解压缩。


28bdab9a307c43d2ad47c1193ddff918.png


如果 tomcat 并没有自动解压缩,那么我们就可以通过下面的命令,进行手动解压缩到指定目录。


upzip (war包) -d (目标目录)


我们创建一个 ccc 目录,将解压缩后的文件往其中放即可。


0338727b6da64d61a690b52d23f4b37c.png

解压缩后的结果:


b831a24039a34c30a9b10d7795c484ec.png


此外,这里应该注意,webapps 目录下的其他文件不要乱动,否则,最终可能会出现部署的 Web 程序访问不了的情况。


步骤3 为云服务器上的数据库提供数据


使用下面的命令进行和数据库连接,之后,它会让你输入密码,输入的密码不会在命令行上显式出现,但实际上,你已经输入了。


mysql -uroot -p


可以看见,MySQL 和 MariaDB 两者的操作几乎相同,显示效果也吻合。


05c0dd65f2be42c19340576d2d3c7d29.png


必须明确:本地数据库和云服务器上的数据库是两码事。


举个例子:这两者的区别就好像联机游戏一样,当一台电脑未联机,那么你只能和人机进行 PK,当你联网后,才能和游戏玩家一起 PK.


所以,之前 war 包在本地运行,访问的是本地的数据库 ( 127.0.0.1 );而现在,war 包在云服务器上运行,访问的就是云服务器的数据库。我们就需要先保证云服务器的数据库上有数据,此外,还得保证我们的代码能够访问云服务器的数据库 ( 保证 ip,端口,用户名,密码 ) 都是正确的,才能准确无误地访问成功。


举个例子:这就好像你登录 QQ 一样,你输入你的账号和密码后,后端是怎么知道你的账号和密码都是正确的呢?所以说,腾讯服务器那里就有一个数据库,数据库中放着一些用户数据,以此来进行验证。


3. 供用户访问


最后的最后,通过浏览器,输入 webapps 目录下的一些文件路径,就可以让别人也进行访问啦!你可以告诉你身边的小伙伴,这就是我做的网站!有了云服务器,往上面部署自己的项目,还是很香的,万一火了呢!!!


目前,我先不公开外网了,我的一些项目功能还未完善…


image.png


二、Spring Boot 项目部署



1. 搭建环境


在部署之前,我们需要将准备工作全部做好,也就是搭建好依赖的环境。所有步骤参照上面的步骤即可,这里不需要安装 Tomcat,因为在 Spring Boot 项目中,已经为我们内置了 Tomcat,我们只需要将 Java 项目打包成 jar 包即可。( 但是,如果你还是打成 war 包,依然需要安装 Tomcat. )


步骤1:安装 JDK

步骤2:安装 Tomcat (省略)

步骤3:安装 MySQL


2. 开始部署


步骤1 将 Java 项目打包


在打包之前,需要注意三件事情:


① 在 yml / properties 配置文件中,配置云服务器的端口号 (我的是 8080),此外,也要检查一下云服务器的数据库密码、表名等信息…


image.png


② 在 pom.xml 中,将程序打包成 jar 包


image.png


③ 将原有的 【target】目录删除掉,以防缓存导致的未加载数据。


8ed519b66af34dbb9a750fa886879207.png


经过上面的两个过程后,就可以开始打包了:


image.png


步骤2 上传 jar 包


将 windows 系统的 jar 包,复制到你想要存储 Linux 系统的目录下,直接拖拽即可。


image.pngimage.png


步骤3 使用命令运行 jar 包


使用 java 指令运行项目 jar 包。


java -jar ***.jar  //***为你的jar包名


或许可能遇到下面的情况,8080 端口已经被占用了。


image.png


① 首先,我们得看看是谁正在占用 8080 端口 (如果端口号没被占用,那么此时就不显示任何东西)


netstat -anp | grep 8080   //netstat -anp | grep [端口号]


image.png


② 其次,我们找到对应端口号的 PID (如果端口号没被占用,那么此时就不显示任何东西)


sudo lsof -i:8080  //sudo lsof -i:[端口号]


image.png


③ 最后,我们使用如下命令把它清理掉,给我们的项目留下运行地空地


sudo kill -9 29409  //sudo kill -9 [PID]


④ 再次使用 java 指令运行项目 jar 包


java -jar ***.jar  //***为你的jar包名


当看到如下界面时,一个 Spring Boot 项目才真正的启动起来。


image.png


⑤ 实际上,在上面的步骤中,只要我们退出了 Xshell,即使云服务器是开着的,Spring Boot 项目就会被关掉,这也就意味着用户此时不再能够通过公网访问网站了。


所以,我们就可以使用如下命令,即使我们退出了 Xshell,只要云服务器不关闭,用户就能够一直访问网站了。


nohup java -jar  ***.jar  &     //***为你的jar包名


执行此命令后,Linux 的同目录下,多出来一个 " .out " 文件,我们可以通过 vim 命令打开它,里面存放着 Spring Boot 的日志信息,就是我们平时在 IDEA 控制台看到的信息。如果你在项目中,开启了 MyBatis 打印日志,那么它也会显示出来。


image.pngimage.png


⑥ 上面的 " nohup " 命令表示当前进程和终端没有关系,& 表示任务在后台运行。如果我们需要关闭它的后台进程,就可以通过下面的命令列出后台进程:


ps -ef | grep java


之后,也可以使用上面说的 " 杀进程 " 方式关闭后台进程。


sudo kill -9 29409  //sudo kill -9 [PID]


image.png


3. 供用户访问


通过下面的格式,让用户访问你的网站:


公网 + 8080:***   // *** 为你的路由 (RequestMapping)


目录
相关文章
|
3月前
|
中间件 Java 应用服务中间件
Windows部署web应用服务器Jboss中间件
如何在Windows系统上部署JBoss 7.1作为Web应用服务器,包括配置环境变量、自动部署WAR包、访问JBoss控制台、设置管理员账户以及修改端口和绑定地址等操作。
111 1
|
3月前
|
负载均衡 应用服务中间件 持续交付
微服务架构下的Web服务器部署
【8月更文第28天】随着互联网应用的不断发展,传统的单体应用架构逐渐显露出其局限性,特别是在可扩展性和维护性方面。为了解决这些问题,微服务架构应运而生。微服务架构通过将应用程序分解成一系列小型、独立的服务来提高系统的灵活性和可维护性。本文将探讨如何在微服务架构中有效部署和管理Web服务器实例,并提供一些实际的代码示例。
105 0
|
2月前
|
前端开发 JavaScript
构建你的第一个Web应用:从零到部署
【8月更文挑战第33天】 在这篇文章中,我们将一起踏上构建一个基本Web应用的旅程。不同于传统的“安装这个、运行那个”教程,我们的目标是通过理解每一步的意义和目的来深化你的技术理解。我们将探索HTML、CSS、JavaScript的基础,并学习如何将它们结合起来创建一个简单的个人网站。接着,我们会介绍如何使用GitHub Pages进行免费部署,让你的应用上线。准备好了吗?让我们开始吧!
|
2月前
|
负载均衡 网络协议 应用服务中间件
web群集--rocky9.2源码部署nginx1.24的详细过程
Nginx 是一款由 Igor Sysoev 开发的开源高性能 HTTP 服务器和反向代理服务器,自 2004 年发布以来,以其高效、稳定和灵活的特点迅速成为许多网站和应用的首选。本文详细介绍了 Nginx 的核心概念、工作原理及常见使用场景,涵盖高并发处理、反向代理、负载均衡、低内存占用等特点,并提供了安装配置教程,适合开发者参考学习。
|
3月前
|
JavaScript 搜索推荐 前端开发
从零搭建到部署:Angular与Angular Universal手把手教你实现服务器端渲染(SSR),全面解析及实战指南助你提升Web应用性能与SEO优化效果
【8月更文挑战第31天】服务器端渲染(SSR)是现代Web开发的关键技术,能显著提升SEO效果及首屏加载速度,改善用户体验。Angular Universal作为官方SSR解决方案,允许在服务器端生成静态HTML文件。本文通过具体示例详细介绍如何使用Angular Universal实现SSR,并分享最佳实践。首先需安装Node.js和npm。
61 1
|
3月前
|
网络协议 Serverless API
现代化 Web 应用构建问题之验证各个服务是否已成功部署如何解决
现代化 Web 应用构建问题之验证各个服务是否已成功部署如何解决
27 1
|
3月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
73 1
|
3月前
|
Java UED 自然语言处理
Struts 2 国际化竟有如此神奇魔力?快来揭开多语言支持的 Web 应用神秘面纱
【8月更文挑战第31天】在全球化背景下,Web应用需适应多种语言环境。Struts 2凭借其强大的国际化(i18n)支持,简化了多语言应用开发。通过不同语言的资源文件,它能自动匹配用户语言偏好,优化用户体验并扩展用户群。下面是一个示例:创建`messages.properties`(英语)与`messages_zh_CN.properties`(中文),并在Struts 2的Action类及JSP页面中调用`getText()`方法及Struts标签展示相应语言内容。此外,在struts.xml中指定资源文件,以确保框架正确加载对应语言包。通过这些步骤,开发者可以轻松实现应用的多语言支持。
64 0
|
3月前
|
Java 数据库 API
JSF与JPA的史诗级联盟:如何编织数据持久化的华丽织锦,重塑Web应用的荣耀
【8月更文挑战第31天】JavaServer Faces (JSF) 和 Java Persistence API (JPA) 分别是构建Java Web应用的用户界面组件框架和持久化标准。结合使用JSF与JPA,能够打造强大的数据驱动Web应用。首先,通过定义实体类(如`User`)和配置`persistence.xml`来设置JPA环境。然后,在JSF中利用Managed Bean(如`UserBean`)管理业务逻辑,通过`EntityManager`执行数据持久化操作。
51 0
|
3月前
|
Java 开发者 关系型数据库
JSF与AWS的神秘之旅:如何在云端部署JSF应用,让你的Web应用如虎添翼?
【8月更文挑战第31天】在云计算蓬勃发展的今天,AWS已成为企业级应用的首选平台。本文探讨了在AWS上部署JSF(JavaServer Faces)应用的方法,这是一种广泛使用的Java Web框架。通过了解并利用AWS的基础设施与服务,如EC2、RDS 和 S3,开发者能够高效地部署和管理JSF应用。文章还提供了具体的部署步骤示例,并讨论了使用AWS可能遇到的挑战及应对策略,帮助开发者更好地利用AWS的强大功能,提升Web应用开发效率。
61 0