云服务器部署 Web 项目

2023-11-06

一: 搭建 Java 部署环境

之前说过 yum这个命令了,是"包管理器",可以理解为他就像是"应用商店",我们需要安装 JDK,Tomcat,还有Mysql,当然,我们下载需要用 yum install,必须使用管理员权限(root)

yum list | grep [软件包关键字] 功能:查看软件包列表
yum install [软件包名字] 功能:安装软件包(需要管理员权限)
yum remove [软件包名字] 功能:卸载软件包(需要管理员权限)

1: 安装 JDK

首先,我们先搜索一下,看看 yum 上关于 jdk 有没有,以及叫什么名字,我们可以通过 yum list命令就能列出来 相应的服务器上所有的软件包的名字(当然不要就这样敲,这样敲会把所有东西都列出来,会非常多,我们搭配 grep 来使用:yum list | grep gdk),只搜寻jdk的:在这里插入图片描述

这些版本都是不一样的,所以有好多,我们要认准这个标志:
在这里插入图片描述
devel(表示开发工具包,也就是 jdk),东西最全,x86_64表示是这个软件包适用于 cpu 是64位的 x86 cpu(我们现在服务器用的cpu主要都是 x86 64位),
在这里插入图片描述
上面有个.i686的是32位的,差别很大

我们把上面那个64位的复制下来(ctrl+insert)
yum install java-1.8.0-openjdk-devel.x86_64
在这里插入图片描述我安装过了,第一次记得按 y
验证是否安装成功,输入 javac查看
在这里插入图片描述

注意此处我们安装的 jdk 是 OpenJDK ,和我们之前学 Java 用的 JDK 还不是一个,咱之前在 windows 上安装的 JDK 是 Oracle 官方的 JDK,OpenJDK 是 开源组织开发的另一个 JDK,虽然不是同一个,但是问题不大,都是用相同的 JVM Hostspot.(整体差别很小,所以没有必要去安装 Oracle JDK)

2: 安装 Tomcat

在这里插入图片描述
我们发现yum上面虽然有 tomcat,但是版本比较老,是 7.0系列的,而我常用的是 8.5系列的,因为我们也知tomcat,JDK,Servlet,mysql这种版本都要匹配才稳定,所以我们需要进入tomcat官网进行下载:https://tomcat.apache.org/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可能有些拖拽不成功,因为拖拽上传依赖 rz命令,需要先 yum install lrzsz 来安装依赖命令,才能上传,rz 把 windows 上的文件 传给 Linux 服务器,sz 把 Linux 上的文件传给 Windows

然后我们需要对 这个文件解压缩:unzip [压缩文件]
在这里插入图片描述

在这里插入图片描述
进入 文件夹查看:
在这里插入图片描述

接下来就是启动tomcat了:

要想启动 tomcat,需要用到startup 脚本,其中 .bat是给 windows 使用的,.sh是给 Linux 使用的…

首次启动我们需要先给所有的 .sh 文件设置 可执行权限
cd 到 bin目录下,然后执行 chmod+x *.sh(给目录中所有.sh后缀的文件都加上可执行权限),加过之后,后面就不用加了
在这里插入图片描述
在输入:sh startup.sh启动脚本
在这里插入图片描述

总结

1: 先在官网下载 .zip 包
2: 把 zip 传到 linux 上,直接拖进去就行,不行就yum install lrzsz命令先下载
3: 使用 unzip 命令进行解压缩,同样可能也需要先下载
4: 切换到 bin 目录给所有 .sh加上可执行权限:chmod+x *.sh
5: sh startup.sh启动 romcat
(前四步首次使用需要做的,后面就不需要了,且才相关目录里执行命令)

如何验证tomcat是否启动成功?

1: 查看 tomcat 进程:
ps aux | grep tomcat,ps命令相当于windows上的任务管理器,会打印出当前主机的所有进程,grep tomcat按照 tomcat 关键字来进行匹配
在这里插入图片描述

2: 查看 tomcat 的端口,默认是 8080
看下端口号是否被绑定:netstat -anp | grep 8080
在这里插入图片描述有这个就是启动成功

如果端口号被占用了,可以自己修改:
在这里插入图片描述
找到 conf这个目录的 server.xml
vim server.xml进入编辑
找到这俩端口,改了就行
在这里插入图片描述在这里插入图片描述

3: 还可以验证一下看能否访问 tomcat 的欢迎页面
如果能访问,就启动成功 外网IP+8080(自己设的端口号)就行了
在这里插入图片描述

可能有些人买了服务器,并没有展示出来,因为云服务器厂商,为了保护咱们的服务器不受黑客的攻击,对于哪些端口能被外部访问进行了严格的限制,绝大部分端口在默认的情况下,无法通过外网来访问的,这就需要我们去官网开启防火墙/安全组,在后台页面配置,允许哪个/哪些端口可以对外访问,一定要保证 服务器是可访问的才能访问

在这里插入图片描述在这里插入图片描述在这里插入图片描述
再把这个加上就行了:在这里插入图片描述

3: 安装 MySQL

我们自己的电脑和Linux 服务器是两台机器,因此,想要让程序在服务器上运行,我们就要给服务器装上 MySQL,这里我参考了以下安装教程:https://zhuanlan.zhihu.com/p/49046496

这里我们安装的 MySQL 孪生兄弟,MariaDB,这俩的API 都是兼容的,效果一样.同时安装他都是要以 root 用户进行操作的.
具体步骤:

(1): 依次安装

安装 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

(2): 更改配置

通过 vim按下 i 进入插入模式更改以下配置,要细心操作,最后按下 esc 在按下 :wq 保存退出

  1. 更改: /etc/my.cnf.d/client.cnf 文件
    [client] 下加一行配置 default-character-set=utf8
vim /etc/my.cnf.d/client.cnf

效果:
在这里插入图片描述

  1. 更改 /etc/my.cnf.d/mysql-clients.cnf 文件
    [mysql] 下加一行配置 default-character-set=utf8
vim /etc/my.cnf.d/mysql-clients.cnf

效果:
在这里插入图片描述

  1. 更改 /etc/my.cnf.d/server.cnf 配置
    [mysqld] 下加配置
    collation-server = utf8_general_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    sql-mode = TRADITIONAL
vim /etc/my.cnf.d/server.cnf

效果:
在这里插入图片描述

(3): 启动

启动服务: systemctl start mariadb
设置服务开启自启动:systemctl enable mariadb
查看服务状态:systemctl status mariadb
注意到 Active 状态为 active (running)
在这里插入图片描述

(4): 测试连接

使用命令行客户端尝试连接:mysql -uroot
在这里插入图片描述
查看 mariadb 版本号:select version();
在这里插入图片描述

查看字符集配置:show variables like '%char%';
在这里插入图片描述
好了,到这里就大功告成了
注意:我这里是没有设置密码直接登录的,因为我的数据库啥值钱的都没有,也不怕别人折腾,就懒得设了

二: 部署 web 项目

1: 给服务器准备好依赖的数据

之前的数据库跟这里的数据库是没关系的,我们需要把之前的数据给复制过来
在这里插入图片描述
在这里插入图片描述

成功导入!!

2: 微调我们的 Java 代码

之前我们在写 java 代码的时候,访问数据库有一个密码,而这里云服务器上的数据库的密码是不一样的,我们云服务器上根本就没有设置密码,是空字符串
在这里插入图片描述

3: 重新打包

这里要用我们原始的打包过程,需要基于 maven 的 package 操作来生成 war 包!首先就是先在pom.xml里面设置成war包,名字就设置为 blogSystem
在这里插入图片描述

在这里插入图片描述在这里插入图片描述
然后再左侧的target目录下有生成的 war 包
在这里插入图片描述

在这里插入图片描述

4: 上传到服务器上

一个字: 拖!把刚刚的 war 包拖到我们云服务器的 webapps目录下,tomcat如果在运行中,就会自动对 war 进行解压缩
在这里插入图片描述

5: 验证

进行登录查看是否成功:博客系统(用户名:lisi 密码:123)
在这里插入图片描述
在这里插入图片描述

到这里,web项目就部署完成了!!!(由于背景图有点大,可能加载有点慢,这是正常现象)
我们在遇到问题的时候不要害怕一是我们可以通过抓包来查看问题原因,还有就是要习惯于看 logs 日志文件寻找问题,出错了就找最新的文件日期,最好全都看…
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

云服务器部署 Web 项目 的相关文章

  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • 有没有办法提高linux管道的性能?

    我正在尝试使用 64 位将超高速数据从一个应用程序传输到另一个应用程序CentOS http en wikipedia org wiki CentOS6 我使用以下方法进行了基准测试dd发现阻碍我的是管道而不是程序中的算法 我的目标是达到
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • BeagleBone Black 如何用作大容量存储设备?

    是否可以使用 BB 作为大容量存储设备 我希望将其连接到可以从 USB 连接 例如 USB 闪存驱动器 读取文件的音频播放器并充当包含一个特定文件夹的数据存储设备 及其子文件夹 从文件系统 如果可能 在连接到开发板的闪存驱动器上 正如设备规
  • 如何在 Ubuntu/Linux 发行版中安装 Tesseract-OCR 3.03?

    我和一个朋友有兴趣为 CV 项目训练 tesseract OCR 引擎 我们尝试使用一些包装器 例如 PyTesser 和 pyocr 但结果目前不如我们需要的那么准确 因此 我们希望尝试训练超立方体以更好地实现我们的目的 即识别食品标签上
  • 使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

    非常简单的例子是 city print city 我期望输出是 但实际上输出是相反的字符串 字母看起来有点不同 因为它们有开始 中间和结束形式 我无法将其粘贴到此处 因为复制粘贴会再次更正字符串的顺序 如何在 Linux 终端上正确打印阿拉
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • 设置 Vim 背景颜色

    当我尝试更改背景颜色时 vimrc或者直接在 Vim 中使用以下命令 set background dark 这根本不影响我的背景 也没有light选项 不过 当我运行 gvim 时 看起来还不错 有没有办法在不更改 Konsole 设置的
  • 期待、互动,然后再次期待

    有几篇关于相同内容的帖子 但我仍然无法使我的期望脚本正常工作 我的目的是自动化一切 但保留用户输入的密码 所以脚本有 3 个部分 自动登录 给予用户交互以输入密码 将控制权交还给 Expect 脚本以继续工作 所以我有一个将生成的脚本 其中
  • 如果目录不存在,有没有办法让 mv 创建要移动到的目录?

    因此 如果我在主目录中并且想将 foo c 移动到 bar baz foo c 但这些目录不存在 是否有某种方法可以自动创建这些目录 以便你只需要输入 mv foo c bar baz 一切都会顺利吗 似乎您可以将 mv 别名为一个简单的
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • Tomcat虚拟主机

    我有一个托管在服务器上的应用程序 我希望所有小客户共享一个虚拟主机 并且我想为每个大客户设置一个专用的虚拟主机 应用程序完全相同 我可以将虚拟点指向相同的代码库目录吗 我使用Tomcat 7作为应用程序服务器 请指教 Thanks 如果他们
  • 配置jmxremote时无法正常停止tomcat

    我添加了一个jmxremotecatalina bat中的配置 set JAVA OPTS Dcom sun management jmxremote port 9004 Dcom sun management jmxremote ssl
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • SVN 不断提示我输入密码并拒绝缓存我的凭据

    环境 Eclipse Indigo Ubuntu 11 04 Subclipse 1 6 SVN 客户端 Subclipse RabbitVCS 我通过 svn ssh 连接 我的网址如下所示 svn ssh 我的名字 我的域名 路径 我可
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • Tomcat 7 - 在哪里设置“系统属性”?

    自从升级到 Tomcat 7 以来 我的 Web 应用程序出现了问题 我的会话将继续null在我登录并尝试执行任何操作 提交请求 后 我读到设置以下内容可能会有所帮助 org apache tomcat util http ServerCo
  • 为什么 proc/ID/maps 有多个共享库条目

    我正在查看嵌入式Linux下的proc ID maps 我注意到一些共享库在进程的内存映射中出现了几次 为什么会这样呢 40094000 400d9000 r xp 00000000 b3 09 723 system lib libc so

随机推荐

  • QT-通过控件ObjectName获取控制

    QT 通过控件ObjectName获取控制 示例 1 说明解释 示例 1 说明解释 代码如下 QString strObjectName QString lineEditDev5IP QLineEdit pLineEdit this gt
  • KVM中的ballooning详解

    KVM中的ballooning详解 1 Ballooning简介 通常来说 要改变客户机占用的宿主机内存 是要先关闭客户机 修改启动时的内存配置 然后重启客户机才能实现 而内存的ballooning 气球 技术可以在客户机运行时动态地调整它
  • kibana数据导入导出_怎么实现kibana的数据导入导出

    匿名用户 1级 2016 10 19 回答 logstash好说 client只需要在代码逻辑改下redis地址就可以了 logstash server直接docker pull镜像就可以了 elasticsearch需要我们自己写脚本迁移
  • 机器翻译 深度学习预处理实战(中英文互译)一

    深度学习预处理实战 中英文互译 文章目录 深度学习预处理实战 中英文互译 前言 一 获取中英互译的数据集 二 具体步骤 1 首先引入相关库 2 中英文预处理 3 主函数运行 前言 基于深度学习的机器翻译学习分为三步 1 解决自动将一种自然语
  • python获取指定时间段内特定规律的日期列表

    前言 写小程序时 遇到个需要自定义回归时间的场景 下面是实现的效果图 于我需求而言 我只需要用到fixed interval weekly per month三个方法返回的回归间隔列表就行 最后的这个make date from list方
  • 开源软件选型分析标准【转载】

    http wenku baidu com view 0f4acf88cc22bcd126ff0ca2 html re view 1 标准和目标 1 1前言目前开源的网管软件众多 时间关系只能通过网络上的资料介绍和其他用户的体验进行评估 对于
  • ROI Pooling层详解

    ROI Pooling层详解 原文链接 https blog deepsense ai region of interest pooling explained 目标检测typical architecture 通常可以分为两个阶段 1 r
  • NO.15 不得不说的以太坊跟ICO

    随着以太坊的出现 区块链进入了2 0时代 以太坊是个太神奇的东西 没有天才的想法 高超的技术以及黑客的精神是无法如此成功的 它实现了区块链项目的快速开发 快速实施 以太坊这个开发平台本身发行了一种币叫做以太币 ETH 使用此平台开发出来的应
  • APS系统介绍

    APS系统介绍 前言 听说新工作将是做APS系统 之前没接触过 所以查找了一些资料 整理学习记录于此 本文打算从以下几个方面来阐述 APS的概念 前提条件 怎么实现 优化算法 简单示例 APS概念 APS Advanced Planning
  • el-table表单实现点击编辑按钮对内容进行编辑

    el table表单实现点击编辑按钮对内容进行编辑 话不多说 先上效果图 这里我将按钮绑定了dialog对话框 避免直接在原有表行之间进行修改 因为后台管理系统多是响应式布局 使用dialog对话框可以更直观的让用户对内容进行编辑 而对于在
  • 【服务计算】docker实践报告

    docker实践报告 环境说明 准备docker环境 运行第一个容器 Docker基本操作 MySQL与容器化 拉取MySQL镜像 构建docker镜像 MySQL容器使用 Docker compose与多容器应用自动化部署 docker网
  • SpringBoot运行源码分析:Spring应用上下文刷新,java主流框架面试题

    protected void refresh ApplicationContext applicationContext Assert isInstanceOf AbstractApplicationContext class applic
  • 【eNSP】单臂路由+静态路由配置练习

    单臂路由 静态路由配置练习 单臂路由 又名子接口 实际上是一个逻辑接口 并不存在真正物理上的子接口 采用单臂路由 即在路由器上设置多个逻辑子接口 每个子接口都可以单独设置一个IP地址 对应于一个VLAN 由于物理路由接口只有一个 各子接口的
  • Flutter 实体类转String,String转实体类

    实体类转String方式 引用需要转换的包 import dart convert 转换方法 String jsonStr jsonEncode myInfosBeans String转实体类 引用转换包 import dart conve
  • render 怎么使用v-if

    在Vue中使用render函数 有些时候我们需要判断这个元素是否需要渲染 在正常的DOM结构中可以直接使用v if 但是 render函数中有些时候是无法使用v if 来进行判断 这时我们可以使用if 来判断是否添加该元素 render h
  • c++ 理解 关于构造函数和析构函数

    构造函数和析构函数 1 首先 C 有拷贝构造函数 拷贝赋值运算符 移动构造函数 移动赋值运算符和析构函数 构造函数可以先分为 默认构造函数和拷贝构造函数 如果我们在代码中不显示的自己声明构造函数的话 c 的编译器会为我们默认生成默认构造函数
  • STM32之ADC实验

    实验的基本功能 采集PC0引脚的输入电压 通过串口打印出采集的电压值 本实验是使用通道10 采集PC0引脚的输入电压 include stm32f10x h include stm32f10x usart h include
  • mac 卸载idea

    卸载MAC中的IDEA Intellij 首先在应用里面右键移动到垃圾桶 然后使用命令行 cd Users xxx Library 上面的xxx对应你的用户名 然后输入 rm rf Logs IntelliJIdeaxxx rm rf Pr
  • 域名续费怎么才能便宜?2023年腾讯云服务器和域名续费贵怎么续费便宜?

    背景 在腾讯云的有一个域名到期了需要续费 xyz续费居然有79元 真的贵 建议大家在购买域名之前参考我之前的文章 直接买个188元10年的top域名真的香 我是因为小程序都布置好了 如果重新更改域名太累了 所以只能续费 直接续费需要79元
  • 云服务器部署 Web 项目

    一 搭建 Java 部署环境 1 安装 JDK 2 安装 Tomcat 总结 3 安装 MySQL 1 依次安装 2 更改配置 3 启动 4 测试连接 二 部署 web 项目 1 给服务器准备好依赖的数据 2 微调我们的 Java 代码 3