Web 部署

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云服务器ECS,u1 2核4GB 1个月
简介: 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)


目录
相关文章
|
15天前
|
应用服务中间件 网络安全 nginx
快速上手!使用Docker和Nginx部署Web服务的完美指南
快速上手!使用Docker和Nginx部署Web服务的完美指南
|
2月前
|
存储 资源调度 应用服务中间件
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
浅谈本地开发好的 Web 应用部署到 ABAP 应用服务器上的几种方式
32 0
|
4月前
|
安全 应用服务中间件 nginx
百度搜索:蓝易云【使用Debian、Docker和Nginx部署Web应用教程】
这些是在Debian上使用Docker和Nginx部署Web应用的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
47 0
|
3天前
|
应用服务中间件 nginx
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
如何在树莓派部署Nginx并实现无公网ip远程访问内网制作的web网站
8 0
|
5天前
|
开发框架 JavaScript 安全
WIndows Server 2016 部署 Web服务(简单篇)
WIndows Server 2016 部署 Web服务(简单篇)
|
17天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
53 1
|
25天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
|
25天前
|
JavaScript Java 测试技术
基于Java的web新闻流媒体平台的设计与实现(源码+lw+部署文档+讲解等)
基于Java的web新闻流媒体平台的设计与实现(源码+lw+部署文档+讲解等)
21 0
|
26天前
|
弹性计算 Kubernetes 开发者
利用容器化技术实现跨平台部署的Web应用开发
本文将介绍如何利用容器化技术,例如Docker和Kubernetes,实现跨平台部署的Web应用开发。我们将探讨容器化的优势以及如何使用Docker容器打包应用程序,然后利用Kubernetes进行管理和部署。通过容器化技术,开发者可以更加便捷地进行Web应用的开发、测试和部署,提高开发效率和应用的可靠性。
|
1月前
|
Java 持续交付 开发者
使用 Docker 容器化 Java Web 应用:提高开发和部署效率
【4月更文挑战第4天】Docker 作为轻量级容器技术,提升了 Java Web 应用的开发和部署效率。它提供类似生产环境的本地开发体验,减少环境配置时间,保证应用隔离性与稳定性。Docker 改善了部署流程,实现跨环境的无缝迁移,支持自动化构建、部署和扩展,并促进持续集成和持续部署,助力企业实现更高效、可靠的软件生命周期管理。