初阶JavaEE(17)Linux 基本使用和 web 程序部署

接上次博客:初阶JavaEE(16)博客系统(Markdown编辑器介绍、博客系统功能、博客系统编写:博客列表页 、博客详情页、实现登录、实现强制登录、显示用户信息、退出登录、发布博客)-CSDN博客

目录

Linux 基本使用和 web 程序部署

Linux 是什么

Unix & Linux 发展历程图

Unix的发展历程:

Linux的发展历程:

Linux 发行版

1.概述

2. 发行版的概念

3. 主要企业使用的发行版

4. CentOS 与 RedHat 的关系

如何拥有一个云服务器——Linux环境

 Linux 常用命令

1. ls命令

2. pwd命令

3. cd命令

4. 认识Linux目录结构

5. 绝对路径 vs 相对路径

6. 使用Tab键补全

7. 使用Ctrl+C重新输入

8. 清屏操作

9. touch命令

10. cat命令

11、echo命令

12. vim命令

1. 创建文件 / 打开文件

2. 进入插入模式

3. 保存

4. 退出

关于Vim的更多用法

Vim在代码编辑中的应用

13. mkdir命令

14. rm命令

15. cp命令

16. mv命令

17. man命令

18. grep命令

19. ps命令

20. netstat命令

如何在Linux上搭建Java web 程序的运行环境?

1、JVM(JDK):

2、Tomcat:

3、MySQL数据库:

正式进行程序的部署

1、把数据库/数据表都在云服务器上创建好

2、针对程序进行打包

3、把这个war包上传到Linux的tomcat的webapp目录中 


Linux 基本使用和 web 程序部署

当前为我们写道博客系统程序只是部署在我们自己的电脑上,其他用户是无法直接访问的。

网络地址转换(NAT)是一种网络协议,通常用于家庭网络或企业内部网络,它允许多台计算机共享同一个公共IP地址。由于NAT机制的存在,导致了IP地址就被分成了内网IP和外网IP。

在一个局域网中,可以使用私有IP地址(例如,10.0.0.0/8、192.168.0.0/16、172.16.0.0/12等)来标识内部设备。这些私有IP地址在全球范围内是唯一的,不同的局域网可以使用相同的私有IP地址范围而不会发生冲突。然而,这些私有IP地址通常不能直接用于在互联网上进行通信,因为它们是在内网中使用的,并且不是全局唯一的。

由于NAT的存在,内部网络中的设备使用私有IP地址,而外部通信则需要通过路由器或防火墙的NAT功能,将内部设备的私有IP地址映射为公共IP地址。因此,当我们需要从外部网络访问特定内部设备时,需要使用路由器的公共IP地址以及相应的端口映射或虚拟服务器规则。

我们可以通过云服务器来访问外网IP,所以我们得先了解一下Linux系统。

因为一般来说,云服务器还有公司中使用的专用服务器都是Linux服务器,这个系统的使用和Windows之间差异很大,是通过命令行来操作系统的。

Linux服务器通常更适合作为服务器操作系统,特别是在云环境中,因为它提供了更高度的可定制性和控制,而且通过命令行界面,管理员可以更方便地进行自动化操作和脚本编写。

Linux 是什么

Unix & Linux 发展历程图

Unix的发展历程:

  1. 初期发展(1969-1980):

    • Unix的起源可以追溯到1969年,由肯·汤普逊(Ken Thompson)和丹尼斯·里奇(Dennis Ritchie)在贝尔实验室的PDP-7计算机上开发。
    • 在1970s,Unix逐渐被移植到其他平台,包括PDP-11和VAX计算机,促使了Unix的传播。
  2. 商业化(1980-1990):

    • AT&T发布了System III和System V版本的Unix,推动了Unix的商业化。
    • Sun Microsystems推出了SunOS,成为Unix系统的重要版本。
  3. 开放系统(1990-2000):

    • POSIX标准的制定使得Unix系统之间更加兼容。
    • 1991年,Linus Torvalds创建了Linux内核,为Unix-like系统开创了新的可能性。
  4. 开源运动(2000年以后):

    • GNU项目和Linux内核相结合,形成了一个完整的、自由的Unix-like操作系统,通常被称为GNU/Linux。
    • 大量的Unix工具和应用程序在Linux系统中得以使用。

Linux的发展历程:

  1. 内核的诞生(1991-1994):

    • Linus Torvalds于1991年创建了Linux内核,最初是为了个人使用。
    • 1994年,Linux内核发布了1.0版本。
  2. 开源社区的崛起(1994-2000):

    • Linux吸引了大量开发者,形成了一个庞大的开源社区。
    • 发行版如Slackware、Debian、Red Hat等相继出现,提供了更易用的Linux系统。
  3. 商业支持和采纳(2000-2010):

    • 许多公司开始为Linux提供商业支持,如Red Hat和SUSE。
    • Linux在服务器领域迅速增长,成为企业和云计算中的首选操作系统。
  4. 移动和嵌入式系统(2010年以后):

    • Linux在移动设备和嵌入式系统上的应用逐渐增加,特别是在Android操作系统中。
    • 容器技术(如Docker)和云计算推动了Linux的进一步发展。

总体而言,Unix和Linux在操作系统领域都扮演着重要的角色。Unix为Linux提供了启示,并在其早期发展中为Linux奠定了基础。Linux则通过其开源的特性和广泛的社区支持,成为当今世界上最流行的服务器和嵌入式系统操作系统之一。

尽管很多人可能没有直接接触过 Linux 操作系统,但是 Linux 在不同领域有着广泛的应用,而且确实是世界上最被广泛使用的操作系统之一。

关于 Linux 在不同领域的应用:

  1. 服务器领域:

    • 大多数互联网服务器都在运行 Linux 操作系统。流行的 Linux 发行版,如Ubuntu Server、CentOS、Red Hat Enterprise Linux等,都被广泛用于搭建和管理服务器。
  2. 嵌入式设备:

    • Linux 在嵌入式系统中也有很大的份额。由于其开源、可定制的特性,许多嵌入式设备,包括网络路由器、智能家居设备、嵌入式系统控制器等,使用了定制化的 Linux 内核。
  3. 移动端:

    • 安卓操作系统是基于 Linux 内核的。虽然在用户界面和应用层面上有很大差异,但底层内核是 Linux。因此,移动设备中的许多基础功能和安全性特性都受益于 Linux 内核的稳定性和开源性。
  4. 科学研究和超算领域:

    • Linux 在科学计算和超级计算机领域也占有重要地位。许多科学研究和大规模计算都依赖于 Linux 系统。
  5. 云计算:

    • 云服务提供商如Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure等通常基于 Linux 系统提供云服务。

虽然桌面操作系统市场中,Windows 和 macOS 更为常见,但是 Linux 在服务器、嵌入式系统、移动端和云计算等领域的应用广泛且深入。安卓系统就是 Linux 内核的一个例子,它在移动设备上的成功也表明了 Linux 在不同领域的灵活性和适应性。

Linux 发行版

1.概述

  • 定义: Linux 严格来说不是“一个操作系统”,而是“一个操作系统内核”。
  • 操作系统构成: 一个完整的操作系统由操作系统内核和配套的应用程序组成。内核是Linux,搭配上不同的应用程序就成为了不同的操作系统。
  • Linux 内核特性: 完全开源免费。

2. 发行版的概念

  • 发行版定义: Linux 内核基础上,不同的公司/开源组织提供了各自的配套程序,形成不同的发行版。
  • 典型组成: 操作系统内核 + 工具集 + 应用程序 + 软件包管理系统等。
  • 自由度: 发行版可以根据需求进行定制和修改。

3. 主要企业使用的发行版

  • RedHat (红帽): 在企业中最主要使用的发行版,它是商业公司维护的收费的版本。你有任何系统问题都可以找红帽的售后解决。
  • 报价参考:Buy Red Hat Enterprise Linux subscriptions
  • 特点: 提供商业支持,但是是一个收费的系统。
  • 我们在学习阶段可以选择CentOS来替代,它是在红帽的源码的基础上改了logo重新打包发布的。

4. CentOS 与 RedHat 的关系

  • CentOS 定义: CentOS 是基于 RedHat Linux 内核的一个免费、开源的发行版。
  • 关系描述: CentOS 重新编译了去掉 RedHat 的商标和 logo 的源代码。
  • RedHat 对 CentOS 的态度: RedHat 并不反对 CentOS 存在,认为用户真正重视的是商业服务而非系统本身。
  • 功能和支持差异: CentOS 可以获得 RedHat 所有功能,甚至更好的软件,但不提供商业支持,也不负商业责任。
  • 但是!可惜的是,CentOS发展到8这个版本突然就凉凉了,社区突然宣布以后不再维护了……我们就只能选择切换到Ubuntu系统,它也是一个社区中比较推荐的初学者学习使用系统。
  • Ubuntu系统:Ubuntu是一个基于Debian的Linux发行版,它注重易用性、稳定性,并且有庞大的社区支持。特别是对于初学者来说,Ubuntu提供了直观的图形用户界面和友好的包管理系统,使得学习和使用Linux变得更加容易。
  • 为什么选择Ubuntu系统?我们要学习云服务器,而Ubuntu在云计算领域有着广泛的支持,几乎所有主要的云服务提供商都为用户提供了Ubuntu的镜像和支持。

如何拥有一个云服务器——Linux环境

阿里云、腾讯云、华为云、金山云……哪个便宜选哪个。我使用的是腾讯云。

云服务器对于学生来说一般都有额外优惠:

学生云服务器_学生云主机_学生云数据库_云+校园特惠套餐 - 腾讯云

云服务器对新用户会比较便宜,但是到期之后续费会比较贵……所以可以选择买一年或更久,这样比较划算。

当你选择云服务器的时候,只需要注意两个地方:

  • 系统镜像:Ubuntu 20.04 或者 Ubuntu 22.04
  • 机房:选择国内机房

其他配置保持不变即可。

买好之后打开腾讯云,就可以看到你刚刚买的产品了:

点击登录,通过网页我们就可以操作这个服务器了,虽然方便,但是整体来说功能还是比较有限。临时用一下还行,但是要想重度使用,或者使用一些更进阶的功能,就需要使用更专业的工具来连接云服务器。

终端工具的种类非常多,推荐使用xshell,它是老牌的功能非常强的终端软件。

下载好之后一路next即可。

要想使用xshell连上云服务器,就需要明确云服务器的几个信息:
外网IP:

用户名:大部分Linux默认用户名是root,对于Ubuntu系统来说,默认的用户名可能是root或者ubuntu。

密码:

工具栏---文件---新建对话:

点击连接,点了之后会弹出对话框问你是否要保存密钥----是;

弹出对话框-----输入用户名------勾选保存

 

弹出对话框----输入密码----保存: 

上述操作都成功之后就可以进入Linux界面了:

连接失败:

连接成功:

 

这个也是登录成功:

 Linux 常用命令

1. ls命令

  • 语法: ls [选项] [目录或文件]
  • 功能: 该命令用于列出目录下的所有子目录和文件。对于文件,它将显示文件名以及其他信息。
  • 常用选项:
    • -a:列出目录下的所有文件,包括以 . 开头的隐含文件。
    • -d:将目录象文件一样显示,而不是显示其下的文件。例如,ls –d 指定目录 将只显示指定目录的信息。
    • -k:以 k 字节的形式表示文件的大小。例如,ls –alk 指定文件 将以 k 字节形式显示文件信息。
    • -l:列出文件的详细信息,包括文件类型、权限、所有者、大小等。
    • -r:对目录进行反向排序。
    • -t:以时间排序,显示最近修改的文件在前。
    • -R:列出所有子目录下的文件(递归)。

ll命令:

  • ll是一些Linux发行版中预定义的命令别名,通常是ls -l的快捷方式。
  • ll的显示效果与ls -l相同,列出目录中文件的详细信息,包括文件类型、权限、所有者、组、大小、修改时间等。
  • 在很多系统中,llls -l实际上是相同的,用于以长格式列出目录内容。它们之间的区别通常是由用户自定义的别名或脚本引起的。

注意:后续学习的一些命令建议都在你自己的主目录下进行操作,不要把你的操作影响到系统目录中的内容。 

 

2. pwd命令

  • 语法: pwd
  • 功能: 该命令用于显示用户当前所在的目录。
  • 示例: 如果当前目录是 /home/user/documents,执行 pwd 将输出 /home/user/documents

3. cd命令

  • 语法: cd 目录名
  • 功能: 该命令用于改变工作目录,将当前工作目录改变到指定的目录下。
  • 示例:
    • cd ..:返回上级目录。
    • cd ~:进入用户家目。
    • cd -:返回最近访问的目录。

 

我们当前就处在根目录,此时再次输入 ll :

我们还可以随心所欲的切换当前目录:

我们先看看当前目录下有哪些文件:

太少了,换一个, cd ..:返回上级目录:

那么多内容,我们现在只输入一个 ll a,只按一个tab,它是没有反应的,连按两次: 

 通过pwd,我们可以查看到当前我们所处路径的绝对路径:

4. 认识Linux目录结构

  • Linux是一个树形目录结构,其中几个特殊的目录包括:
    • /:称为根目录,是整个文件系统的起点。
    • .:称为当前目录。
    • ..:称为当前目录的上级目录。

5. 绝对路径 vs 相对路径

  • 绝对路径: 以根目录开始的完整路径。例如,/usr/share/tomcat/logs/ 表示 logs 目录位于 tomcat 目录下的 share 目录下的 usr 目录下。
  • 相对路径:... 开头的路径。例如,./logs 表示 logs 目录位于当前目录下,而 ../backup 表示 backup 目录位于当前目录的上级目录。

6. 使用Tab键补全

  • 在Linux中,敲击Tab键可以自动补全命令或目录名称,提高输入效率。

7. 使用Ctrl+C重新输入

  • 使用Linux的时候,如果命令或者目录输入错误,可以使用 Ctrl+L终止当前正在执行的命令,然后重新输入正确的命令。

8. 清屏操作

  • 命令: clear
  • 功能: 该命令用于清空终端屏幕,使终端窗口变得干净整洁。

9. touch命令

  • 语法: touch [选项]... 文件...
  • 功能: 该命令用于更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。
  • 举例: touch test.txt 将在当前目录下创建或更新名为 test.txt 的文件。(注意不要搞在根目录下,容易把系统搞出问题……当然云服务器上重装系统也不是很麻烦)

10. cat命令

  • 语法: cat [选项] [文件]
  • 功能: 该命令用于查看目标文件的内容。
  • 常用选项:
    • -n:对输出的所有行进行编号。

11、echo命令

  • 语法: echo [选项] [字符串或变量]
  • 功能: echo命令用于将字符串或变量的值输出到标准输出设备(通常是终端)。
  • 常用选项:

  • -e:允许对字符串中的转义字符进行解释。
  • -n:不输出结尾的换行符。
  • echo -e "This is a line.\nThis is another line."  # 解释转义字符
    echo -n "No newline at the end."  # 不输出结尾的换行符
    

    但是每次echo什么,它就会重定向什么,它会把原有的文件内容清空然后再写入。每次都只保留当前这一次的内容。 如果你不想每次都把上次的内容清空,那么可以选择:echo 'hello' >> test.txt。

12. vim命令

Vim(Vi Improved)文本编辑器:

Vim是一款强大的文本编辑器,相当于Windows的记事本,但功能更为强大。与其他查看文本的命令(如cat、less、head、tail等)不同,Vim不仅可以查看文本还可以编辑文本。当然,虽然它和记事本的定位差不多,但是实际上vim的使用要复杂多了。我们此处只介绍一些最基础的操作。

  • 语法: vim [文件名]
  • 功能: Vim是一个文本编辑器,用于创建、查看和编辑文本文件。
  • 使用方法:

1. 创建文件 / 打开文件

使用Vim打开文件或创建新文件的命令为:

vim [文件名]

2. 进入插入模式

  • Vim包含很多快捷键,快捷键的画风和其他的软件截然不同,其他很多软件的快捷键一般都要搭配Ctrl、alt 之类的组合键完成。
  • vim更希望输入单个按键就能起到快捷键的效果,引入了“模式”概念。
  • Vim打开文件后默认处于普通模式。在普通模式下,键盘的按键表示一些特殊功能的快捷键。
  • 进入插入模式以进行文本编辑,可以按下i键。在插入模式时,左下角会提示 --INSERT--

3. 保存

  • 在xshell中,按Ctrl + S,是冻结屏幕的意思,有时候服务器打印日志太快了,滚动起来看不清,就可以冻结屏幕。可以按Ctrl + Q 解除冻结。
  • 在插入模式下不能保存文件,需要先回到普通模式。按下Esc键回到普通模式。
  • 在普通模式下,输入 :w,进入命令模式,此时输入的内容就是vim的命令了。敲下 :wq  ,再按下回车,即可保存文件。(w:write 保存;q:quit 退出)

4. 退出

  • 在插入模式下不能退出,需要先回到普通模式。
  • 在普通模式下,输入 :q,再按下回车,即可退出。
  • 可以直接使用 :wq 同时执行保存和退出。

 

关于Vim的更多用法

  • Vim的用法远不止上述内容,还包括删除、复制、粘贴、查找替换等丰富功能。
  • 感兴趣的话可以参考官方教程,通过在终端输入 vimtutor 进入,以及《Vim实用技巧》等学习资源。

Vim在代码编辑中的应用

  • 熟练使用Vim能够大大提高代码编辑效率。
  • 主流的开发工具(如IDEA、VSCode等)都支持Vim风格的快捷键。
  • 遗憾的是,熟练使用Vim并不是一件容易的事情,可能需要长时间的练习和积累经验。

13. mkdir命令

  • 语法: mkdir [选项] dirname...
  • 功能: 该命令用于在当前目录下创建一个名为 dirname 的目录。
  • 常用选项:
    • -p--parents:可以是一个路径名称。若路径中的某些目录尚不存在,加上此选项后,系统将自动建立那些尚不存在的目录,即一次可以建立多级目录。
  • 举例: mkdir -p /path/to/new/directory 将会递归地创建多级目录。

还可以一次性创建多级目录:

14. rm命令

  • 语法: rm [-f -i -r -v] [dirName/dir]
  • 功能: 该命令用于删除文件或目录。
  • 常用选项:
    • -f:即使文件属性为只读(即写保护),也直接删除,无需确认。
    • -i:删除前逐一询问确认。
    • -r:删除目录及其下所有文件,进行递归删除。
    • -v:显示详细信息,即删除的文件名。
  • 举例:
    • rm file.txt:删除名为 file.txt 的文件。
    • rm -r directory:递归删除名为 directory 的目录及其下所有文件。

 

 

 重要注意事项: 千万不要运行 rm -rf / , 尤其是在公司的生产服务器上。

有两种情况很坑人:

1、

2、 

15. cp命令

  • 语法: cp [选项] 源文件或目录 目标文件或目录
  • 功能: 该命令用于复制文件或目录。
  • 说明: 如果同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则将前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
  • 常用选项:
    • -f--force:强行复制文件或目录,不论目的文件或目录是否已经存在。
    • -i--interactive:覆盖文件之前先询问用户。
    • -r-R--recursive:递归处理,将指定目录下的文件与子目录一并处理。

 

16. mv命令

  • 语法: mv [选项] 源文件或目录 目标文件或目录
  • 功能:
    1. 根据mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
    2. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个,它将所给的源文件或目录重命名为给定的目标文件名。
    3. 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。
  • 常用选项:
    • -f:强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
    • -i:若目标文件(destination)已经存在时,会询问是否覆盖。

 

还可以进行重命名:

17. man命令

 

按Q就能够顺利退出。 

  • 语法: man [选项] 命令
  • 功能: 用于查看联机手册,获取命令的帮助信息。
  • 常用选项:
    • -k:根据关键字搜索联机帮助。
    • num:只在第num章节找。

18. grep命令

  • 语法: grep [参数]... [文件]...
  • 功能: 用于查找文件中是否包含指定字符串,并显示对应的行。
  • 常用选项:
    • -n <行数>:显示的行数。
    • -w:全字匹配,要求整个单词都完全相同的结果才能匹配出来,而不仅仅是一个单词的一部分。
    • -r:递归查找,可以搜索多级目录下的所有文件。
    • --color:高亮查找到的结果。
    • --include:指定查找某些文件。
    • --exclude:指定排除某些文件。

19. ps命令

  • 语法: ps [参数]...
  • 功能: 用于查看当前系统上运行的进程。
  • 常用选项:
    • a:显示一个终端的所有进程。
    • u:以用户为主的格式来显示程序状况。
    • x:显示所有程序,不以终端机来区分。

 

 

20. netstat命令

  • 语法: netstat [参数]...
  • 功能: 查看系统上的网络状态。
  • 常用选项:
    • -a:显示所有正在或不在侦听的套接字。
    • -n:显示数字形式地址而不是去解析主机、端口或用户名。
    • -p:显示套接字所属进程的PID和名称。

直接输入 netstat,得到的信息其实还不是特别完整: 

我们一般使用 netstat -anp:

结果显而易见的更加丰富了。

我们主要关注一下上面的 TCP/UDP涉及到的网络信息,而相比之下,下面的Unix 域套接字(属于进程直接通信的方式)我们暂且不关注。

学到这里,我相信你对于Linux的语言有了一种比较直观的感受。

Linux的哲学理念(从Unix继承而来)就是“小而美”,每个命令都很简单,如果想要完成复杂的工作就需要把多个命令通过 | (管道)这样的方式组合起来。


说回正题,我们想要部署我们的程序,就需要先搭建好环境。

如何在Linux上搭建Java web 程序的运行环境?

我们需要其他的一些程序把这个环境搭建起来,因为我们的博客系统是依赖于这几个程序的,所以一定要引入这几个程序的依赖:

1、JVM(JDK);

2、Tomcat;

3、MySQL数据库。

在Linux上我们是通过命令的方式来安装的。网上会给出很多种不同安装的方式,我们直接使用最简单的方式即可——基于“包管理器”进行安装。

“包管理器”类似于“中央仓库”的概念。Linux会把一些软件包放到对应的服务器上,通过包管理器这样的程序,我们就可以把这些软件包下载安装好。但是软件包不一定全面,好在像MySQL、jdk这样比较知名的软件还是存在的。

1、JVM(JDK):

使用apt命令查看服务器上有哪些软件包,这里需要确保处于管理员目录下,如果不是,需要使用sudo su 这样的命令切换到管理员:

我使用的是jdk 8: 

使用apt安装软件包:

apt install 软件包名字:

在Linux命令行中,复制Ctrl + insert,粘贴shift + insert。有的笔记本电脑的键盘上的insert需要搭配Fn来按。这可能很不方便,所以你也可以在“工具”查看快捷键,然后修改一下快捷方式:

但是千万不要乱改,在Linux里面,Ctrl+C的作用是终止当前程序。 

好,接着刚才,它会紧接着问你[Y/N],输入 Y 即可安装:

安装成功:

2、Tomcat:

你会发现tomcat的版本好像比较超前,我们用的是tomcat8.5,搭配Servlet 3.1。如果是tomcat的9,那么就需要搭配Servlet 4.0。

所以我们干脆手动下载:

 打个包,上传到Linux:

把要上传的压缩包拖过去。一次只能拖一个文件,所以我们需要打包。

但是:

使用 unzip 命令解压缩:unzip apache-tomcat-8.5.95.zip

cd apache-tomcat-8.5.95/bin。

将所有 .sh 后缀的文件加上可执行权限: chmod +x *.sh 

启动 Tomcat:sh bin/startup.sh

出现如下:

通常情况下,Linux终端中文件和目录的颜色显示可以提供有关文件/目录类型和权限的信息。在典型的配置中,绿色可能表示可执行文件。在这里,如果 startup.sh 和 catalina.sh 等脚本的字体是绿色的,这意味着这些脚本具有可执行权限。

要启动 Tomcat,运行以下命令: ./startup.sh

看到:

那么 Tomcat 已经启动了。

其中,是我的 Tomcat 的实际路径。如果 Tomcat 启动了,我们应该能够通过浏览器访问tomcat的页面来验证它是否正在运行。 

验证启动是否成功:

 

我们还可以通过浏览器直接访问tomcat的欢迎页面: ​​​​​​​​​​​​

 

这就说明我们的tomcat确实正在运行中。 

当然,这个步骤你不一定很顺利。因为你的云服务器的防火墙/安全组还没有确认打开: 

如果你去网上搜索 Linux 防火墙,能够搜到一些 firewalld 这样的一些相关资料。

但是我们这里谈到的防火墙不是 firewalld,你不应该在你的云服务器上敲任何 firewalld 相关的命令。

敲这样的命令很可能就直接把你现有的网络环境给搞坏了。

正确的做法是:打开云服务器,后台管理页面:

 

当你把端口号开放之后,外界才能够访问到你的这个8080端口号。

这里的填写方式可能每个厂商都略有不同,因为不同的云服务器厂商有不同的要求,你需要按照人家的规则填写。

当你把端口号开放之后外界才能够访问到你的8080端口。

但是!!!你把8080放出去,安全性勉强还行,但是你千万不要把你的3306或者6379端口开放出去。否则不到一个月,你的云服务器将会被黑客拿走,要么叫你往账户里打比特币,要么就把你的数据库给删咯~

3、MySQL数据库:

我们这里还是直接通过apt安装:

 

 

安装好了之后,MySQL服务器一般来说就自动启动了,我们可以确认一下: 

你也可以直接连接客户端:

现在我们的运行环境就搭建好了!接下来就开始正式进行程序的部署!!!

最后一点需要注意:如果你是多个人共用同一个服务器,上述安装过程就需要你和你的通信商量好,装一份就行了。不要多次重复安装,不然大概率要出问题。 

正式进行程序的部署

1、把数据库/数据表都在云服务器上创建好

当把程序放到云服务器上执行,程序访问的就是云服务器上的数据库了。

我们需要确保数据库里面有数据(有表、有库)

 

把我们之前代码中的 db.sql 中的内容复制到云服务器的 mysql 客户端中,执行:

复制:

 

粘贴到终端: 

 

2、针对程序进行打包

打包之前我们还需要确认一下和数据库相关的配置是否需要修改。

在IDEA里面看看我们的DBUtil关于数据库的相关配置:

其他都不用修改,只有密码……

你Windows上的数据库密码是你安装的时候设置的,但是Linux的MySQL密码好像还没有设置过。

没有设置过密码就是没有密码,所以我们把这里的密码直接清空即可。

改成空字符串:

 接下来就是打成war包:

pom.xml里面:

 

3、把这个war包上传到Linux的tomcat的webapp目录中 

用资源管理器打开:

在Linux中退出MySQL控制台界面,使用Ctrl + D 即可,表示EOF(意思就是输入完了) 。

打开webapps目录,直接拖拽过来:

 

tomcat会自动针对war包进行解压缩:

 

解压缩成功一般就代表部署成功了~~~

我们现在就可以通过浏览器进行访问:地址还是刚才那个地址,端口号还是8080:

进入登录页:

打开云服务器的博客系统,可能会出现背景图卡顿的情况,这是因为服务器网络带宽比较低,影响不大,如果想要快一点……那就是另外的价钱了~~

现在我们登录一下:

 

 

当前看到的问题是”使用密码登录不上去了……”

我们现在有两个解决办法:
1、手动给这个数据库设置一个其他的密码,使用这个密码来登录;

2、可以直接把数据库的验证密码的功能给关闭掉 (釜底抽薪),使用这个方案,任何密码都能登录了。


我首先选择了第二种方式:在[mysqld]下添加skip-grant-tables
找到 mysql的配置文件,加上上述配置项,此时需要重启一下 mysql。

但是除了点别的问题,MySQL和3306端口号绑定不上去了……

试了好半天,感觉都没别的错误,但就是连接不上,可能和MySQL 8 的版本有关系……

无奈之下,我们选择第一种看看:

MySql8.0修改root密码_mysql8修改root密码-CSDN博客

 

 好,我们现在再次刷新:

成功进来了!

此时,只要任何一个有网络的用户都可以访问到我们的云服务器了~~~ 

以后你想要添加任何用户,都可以通过云服务器来添加:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/140658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PyCharm鼠标控制字体缩放

File->Settings->Keymap 右边搜索栏输入increase(放大)&#xff0c;可以看到下面出现increase Font Size(放大字体尺寸)&#xff0c;双击。 双击后出现几个选项&#xff0c;选择Add Mouse Shortcut,会出现一个页面给录入动作。 按住Ctrl同时鼠标向上滚动&#xff0c;该动…

双十一“静悄悄”?VR购物拉满沉浸式购物体验

以往每年的双十一&#xff0c;都会因为电商购物狂欢而变得热闹非凡&#xff0c;而各大电商平台也会在这天推出各种促销活动。但是&#xff0c;近几年来&#xff0c;双十一正在变得“静悄悄”。一个原因是消费群体越发理性消费&#xff0c;更加重视商品本身的质量和体验&#xf…

java8函数式编程(Lambda表达式,Optional,Stream流)从入门到精通

文章目录 函数式编程Lambda表达式Stream流创建流中间操作终结操作注意事项 Optional创建对象消费值获取值过滤判断数据转换 方法引用高级用法基本数据类型优化并行流 函数式编程 不关心具体的对象&#xff0c;只关心数据参数和 具体操作 Lambda表达式 格式&#xff1a; () -&…

深度学习(生成式模型)——Classifier Guidance Diffusion

文章目录 前言问题建模条件扩散模型的前向过程条件扩散模型的反向过程条件扩散模型的训练目标 前言 几乎所有的生成式模型&#xff0c;发展到后期都需要引入"控制"的概念&#xff0c;可控制的生成式模型才能更好应用于实际场景。本文将总结《Diffusion Models Beat …

【TiDB】TiDB CLuster部署

目录 0 大纲 一 集群部署工具TiUP简介 1 TiUP 简介 2 TiUP使用 3 TiUP使用举例 二 TiDB Cluster安装配置需求 1 生产环境硬件需求 2 操作系统需求 三 TIDB部署 1 软硬件需求以及前置检查​编辑 2 安装TiUP 组件 ​3 集群拓扑文件 4 执行部署命令 &#xff08;1&…

视频号小店怎么做?运营四步骤,快来学习!

大家好&#xff0c;我是电商糖果 2023年因为视频号小店的爆火&#xff0c;想尝试开店的朋友也不少。 但是因为自己是新手小白&#xff0c;对做电商方面了解的也并不多&#xff0c;再加上它是一个才出来一年多的电商平台。对它的很多规则和玩法并不清楚。 所以&#xff0c;这…

竞赛选题 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

Makefile的简单语法学习

通配符 假如一个目标文件所依赖的依赖文件很多&#xff0c;那样岂不是我们要写很多规则&#xff0c;这显然是不合乎常理的&#xff0c;我们可以使用通配符&#xff0c;来解决这些问题。 我们对上节程序进行修改&#xff0c;代码如下&#xff1a; test : a.o b.ogcc -o test $…

【原创】java+swing+mysql办公用品管理系统设计与实现

摘要&#xff1a; 办公用品管理系统是一个设计和实现办公用品库存和使用管理的信息系统。此系统可以提高办公用品的利用率&#xff0c;减少浪费&#xff0c;使办公用品管理更加高效、规范、便捷。本文主要介绍使用javaswingmysql技术去开发实现一个办公用品管理系统。 功能分…

【JUC】三、集合的线程安全

文章目录 1、ArrayList集合线程安全问题分析2、解决方式一&#xff1a;Vector或synchronizedList( )3、解决方式二&#xff1a;CopyOnWriteArrayList 写时复制4、HashSet集合线程不安全的分析与解决5、HashMap集合线程不安全的分析与解决 1、ArrayList集合线程安全问题分析 对…

削峰填谷:居民小区电动汽车有序充电策略研究

摘 要&#xff1a;针对电动汽车在居民小区无序充电对电网系统产生严重隐患及充电间时过长问题&#xff0c;提出一种采用延迟充电的电动汽车有序充电控制策略&#xff0c;并在分析国内外电动汽车有序充电的研究现状后&#xff0c;设计了居民小区电动汽车有序充电策略的总体框架。…

体验家XMPlus收购NPSMeter,稳固体验管理行业“领头羊”地位

2023年9月30日&#xff0c;体验家XMPlus&#xff08;以下简称“体验家”&#xff09;成功完成了对NPSMeter的收购。此次收购是中国客户体验管理&#xff08;CEM&#xff09;赛道进入快速发展以来的首单收购&#xff0c;标志着体验家在CEM领域的进一步扩张&#xff0c;旨在继续完…

Ribbon 负载均衡原理和策略

目录 一、Ribbon 是什么 二、Ribbon 负载均衡原理 三、Ribbon 负载均衡策略 四、Ribbon的应用场景 一、Ribbon 是什么 Ribbon是一个开源的、基于HTTP和TCP的客户端负载均衡工具&#xff0c;它提供了一个简单的、基于配置的负载均衡策略&#xff0c;可以帮助开发人员更轻松…

UITableView的style是UITableViewStyleGrouped

一般情况下&#xff0c;UITableViewStylePlain和UITableViewStyleGrouped是UITableView常用到的style&#xff0c; 之前都是用到的时候&#xff0c;遇到问题直接用度娘&#xff0c;差不多就够用了&#xff0c;今天在修复UI提出的间隙问题&#xff0c;来回改&#xff0c;总觉得…

晶圆代工产能利用率下降,降价大战一触即发 | 百能云芯

晶圆代工行业正面临产能利用率的重大挑战&#xff0c;据悉&#xff0c;联电、世界先进和力积电等主要代工厂纷纷降低明年首季的报价&#xff0c;幅度高达两位数百分比&#xff0c;项目客户降幅更高达15%至20%&#xff0c;各大晶圆代工厂深陷产能利用率六成保卫战。 晶圆代工降价…

EDA实验----四选一多路选择器设计(QuartusII)

目录 一&#xff0e;实验目的 二&#xff0e;实验仪器设备 三&#xff0e;实验原理&#xff1a; 四&#xff0e;实验要求 五&#xff0e;实验内容及步骤 1.实验内容 2.实验步骤 六&#xff0e;实验报告 七.实验过程 1.创建Verilog文件&#xff0c;写代码 2.波形仿真 …

如何在苹果iOS系统ipa应用中获取当前版本号和Bundle ID

在iOS应用开发过程中&#xff0c;了解如何获取和使用应用的当前版本号、Bundle ID和其他相关信息是至关重要的。无论是在应用内显示这些信息&#xff0c;还是在编写一些版本依赖的逻辑时&#xff0c;掌握这些知识点都将帮助开发者进行更有效的管理和维护。本文将详细介绍如何在…

暖手宝上架亚马逊美国站UL499报告测试标准要求

暖手宝是运用物理及化学原理研制的自动取暖保健用品。该产品以其自动生热&#xff0c;有趣&#xff0c;实用等新颖独特的优势&#xff0c;深受欢迎——暖手宝具有自动取暖&#xff0c;理疗保健等多种功能。只要插上电源等上10分钟左右就能发热&#xff0c;最后一种是通过锂电池…

【华为OD题库-015】报文重排序-Java

题目 对报文进行重传和重排序是常用的可靠性机制&#xff0c;重传缓冲区内有一定数量的子报文&#xff0c;每个子报文在原始报文中的顺序已知&#xff0c;现在需要恢复出原始报文。 输入描述 输入第一行为N,表示子报文的个数&#xff0c;0<N < 1000。 输入第二行为N个子报…

【FISCO BCOS】十九、区块链浏览器部署

目录 一、环境依赖 检查环境 1.检查java 二、拉取安装脚本 获取部署安装包 ​编辑 解压安装包 进入目录 三、修改配置 四、部署服务 五、状态检查 检查前后端进程 1.检查后端server进程 2.检查前端的nginx进程 检查进程端口 六、使用区块链浏览器 1.配置群组…