如何将 JavaWeb 项目部署到云服务器

news2025/2/24 23:16:23

1. 搭建 Java 部署环境

接下来以 Ubuntu 来进行演示

1.1. apt 包管理工具

apt 就相当于手机上的应用市场

列出所有软件包:apt list
这个命令输出所有包的列表,内容比较多,可以使用 grep 命令过滤输出:apt list |grep "jdk"

如果需要下载的软件,软件包中没有的话那就需要用其他方式下载了

安装软件前需要更新一下软件包数据库:sudo apt-get update

安装软件包
sudo apt install package_name

移除软件包
sudo apt remove package_name
remove 命令将卸载给定的软件包,但可能会留下一些配置文件。如果要删除包含所有配置文件的软件包,要使用 purge

apt remove 和 apt purge 的区别
・apt remove 删除包的二进制文件,它留下了残留的配置文件。
・apt purge 删除与包相关的所有内容,包括配置文件。

如果弄乱了程序的配置,希望从系统中完全清除它的痕迹再重新开始,可以使用 apt purge。

1.2. 下载 jdk

sudo apt install openjdk-17-jdk

安装之后可以使用 java -version 来查看是否安装成功

关于如何卸载 jdk

  1. 检查安装的是哪个 OpenJDK

dpkg --list | grep -i jdk

  1. 移除 openjdk 包:

apt-get purge openjdk*

  1. 卸载 OpenJDK 相关包:

apt-get purge icedtea-* openjdk-*

  1. 检查所有 OpenJDK 包是否都已卸载完毕:

dpkg --list | grep -i jdk

1.3. 下载 mysql

通过下面的命令来下载 mysql

sudo apt install mysql-server

安装好之后可以通过 mysql --version来查看版本

也可以通过 sudo systemctl status mysql来检查 mysql 的状态

关于卸载 mysql:

  1. 停止 mysql
    sudo systemctl stop mysql
  2. 卸载 mysql
    sudo apt-get remove --purge mysql-*
  3. 删除 MySQL 配置文件和数据
    sudo rm -rf /etc/mysql/var/lib/mysql
  4. 清理残留文件和目录
    sudo apt-get autoremove
    sudo apt-get autoclean
  5. 验证卸载结果
    mysql --version

2. 部署 Web 项目

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

2.1. mysql 安全设置

运行一下命令:

sudo mysql_secure_installation

运行之后的选项都输入 Y,密码强度设置为 2

输入 sudo mysql 进入后设置密码

ALTERUSER'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '自定义密码';

设置之后就可以创建数据库和表,保持和开发时的数据一致

2.2. 配置环境

开发环境和生产环境肯定是不一样的,所以一些配置也需要修改,比如 mysql 的密码或者一些日志的配置,就可以针对不同的平台来进行配置

那么这三个文件哪个可以生效,可以在 application.yml 来配置下面这些内容

spring:
  profiles:
    active: @profile.name@

是通过自定义 Maven 的参数来实现的

<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <profile.name>dev</profile.name>
    </properties>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
  </profile>
  <profile>
    <id>prod</id>
    <properties>
      <profile.name>prod</profile.name>
    </properties>
  </profile>
</profiles>

这样就可以通过 Maven 来进行选择使用哪个配置了

也可以设置默认选择的是哪个配置文件

<activation>
  <activeByDefault>true</activeByDefault>
</activation>

2.3. 打包项目

上面配置好之后就可以打包了,注意要选择 prod,然后双击 package

如果 Test 代码中有与环境配置相关的操作 (比如数据库相关的操作,可能由于密码等不一致发生错误),打包会失败,可以选择跳过测试,因为执行 package 时会按照步骤从上往下依次执行

2.4. 上传并运行 jar 包

可以直接把 jar 包拖进 finalshell 中或者使用 rz 命令来进行上传,上传之后通过 java -jar 命令来运行 jar 包

如果希望别人也能访问的话,项目中设置的端口号(例如8080)也需要在云服务器上进行开放

不过使用上面的启动方式的话,如果 finalshell 关了或者断开连接,服务就停止了,就需要使用 nohup 命令来启动:

看日志的话推荐 tail -f 命令来去看,就可以实时查看,后续新增的日志也是能看到的

3. 常见问题总结

如果说服务不能正常访问,可能会有以下原因:

  1. 服务未启动:

可以使用 ps -ef|grep java来查看程序是否运行

使用 curl 项目路径来看是否返回有 html 页面,如果有返回,那么就说明程序启动成功了, 可能是端口号未开放

如果没有启动成功,需要查看对应的日志,可能是数据库不存在或者数据库密码不正确,jdk版本 ,mysql 没有设置密码等问题

  1. http 端口未开放,如果说云服务器的防火墙打开了,还需要再打开防火墙的端口号

可以使用sudu ufw status命令来查看防火墙是否开启,下面显示的是未开启状态

  1. 如果说在部署之后又发生了错误,要重新部署,就需要先把对应的进程结束掉,可以先通过netstat -nltp|grep 8080来查看对应的进程,再使用 kill 命令结束进程


 

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

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

相关文章

自动驾驶算法——卡尔曼滤波器平滑感知车道线参数【C++代码实现】

1.算法原理 在工程实践中,由于感知识别到的车道线偶尔存在较大的跳变,导致后端控制算法计算出的控制角度也存在较大的跳变,所以我们需要对感知输入的车道线系数进行平滑处理。 已知卡尔曼滤波算法主要分为以下几大步骤: 感知将车道线以三次螺旋曲线方程 y = c 0 + c 1 x +…

用python替换和循环插入excel的内容

用python替换和循环插入excel的内容 目的&#xff1a; 1.有一个word模板和一个有数据的excel表格 2.需要将excel中的数据经过更改成需要的字符串插入word段落中 3.更改word中的字符串 4.写一个现阶段可以用的程序&#xff0c;并用作以后更新迭代复用。 过程&#xff1a; …

UE5基本数据类型

bool: 表示布尔值&#xff0c;只有两个取值&#xff1a;true 或 false&#xff0c;用于表示逻辑条件。int8: 表示 8 位的有符号整数&#xff0c;范围是 −128−128 到 127127。uint8: 表示 8 位的无符号整数&#xff0c;范围是 00 到 255255。int16: 表示 16 位的有符号整数&am…

【Unity高级】在编辑器中如何让物体围绕一个点旋转固定角度

本文介绍如何在编辑器里让物体围绕一个点旋转固定角度&#xff0c;比如上图里的Cube是围绕白色圆盘的中心旋转45度的。 目标&#xff1a; 创建一个在 Unity 编辑器中使用的旋转工具&#xff0c;使开发者能够在编辑模式下快速旋转一个物体。 实现思路&#xff1a; 编辑模式下…

深度学习:从入门到精通的全面学习路径

摘要&#xff1a; 本文详细阐述了深度学习从入门到精通的系统学习路线。从基础数学与编程知识的夯实&#xff0c;到深度学习核心技术栈的深入掌握&#xff0c;包括 TensorFlow 与 PyTorch 等框架的应用&#xff1b;再到各类主流深度学习算法的原理学习与实践&#xff0c;涵盖神…

CC2530传感器应用实例

1.CC2530流水灯实验 //基于CC2530微控制器的程序&#xff0c;用于控制三个LED灯的闪烁。#include <ioCC2530.h>#define uint unsigned int #define uchar unsigned charuint代表无符号整型&#xff0c;uchar代表无符号字符型。#define LED1 P1_0 #define LED2 P1_1 #defi…

深度和法线纹理

屏幕后期处理效果的基本原理就是当游戏画面渲染完毕后通过获取到该画面的信息进行额外的效果处理 之前的边缘检测、高斯模糊、Bloom、运动模糊等效果都是基于获取当前屏幕图像中的像素信息进行后期处理的 如果仅仅根据像素信息来进行一些效果处理&#xff0c;存在以下问题&…

Oracle之表空间迁移

问题背景&#xff1a;一个数据表随着时间的累积&#xff0c;导致所在表空间占用很高&#xff0c;里面历史数据可以清除&#xff0c;保留近2个月数据即可 首先通过delete删除了2个月以前的数据。 按网上的教程进行空间压缩&#xff0c;以下sql在表所在用户执行: -- 允许表重新…

非父子通信(扩展)-- event bus 事件总线

创建一个空实例Bus&#xff0c; export default 导出Bus 过程:由A组件对Bus组件进行监听&#xff0c;B组件触发Bus对应的事件&#xff0c;由于A组件进行监听&#xff0c;触发事件之后就会进行A组件的回调&#xff0c;那么就可以将消息发送给A了 在src文件夹下新建utils文件夹&a…

vue深入理解(1)

本文章内容主要来源于《vue.js设计与实现》 视图层框架设计 命令式和声明式 范式上&#xff0c;视图层框架通常分为命令式和范式 JQuery就是典型的命令式框架&#xff0c;命令式框架的一大特点就是关注过程 例子&#xff1a; $(#app) // 获取app.text(hello world) // 设置…

CSDN博客如何修改删除上传的资源

CSDN博客是我用过的最好用的博客&#xff0c;它对用户发布文章的限制比较少&#xff0c;而且还支持用户利用知识创新来获取收益&#xff0c;不象51CTO这种垃圾博客&#xff0c;动不动就给扣分限号。但我发现CSDN也有设计缺陷&#xff0c;虽然其上传资源的入口很好找&#xff0c…

【SpringBoot】Day11-10 yml文件配置

三种配置文件 前面我们一直使用springboot项目创建完毕后自带的application.properties进行属性的配置&#xff0c;那其实呢&#xff0c;在springboot项目当中是支持多种配置方式的&#xff0c;除了支持properties配置文件以外&#xff0c;还支持另外一种类型的配置文件&#x…

React路由使用入门react-router-dom

1.安装react-router-dom npm i react-router-dom 2.配置 &#xff08;1&#xff09;创建router实例对象并且配置路由对应关系 &#xff08;2&#xff09;路由绑定 import {createBrowserRouter,RouterProvider} from react-router-dom//&#xff08;1&#xff09;创建rou…

web复习(二)

编程题 1.编写一个函数&#xff0c;接收一个数组作为参数&#xff0c;返回一个对象&#xff0c;其中包含数组中每个元素及其出现次数。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewpo…

【CANoe示例分析】Basic UDP Multicast(CAPL)

1、工程路径 C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 16.6.2\Ethernet\Simulation\UDPBasicCAPLMulticast 在CANoe软件上也可以打开此工程:File|Sample Configurations|Ethernet - Simulation of Ethernet ECUs|Basic UDP Multicast(CAPL) 2、示例目…

在Linux(ubuntu22.04)搭建rust开发环境

1.安装rust 1.安装curl: sudo apt install curl 2.安装rust最新版 curl --proto ‘https’ --tlsv1.2 https://sh.rustup.rs -sSf | sh 安装完成后出现&#xff1a;Rust is installed now. Great! 重启当前shell即可 3.检验是否安装成功 rustc --version 结果出现&…

react跳转传参的方法

传参 首先下载命令行 npm react-router-dom 然后引入此代码 前面跳转的是页面 后面传的是你需要传的参数接参 引入此方法 useLocation()&#xff1a;这是 react-router-dom 提供的一个钩子&#xff0c;用于获取当前路由的位置对象location.state&#xff1a;这是从其他页面传…

路径规划之启发式算法之九:灰狼优化算法(Grey Wolf Optimizer,GWO)

灰狼优化算法&#xff08;Grey Wolf Optimizer&#xff0c;GWO&#xff09;是一种智能优化算法&#xff0c;由澳大利亚格里菲斯大学学者Mirjalili等人在2014年提出。该算法灵感来源于灰狼群体的捕食行为&#xff0c;通过模拟灰狼的社会等级分层和狩猎机制来解决复杂的优化问题。…

数字乡村建设方案-6

1. 方案背景与目标 数字乡村建设旨在响应乡村振兴战略&#xff0c;解决顶层设计缺失、资源统筹不足、基础设施缺失等问题&#xff0c;通过信息化建设加强党的领导&#xff0c;提升乡村治理水平&#xff0c;促进乡村经济发展。 2. 乡村信息化需求 乡村管理人员希望通过信息化…

数据分析: 基于CSDN博客排行榜TOP100的博客创作分析和建议

在CSDN上写一些学习心得&#xff0c;分享一些经验&#xff0c;是一件令人愉悦的事情。但是绝大多数人&#xff0c;很多时候写的东西没人看&#xff0c;浏览量个位数&#xff0c;点赞收藏都是0&#xff0c;这着实让人觉得沮丧和无聊&#xff0c;最终选择放弃。 今天&#xff0c…