21-部署 Web 项目到 Linux

news2024/11/27 3:13:45

目录

1.什么是部署?

2.如何部署?

2.1.本机连接远程mysql服务器(可选项)

2.2.在远程服务器mysql数据库上执行创建数据库、表的脚本

2.3.检查项目中连接mysql服务器的地址和密码是否正确

2.4.使用Maven打包项目,生成一个xxx.war包

2.5.将war包上传到tomcat的webapps目录下

2.6.重启tomcat,使用url地址访问项目

2.7.测试功能

PS:二次更新项目(第二次以上包含第二次)注意事项


1.什么是部署?

工作中涉及到的 "环境" :

  • 开发环境:程序猿写代码用的机器。
  • 测试环境:测试人员测试程序使用的机器,一般是退役的部署机器。
  • 生产环境(线上环境):最终项目发布时所使用的机器,对稳定性要求很高。

把程序拷贝安装到生产环境上,这个过程称为"部署",也叫"上线"。

这个过程需要拷贝对应的 .class 文件和依赖的资源文件。(各种配置文件, html等)

一旦程序部署成功,那么这个程序就能被外网中千千万万的普通用户访问到。

换句话说,如果程序有 BUG,这个 BUG 也就被千千万万的用户看到了。

部署过程至关重要,属于程序开发中最重要的一环。一旦部署出现问题,极有可能导致严重的事故(服务器不可用之类的)。

为了防止部署出错,一般公司内部都有一些自动化部署工具(如 Jenkins 等)。当前我们先使用手工部署的方式来完成部署。

2.如何部署?

2.1.本机连接远程mysql服务器(可选项)

也可直接在服务器上操作。

2.2.在远程服务器mysql数据库上执行创建数据库、表的脚本

按照之前的数据库建表脚本,在服务器上运行,建立相同的表结构。

2.3.检查项目中连接mysql服务器的地址和密码是否正确

如果本地密码和服务器密码一致,此步骤可忽略。

  • 这里可以写127.0.0.1,就是通过内网去连接的,最终程序要放到自己的远程服务器上,自己的远程服务器和mysql是在一台服务器上的,所以可以写127.0.0.1。
  • 也可以写47.95.157.248自己的远程服务器外网ip,但是就多此一举了,因为在连接mysql时会先出去找这个外网,找到之后又回来了。
  • 所以直接写内网127.0.0.1,其通信速度是会快很多的。

重点要检查密码是否一致。

2.4.使用Maven打包项目,生成一个xxx.war包

2.5.将war包上传到tomcat的webapps目录下

2.6.重启tomcat,使用url地址访问项目

先关闭tomcat:

检查:

再启动tomcat并检查:

在浏览器使用url地址访问项目:

2.7.测试功能

①如果出现500,后端sql报错:

将useSSL=true或false进行修改,重新打包,重启tomcat尝试。

PS:二次更新项目(第二次以上包含第二次)注意事项

要先停止tomcat,再更新程序,上传文件(war包),再启动tomcat,再次访问项目。

防止在更新时文件被占用,无法成功覆盖文件,导致更新失败。

②如果点击发布文章,页面没反应,报500错误:

 

500内部服务器异常,出错原因:程序代码写的有问题!

是mysql中文乱码问题:在创建数据库表时没有设置编码格式,且在Linux服务器上没有配置编码格式,导致不支持中文。

解决:

a.删除之前的数据库,重建一个。

b.修改某个表的编码格式(支持中文):

设置字符集在后,创建表在前,就会出现虽然设置了编码但还是插入中文失败的情况,此时可以通过修改某个表的字符集来将原来的表支持中文:

alter table 表名 convert to character set utf8mb4

 

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

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

相关文章

Linux组件之内存池的实现

文章目录 一、为什么需要内存池二、内存池的工作流程三、内存池的实现3.1 数据结构3.2 接口设计3.2.1 创建内存池3.2.2 内存池销毁3.2.3 内存分配1. 分配小块内存2. 分配大块内存 3.2.4 内存池的释放3.2.5 内存池重置 3.3 完整代码 一、为什么需要内存池 应用程序使用内存&…

ArcPy学习心得系列(6)Arcpy计算DOM影像数据范围

需求分析 DOM影像有黑边怎么办? 下图为DOM影像 一张DOM图,问有没有方法能够计算出这张图的有效数据的范围 通过图中显示的范围,可以很明显的看到左边多出来的那一块区域,仔细排查了一遍,辉仔发现原始数据实际上是下面这样的。 原始DOM影像 其中,蓝色区域的值为255,…

Django中如何正确使用 redis

文章目录 问题起源:AsyncWebsocketConsumer 中的 channel_layer解决方案安装 & 启动 redis安装 channel-redis更新 settings.py 的 redis 设置 问题起源:AsyncWebsocketConsumer 中的 channel_layer 在构建 websocket 的过程中,我在 cons…

云原生之深入解析K8S的请求和限制

一、Kubernetes 限制和请求 在 Kubernetes 中使用容器时,了解涉及的资源是什么以及为何需要它们很重要。有些进程比其它进程需要更多的 CPU 或内存,这很关键,永远不应该让进程饥饿,知道了这一点,那么应该正确配置容器…

MQTT 5.0 中的安全认证机制:增强认证介绍

在本系列之前的文章中我们提到,借助 MQTT CONNECT 报文中的 Username 和 Password 字段,我们可以实现一些简单的认证,比如密码认证、Token 认证等。为了进一步保障物联网系统的安全,在本期文章中,我们将一起了解另一种…

tty(四)tty框架分析

基于linux-3.14.16 重要文件:tty_io.c 一、tty子系统 开机添加了2个次设备号为0和1的字符设备,即/dev/tty和/dev/console。 二、分配tty驱动接口alloc_tty_driver 最终调用的__tty_alloc_driver分配 先分配一个tty_driver 因为flags为0&#xff0c…

从编程开发角度比较电机驱动芯片:DRV8833、TB6612、A4950、L298N

这几款驱动芯片都是用于控制直流电机的常见驱动芯片,下面是它们的相同点和不同点的比较: 相同点: 都可以用于控制直流电机的转速和方向。 都支持PWM控制方式,可以实现电机的速度调节。 都提供了使能引脚,可以通过使…

(ARM)7/5

1.串口发送单个字符 2.串口发送字符串 uart4.h #ifndef __UART4_H__ #define __UART4_H__#include "stm32mp1xx_uart.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gpio.h"//初始化相关操作 void hal_uart4_init();//发送一个字符 v…

uniapp学习之【uniapp的返回事件 onBackPress 在微信小程序中不生效的问题】

uniapp 的返回事件 onBackPress 在微信小程序中不生效的问题 场景:页面中点击左上角的返回按钮,监听返回操作,页面返回前执行了一些操作, uniapp 页面生命周期中有 onBackPress ,因此将操作写在了 onBackPress () 页面生命周期钩子当中, H5 测试一切正常,但是微信开…

7、架构:模板设计

在低代码开发中,除了基础组件与物料之外,模板也是必不可少的模块,是基于物料之上的更高级的产物,除了具备业务属性之外会更偏向专属的技术领域,例如可视化大屏、数据分析、中台管理等。 此外模板通常是比较完整的应用…

k8s Label 2

在 k8s 中,我们会轻轻松松的部署几十上百个微服务,这些微服务的版本,副本数的不同进而会带出更多的 pod 这么多的 pod ,如何才能高效的将他们组织起来的,如果组织不好便会让管理微服务变得混乱不堪,杂乱无…

作物计数方法汇总

在研究农情的方向中,作物计数是一个很重要的方向,需要用到很多方法,这里做一个小小的总结 (1)地理栅格数据(tif图片)裁剪并生成带地理坐标的切片 如图需要将下图所示的tif图裁剪并生成切片(截图一部分) 源码来自&…

微服务 02-rabbitmq在springboot中如何使用(上篇)

目录 前言: 上文传送 -> 安装rabbitmq传送门: -> rabbitmq使用出现问题解决传送门: 1. rabbitmq的六大模式: 1.1 简单模式: (一对一) -> 业务场景: 1.2 工作模式: (一对多) -> 业务场景: 1.3 发布与订阅模式: (广播) 1.4 路由模式: -> 业务场景 …

计算机系统的层次结构

计算机系统 计 算 机 系 统 { 计 算 机 软 件 { 系 统 软 件 应 用 软 件 计 算 机 硬 件 { 存 储 器 运 算 器 控 制 器 输 入 设 备 输 出 设 备 计算机系统 \begin{cases} 计算机软件\begin{cases}系统软件\\应用软件\end{cases}\\计算机硬件\begin{cases}存储器\\运算器\…

YoloV8改进---注意力机制:引入瓶颈注意力模块BAM,对标CBAM

目录 ​编辑 1.BAM介绍 2.BAM引入到yolov8 2.1 加入modules.py中: 2.2 加入tasks.py中: 2.3 yolov8_BAM.yaml 1.BAM介绍 论文:https://arxiv.org/pdf/1807.06514.pdf 摘要:提出了一种简单有效的注意力模块,称为瓶颈…

06、Nginx反向代理与负载均衡

反向代理: 这种代理方式叫做,隧道代理。有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要 负载均衡: 把请求,按照一定算法规则,分配给多台业务服务器(即使其中…

【论文笔记】Skill-based Meta Reinforcement Learning

【论文笔记】Skill-based Meta Reinforcement Learning 文章目录 【论文笔记】Skill-based Meta Reinforcement LearningAbstract1 INTRODUCTION2 RELATED WORKMeta-Reinforcement LearningOffline datasetsOffline Meta-RLSkill-based Learning 3 PROBLEM FORMULATION AND PRE…

CPU大小端和网络序的理解

引子 Big/Little Endian是Host CPU如何去理解在内存中的数据,内存中的数据是没有Big/Little Endian之分的(内存仅仅作为存储介质),而Host CPU才有Big/Little Endian之分。 不同Endian的CPU,从内存读取数据的时候&#…

Linux进度条

Linux进度条 一.基本概念1.回车和换行2.缓冲区2.实现倒计时 二.进度条1.前置工作2.代码实现 一.基本概念 1.回车和换行 回车:指光标移到该行的起始位置(\r)。 换行:换到下一行(\n)。 在c语音里\n将回车和换…

spring.boot 随笔0 springFactoriesInstance入门

0. 其实也没有那么入门 明天还要上班,速度write,直接放一张多样性比较好的 spring.factories 文件(取自 spring-boot-2.3.4.RELEASE.jar) # PropertySource Loaders org.springframework.boot.env.PropertySourceLoader\ org.springframework.boot.env…