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 " )

1-1

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

yum install 你需要安装的版本

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

步骤2 安装 Tomcat

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

2-1

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

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

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

(3) 解压缩

unzip apache-tomcat-8.5.82.zip

2-2

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

yum install unzip

步骤3 安装 MySQL

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

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

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

知乎链接

2. 启动 Tomcat

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

chmod u+x *.sh

2-3

② 启动 tomcat

sh startup.sh

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

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

2-4

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

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

7

③ 为防火墙添加新的规则

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

ECS 服务器对应着安全组;轻量应用服务器对应着防火墙。
不管是安全组还是防火墙,都是被设计用来拦截作用的。

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

2-4

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

2-5

3. 开始部署

步骤1 将 Java 项目打包

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

5-1

步骤2 上传 war 包到 webapps 下

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

5-2

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

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

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

5-3

解压缩后的结果:

5-4

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

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

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

mysql -uroot -p

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

6-1

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

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

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

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

3. 供用户访问

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

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

7-1

二、Spring Boot 项目部署

1. 搭建环境

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

步骤1:安装 JDK
步骤2:安装 Tomcat (省略)
步骤3:安装 MySQL

2. 开始部署

步骤1 将 Java 项目打包

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

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

1

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

2

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

4

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

3

步骤2 上传 jar 包

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

5

6

步骤3 使用命令运行 jar 包

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

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

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

1-1

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

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

1-2

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

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

1-3

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

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

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

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

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

1-4

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

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

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

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

6
7

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

ps -ef | grep java

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

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

0

3. 供用户访问

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

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

9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十七ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值