当前位置: 首页 > news >正文

Linux的基础指令和环境部署,项目部署实战(下)

目录

上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客

1. 搭建Java部署环境

1.1 apt

apt常用命令

列出所有的软件包

更新软件包数据库

安装软件包

移除软件包

1.2 JDK

1.2.1. 更新

1.2.2. 安装openjdk()

1.2.3.检查安装jdk成功

1.3 MySQL

1.3.1 使用apt安装MySQL

1.3.2 查看MySQL状态

1.3.3 设置密码

        1.3.3.1 连接mysql服务器

        1.3.3.2 使用 alter user 命令修改密码(自己能够记住就行)

2.部署web项目到Linux

2.1 环境配置

2.1.1 数据准备

2.1.2 程序配置文件修改

2.1.3 多平台文件配置

2.2 构建项目并打包

在本地使用maven进行打包

2.3 上传Jar包到服务器, 并运行

1. 上传Jar包直接拖动打好的jar包到xshell窗口即可完成文件的上传

2. 安装lrzsz

3.运行程序

4.开放端口

3.常见问题

1.检查程序是否启动

2.杀掉进程

1.查看目前的所有进程

2.杀死进程


上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客

1. 搭建Java部署环境

1.1 apt

apt(Advanced Packing Tool),Linux软件包管理工具。用于Ubuntu,Debian和相关的Linux发行版上安装,更新,删除和管理deb软件包。

大多数 apt  命令都要以有sudo权限的用户运行。

apt常用命令
列出所有的软件包

1. apt list

 这个命令输出所有的工具包列表,内容非常多,可以用 grep 命令过滤。

        1. apt list |grep "java"

更新软件包数据库

1. sudo apt-get update  #运行此命令时, 您将看到从各种服务器检索到的软件包信息.

实际上 apt 它通过维护一个软件包的数据库来管理和安装软件。这个数据库包含了系统可用的软件包及其版本信息。

如果数据库没有更新,系统将无法检测到新的软件包版本,也无法安装或升级到最新的软件。因此,在安装Linux系统之后,更新APT数据库是一个非常重要的步骤

如果切换到root用户, 命令前就不需要加 sudo

切换root用户

        sudo su

安装软件包

sudo apt install package_name

移除软件包

sudo apt remove package_name 

值得注意的是 remove命令会卸载掉特定的软件包,但可能会留下配置文件,如果要把配置文件也彻底删除 ,就是用 purge 命令替代 remove

1.2 JDK

1.2.1. 更新

安装之前都要执行一遍更新软件包命令  sudo apt-get update

1.2.2. 安装openjdk()

注意: 此处安装的是OpenJDK, OpenJDK是一个开源版本的 JDK, 和 Oracle 官方的 JDK 略有差别. 此处我们就使用 OpenJDK 即可. 安装 Oracle JDK 比较麻烦.

1.#查找jdk包

2.apt list |grep "jdk"

3.

4.#安装jdk17

5. apt install openjdk-17-jdk

安装过程输入 y 确认

当跳出这个画面就按回车就好,然后等待安装;

1.2.3.检查安装jdk成功

 1. java -version  #查看jdk版本

当输出jdk的版本,就说明你安装jdk成功了

如果提示 "java 命令找不到" 则说明安装失败

1.3 MySQL

1.3.1 使用apt安装MySQL

1. #查找安装包
2. apt list |grep "mysql-server"
3. #安装mysql
4. sudo apt install mysql-server

安装流程与安装jdk一致

1.3.2 查看MySQL状态

1. sudo systemctl status mysql

        执行结果

1.3.3 设置密码
        1.3.3.1 连接mysql服务器

1. sudo mysql

        1.3.3.2 使用 alter user 命令修改密码(自己能够记住就行)

1  ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

        执行结果(证明修改密码成功)

2.部署web项目到Linux

2.1 环境配置

程序正常运行, 需要保证环境和程序都要正确, 我们需要先设置环境

2.1.1 数据准备

在服务器上的mysql数据上建立与项目一致的数据库,数据可以不用同步,只要库表结构一样就好了。

2.1.2 程序配置文件修改

实际工作中,开发环境,测试环境和线上环境的配置是不一样的

比如mysql的用户名和密码;

所以我们要针对不同的环境,设置不同的配置

2.1.3 多平台文件配置

方法有很多种,这里我只举例我使用的这一种

针对不同的平台创建不同的配置文件,要求名字为

  • application.properties,
  • application-dev.properties,
  • application-test.properties; 

dev指的是开发环境的配置,test指的是线上环境的配置,固定格式,只有后面的字母可以修改,在不同的配置文件写不同的内容(下面只是将数据库的配置作为展示,如果自己还有其他配置,像:日志的存储路径,图片的存取路径都是要按这种方式修改的。)

application-dev.properties(开发环境的数据库的配置)

application-test.properties(线上环境的数据库的配置)

在主配置文件 application.properties 中指定配置文件为线上开发环境的配置

2.2 构建项目并打包

在本地使用maven进行打包

1. 如果Test代码中有与环境配置相关的操作(比如数据库相关的操作), 打包会失败, 点击下图①处的图标, 可以跳过测试。

2. 点击clean->package

2.3 上传Jar包到服务器, 并运行

1. 上传Jar包
直接拖动打好的jar包到xshell窗口即可完成文件的上传

问题: 如果执行上述命令之后, 提示 Command 'XX' not found , 表示当前云服务器未安装lrzsz命令, 需要先进行安装

2. 安装lrzsz

1.  apt-get install lrzsz

3.运行程序

1.  nohup java -jar blog-spring-0.0.1-SNAPSHOT.jar &

nohup : 后台运行程序. 用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行.

4.创建相关数据库表
连接mysql数据库

mysql -uroot -p 回车 然后在命令行输入密码就可以了

看到一下界面就说明你连接数据库成功

 连接数据库成功之后,就可以去创建数据库,表等内容,这里不在过多赘述;

如果你有完整的sql文件,执行SQL文件: 使用以下命令执行SQL文件:

source /path/to/yourfile.sql

例如,如果你的SQL文件位于/root目录下,文件名为test.sql,则命令如下: source /root/test.sql;

如果在当前工作路径下,就直接source 文件名  就可以了。

4.开放端口

如果外网需要访问该服务, 需要先服务器防火墙开放对应的端口号,本着服务器安全的原则,云服务器上的端口非必要不开启.

比如常见端口号: 数据库 3306 , Redis 6379, 尽可能避免开放, 而是采用其他方式来连接, 比如配置隧道的方式。

以阿里云服务器为例子

进入实例的安全组界面,点击安全组的管理规则

端口号写需要开放的端口号, 多个端口号以逗号分割. 

3.常见问题

1.检查程序是否启动

ps -ef |grep "java"

2.杀掉进程

1.查看目前的所有进程

1.ps -ef |grep "java" (只查看名字包含java的程序)

执行结果中的29916,31709就是进程执行的端口号

2.杀死进程

1. kill -9  端口号(29916)(强制杀死进程)

相关文章:

Linux的基础指令和环境部署,项目部署实战(下)

目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...

【分布式理论15】分布式调度1:分布式资源调度的由来与过程

文章目录 一、操作系统的资源调度:从单核到多核二、 分布式系统的资源调度:从单台服务器到集群三、 固定资源映射四、 动态资源分配:灵活的任务-资源匹配五、 资源调度过程:从申请到执行 本文主要讨论主题: 从操作系统…...

Python常见面试题的详解12

1. hasattr ()、getattr ()、setattr () 函数是如何使用的? 要点 这三个函数用于对对象的属性进行检查、获取和设置操作,是 Python 中进行对象属性动态操作的重要工具。 hasattr():用于检查对象是否具有指定属性或方法。 getattr()&#x…...

未来AI方向落地场景:小语言模型,super_private_agent

未来AI方向落地场景:小语言模型,super_private_agent 目录 未来AI方向落地场景:小语言模型,super_private_agent小语言模型super - private - agent(注重隐私的智能代理)碳基生命和硅基生命交互界面面向agent的专用交互协议和数据接口从web平台经济到网络平台举例说明社交…...

使用 PyTorch 实现标准卷积神经网络(CNN)

卷积神经网络(CNN)是深度学习中的重要组成部分,广泛应用于图像处理、语音识别、视频分析等任务。在这篇博客中,我们将使用 PyTorch 实现一个标准的卷积神经网络(CNN),并介绍各个部分的作用。 什…...

开题报告——基于Spring Boot的垃圾分类预约回收系统

关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...

YOLOv5 目标检测优化:降低误检与漏检

1. 引言 在目标检测任务中,误检(False Positive, FP)和漏检(False Negative, FN)是影响检测性能的两个主要问题。误检意味着模型检测到了不存在的目标,而漏检则指模型未能检测到真实存在的目标。本文将介绍…...

网络安全治理模型

0x02 知识点 安全的目标是提供 可用性 Avialability机密性 confidentiality完整性 Integrity真实性 Authenticity不可否认性 Nonrepudiation 安全治理是一个提供监督、问责和合规性的框架 信息安全系统 Information Security Management System ISMS 策略,工作程…...

网络原理-

文章目录 协议应用层传输层网络层 数据链路层 协议 在网络通信中,协议是非常重要的概念.协议就是一种约定. 在网络通信过程中,对协议进行了分层 接下来就按照顺序向大家介绍每一种核心的协议. 应用层 应用层是咱们程序员打交道最多的一层协议.应用层里有很多现成的协议,但…...

HTML/CSS中交集选择器

1.作用:选中同时符合多个条件的元素 交集就是或的意思 2.语法:选择器1选择器2选择器3......选择器n{} 3.举例: /* 选中:类名为beauty的p元素,此种写法用的非常的多 */p.beauty{color: red;}/* 选中:类名包含rich和beauty的元素 */.rich.beauty{color: blue;} 4.注意: 1.有标签…...

机器学习(1)安装Pytorch

1.安装命令 pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 2.安装过程Log: Looking in indexes: https://download.pytorch.org/whl/cu118 Co…...

Spring Boot过滤器链:从入门到精通

文章目录 一、过滤器链是什么?二、为什么需要过滤器链?三、Spring Boot中的过滤器链是如何工作的?(一)过滤器的生命周期(二)过滤器链的执行流程 四、如何在Spring Boot中定义自己的过滤器&#…...

vue3之echarts3D圆柱

vue3之echarts3D圆柱 效果&#xff1a; 版本 "echarts": "^5.1.2" 核心代码&#xff1a; <template><div ref"charts" class"charts"></div><svg><linearGradient id"labColor" x1"0&q…...

Redux中间件redux-thunk和redux-saga的具体区别是什么?

Redux 中间件是增强 Redux 功能的重要工具&#xff0c;redux-thunk 和 redux-saga 是两个常用的中间件&#xff0c;它们在处理异步操作和副作用时提供了不同的方式和理念。以下是两者的具体区别&#xff1a; 1. 概念与设计理念 redux-thunk 简洁&#xff1a;redux-thunk 是一…...

代码随想录算法训练营第四十三天| 动态规划06

322. 零钱兑换 如果求组合数就是外层for循环遍历物品&#xff0c;内层for遍历背包。 如果求排列数就是外层for遍历背包&#xff0c;内层for循环遍历物品。 这句话结合本题 大家要好好理解。 视频讲解&#xff1a;动态规划之完全背包&#xff0c;装满背包最少的物品件数是多少&…...

UI自动化教程 —— 元素定位技巧:精确找到你需要的页面元素

引言 在UI自动化测试中&#xff0c;准确地定位页面元素是至关重要的。无论是点击按钮、填写表单还是验证页面内容&#xff0c;都需要首先找到相应的页面元素。Playwright 提供了多种方法来实现这一点&#xff0c;包括使用CSS选择器和XPath进行元素定位&#xff0c;以及利用文本…...

MySQL六大日志的功能介绍。

前言 首先&#xff0c;MySQL的日志应该包括二进制日志&#xff08;Binary Log&#xff09;、错误日志&#xff08;Error Log&#xff09;、查询日志&#xff08;General Query Log&#xff09;、慢查询日志&#xff08;Slow Query Log&#xff09;、重做日志&#xff08;Redo …...

二级指针略解【C语言】

以int** a为例 1.二级指针的声明 a 是一个指向 int*&#xff08;指向整型的指针&#xff09;的指针&#xff0c;即二级指针。 通俗的讲&#xff0c;a是一个指向指针的指针&#xff0c;对a解引用会是一个指针。 它可以用于操作动态分配的二维数组、指针数组或需要间接修改指针…...

鸿蒙状态管理概述

状态管理 状态管理之v1LocalStorageLocalStorageLink的框架行为LocalStorageProp的框架行为LocalStorage使用场景 AppStorageStorageLink的框架行为StorageProp的框架行为AppStorage的使用场景 PersistentStorageEnvironmentEnvironment内置参数 WatchWatch的使用场景 $$语法$$…...

【核心算法篇十三】《DeepSeek自监督学习:图像补全预训练方案》

引言:为什么自监督学习成为AI新宠? 在传统监督学习需要海量标注数据的困境下,自监督学习(Self-Supervised Learning)凭借无需人工标注的特性异军突起。想象一下,如果AI能像人类一样通过观察世界自我学习——这正是DeepSeek图像补全方案的技术哲学。根据,自监督学习通过…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...