【Ubuntu24.04】部署服务(基础)
目录
- 0 背景
- 1 设置静态IP
- 2 连接服务器
- 3 部署服务
- 3.1 安装JDK
- 3.2 下载并安装MySQL8.4
- 3.2.1 从官网下载 APT Repository 配置文件
- 3.2.2 安装 MySQL8.4
- 3.2.3 配置远程连接
- 3.3 下载并配置Redis
- 3.4 上传jar包并部署应用
- 3.5 开放端口
- 4 总结
0 背景
在成功安装了Ubuntu24.04操作系统后,自然想用它做些什么,正好手里有一个早先写的测试服务,所以想试试部署一下。
服务是一个小小的单体SpringBoot
项目,项目本身并不是重点,这里已经将其打成了jar
包,已知其使用到的组件有Redis
和MySQL
。
下面来部署一下。
1 设置静态IP
既然是服务器,那么IP就不要变,尤其是个人笔记本这种连接WiFi
的机器,使用DHCP
分配IP的话,说不定哪天IP就变了。所以要想将笔记本当服务器使用,那么就得配置静态IP。
桌面版的Ubuntu配置静态IP的方式很简单,只需要进入设置,然后选择网络,然后你连接的WiFi后面有一个齿轮,点击进去,可以看到现在的IP地址,切换到IPv4,选择手动,直接将刚才看到的IP地址填进去,并设置子网掩码和默认网关,网关一般都是最后一段写1即可。然后配置DNS解析地址为8.8.8.8
即可。
点击应用按钮即可,然后重启一下WiFi开关。
现在应该就设置好静态IP了。接下来就是让远程的开发机可以通过ssh
连接工具,比如Termius
来连接。
2 连接服务器
在开发机上安装Termius
,然后在服务器上安装ssh
服务,执行:
# 更新源
sudo apt update
# 安装ssh
sudo apt install openssh-server
# 开启防火墙
sudo ufw allow ssh
# 查看状态
sudo systemctl status ssh
# 如果是inactive也不要担心,重启服务即可
sudo systemctl restart ssh
# 开机自启动
sudo systemctl enable ssh
这样一来就可以通过远程连接服务器了。这一步的作用是在开发机一个电脑上就可以完成从开发到部署的所有操作,而不需要去操作服务器。换句话说,如果操作服务器很方便的话,完全可以通过邮箱把需要部署的东西传到服务器然后在服务器上操作。
但是自己的笔记本电脑一般会安装桌面版Ubuntu,所以远程连接不是必需的。
3 部署服务
现在开始部署jar
包,这里使用最原始最简单的方式部署。不过在部署之前需要安装必需的环境。
3.1 安装JDK
老生常谈的JDK,只需要注意版本即可,SpringBoot3
需要JDK17
及以上,安装过程不细说,可以参考本文在最后给出的链接。
3.2 下载并安装MySQL8.4
这个也是老生常谈的问题,在Ubuntu24.04上安装MySQL8
非常简单,不需要传统的解压缩之类的操作,这个也会在文末给出链接。
不过这里选择安装MySQL8.4
,与之前的安装有所不同。
3.2.1 从官网下载 APT Repository 配置文件
官网地址
然后安装这个.deb
文件,执行
# 跟上你下载的 .deb 文件名
sudo dpkg -i xxx.deb
在安装的时候会跳出图形化界面让你配置:
注意选择蓝色方框中的即可,第一个是mysql-8.4-lts
,第二个是Enabled
第一个点进去长这样:
第二个点进去长这样:
选择好之后选择ok
即可
然后这个.deb
文件的安装就好了。
3.2.2 安装 MySQL8.4
接下来就是使用apt
安装MySQL
了,这一步和安装MySQL8.0一样,区别就在于之前的那个.deb
文件,执行:
sudo apt update
sudo apt install mysql-server
在这个过程中会出现图形化界面让你配置密码,这样就不用安装好之后再去配置密码了。
3.2.3 配置远程连接
首先进入MySQL
,执行
mysql -uroot -p
然后输入安装的时候设置的密码即可,进入之后执行:
use mysql;
# 查看一下用户以及密码策略,可以看到全是采用的 caching_sha2_password 而不是 mysql_native_password
select user,host,plugin from user;
# 设置远程权限
update user set host = '%' where user = 'root';
# 刷新,很重要
flush privileges;
执行完上述操作后应该是这样的:
至此MySQL
的配置就完了,注意不需要去修改任何的配置文件,很方便。但是需要注意连接MySQL
的图形化工具的驱动,我之前使用的SQLYog
的一个很老的破解版(之所以不用社区版是因为它有广告)就因为驱动不够新而连不上。
3.3 下载并配置Redis
Ubuntu24.04
安装Redis
同样非常方便,只需要执行:
sudo apt update
sudo apt upgrade -y
# 安装redis
sudo apt install redis-server -y
# 查看版本
redis-cli --version
# 查看状态,按q退出
sudo systemctl status redis
至此Redis
安装完成,还需要进一步地配置,执行:
sudo vim /etc/redis/redis.conf
# 找到 requirepass 那一行(用vim的/搜索即可),将其改为你的密码
# 找到 protected-mode 那一行,将 yes 改为 no
# 找到 bind 那一行,将其注释掉,表示任意IP均可访问,也可以设置指定IP访问
# 然后查看端口监听状态
netstat -tuln
# 如果看到 0.0.0.0:6379 就说明redis可以被任意远程IP访问
至此Redis
配置完成。
3.4 上传jar包并部署应用
上传jar
包可以用Termius
的SFTP
,这个传输可以直接传文件夹,非常方便,注意把数据库的SQL
文件一起传过去。然后创建好数据库并做好必要的数据初始化,执行:
# 注意这是在 shell 终端执行的
mysql -uroot -p < your_sql_file.sql
然后会让你输入密码,输入即可。此时数据库已经初始化好。接下来就是运行jar
包了。执行
# 在后台运行jar包并将日志输出到demo.log中,这适合项目中没有配置日志的情况
nohup java -jar demo.jar > demo.log &
# 在后台运行但忽略任何输出,这要求在项目中已经配置好日志的输出
nohup java -jar demo.jar > /dev/null 2>&1 &
# 查看java进程
jps -l
注意不要直接使用java -jar
,因为这样会占据终端,并且将日志输出到终端,一旦Ctrl+C
就会退出整个进程。
3.5 开放端口
光有服务还不够,还需要能远程访问该服务,这就需要开放对应的端口。其实默认防火墙是inactive
状态的,这表示所有端口都可以被访问。如果只是自己使用,关闭防火墙不见得是一个坏的选择,这样很简单,不用关心端口是否开放。不过用在其它地方的话就要考虑安全性问题了。
4 总结
服务的部署很简单,繁琐的是布置好服务要用到的环境,以及维护服务,比如报错日志,服务的更新等。这里使用的是最原始的部署方式,主要是为了呈现部署原理以及操作步骤。
最后是安装配置JDK
以及MySQL8.0
的方法:Ubuntu24.04开发环境配置
相关文章:

【Ubuntu24.04】部署服务(基础)
目录 0 背景1 设置静态IP2 连接服务器3 部署服务3.1 安装JDK3.2 下载并安装MySQL8.43.2.1 从官网下载 APT Repository 配置文件3.2.2 安装 MySQL8.43.2.3 配置远程连接 3.3 下载并配置Redis3.4 上传jar包并部署应用3.5 开放端口 4 总结 0 背景 在成功安装了Ubuntu24.04操作系统…...
Linux符号使用记录
~ 账户 home 目录,如果是 root 账户就是 /root . 当前目录 .. 上层目录 | 管道符 & 后台工作,放在完整指令列的最后端,表示将该指令列放入后台中工作。 > 输出重定向,重新…...

初阶C++之C++入门基础
大家好!欢迎来到C篇学习,这篇文章的内容不会很难,为c的引入,c的重点内容将在第二篇的文章中讲解,届时难度会陡然上升,请做好准备! 我们先看网络上的一个梗:21天内⾃学精通C 好了&am…...

ODOO学习笔记(7):模块化架构(按需安装)
一、Odoo模块化架构概述 Odoo是一个功能强大的企业资源规划(ERP)系统,其模块化架构是它的核心优势之一。这种架构允许系统通过添加、移除或修改不同的模块来灵活地适应企业的各种业务需求。 核心模块与自定义模块: Odoo本身带有一…...

Java的dto,和多表的调用
1理论 需求是新增菜品eg:菜名:豆腐脑;口味:甜口,咸口, 菜单表:dish;口味表dish_flavor; 1dto:数据传输对象 新建一个dishDto对象有两个表里的属性 2用到两个表,dish,d…...

时序数据库TimescaleDB安装部署以及常见使用
文章目录 一、时序数据库二、TimescaleDB部署1、repository yum仓库配置2、yum在线安装3、插件配置4、TimescaleDB使用登录pg创建插件使用超表 一、时序数据库 什么是时序数据库?顾名思义,用于处理按照时间变化顺序的数据的数据库即为时序数据库&#x…...

MG算法(英文版)题解
翻译: 考虑一个加法流,其中一个特定项目出现 n^(1/2) 次,并且有 n - n^(1/2) - 1 个其他不同的项目,每个项目出现一次。在应用 Misra-Gries(MG)算法时,应该选择哪个 ε(epsilon&…...
2-UML概念模型测试
1. (单选题, 1.0 分) UML中的关系不包括()。 A. 抽象B. 实现C. 依赖D. 关联 我的答案:A正确答案: A 知识点: UML的构成 1.0分 2. (单选题, 1.0 分) 下列事物不属于UML结构事物的是()。 A. 组件B. 类C. 节点D. 状…...

人工智能(AI)对于电商行业的变革和意义
 参考, x.content content --EXTRACTVALUE(x.Content, //zlxml//document//subdoc[antetypeid"3C38A8DAB01C473A9074A8EDD0B8553"]//utext) 主治医师, --EXTRACTVALUE(x.…...

RK3568平台开发系列讲解(GPIO篇)GPIO的sysfs调试手段
🚀返回专栏总目录 文章目录 一、内核配置二、GPIO sysfs节点介绍三、命令行控制GPIO3.1、sd导出GPIO3.2、设置GPIO方向3.3、GPIO输入电平读取3.4、GPIO输出电平设置四、Linux 应用控制GPIO4.1、控制输出4.2、输入检测4.3、使用 GPIO 中断沉淀、分享、成长,让自己和他人都能有…...

使用 Web Search 插件扩展 GitHub Copilot 问答
GitHub Copilot 是一个由 GitHub 和 OpenAI 合作开发的人工智能代码提示工具。它可以根据上下文提示代码,还可以回答各种技术相关的问题。但是 Copilot 本身不能回答非技术类型的问题。为了扩展 Copilot 的功能,微软发布了一个名为 Web Search 的插件&am…...

workerman的安装与使用
webman是一款基于workerman开发的高性能HTTP服务框架。webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务。你可以用webman开发网站,也可以开发HTTP接口或者微服务。 除此之外,webman还支持自定义进程,可以做worker…...

QtQuick.Controls 控件介绍(都有哪些type)
这里写目录标题 主要控件 官方示例1. quickcontrols示例示例1 控制controlsSliders滑块bottom与tab 示例2 系统对话框 systemdialogs示例3 仪表盘示例4 uiforms 表格-客户通讯录 2. quickcontrols2示例1 gallery 展示2 flat Style 扁平化 帮助文档 主要控件 Button:…...
Unity导出APK加速与导出失败总结(不定时更新)
APK导出加速 1、修改配置文件: 需要修改的文件位置:编辑器安装路径/Editor/Data/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates 1.1 settingsTemplate.gradle文件修改 直接附上最终效果: pluginManagement {repositories {**ART…...
域名绑定服务器小白教程
域名绑定与 Docker 容器部署指南 1. 获取云服务器公网 IP 登录云服务提供商控制台记录服务器公网 IP(例:123.456.78.90) 2. 配置域名 DNS 解析 登录域名注册商控制台添加 A 记录: 主机记录:类型:A值&am…...
用 Collections.synchronizedSet 创建线程安全的 HashSet
在 Java 中,HashSet 本身并不是线程安全的。如果在多线程环境下使用 HashSet,你需要采取额外的同步措施来保证线程安全。Collections 工具类提供了一种简便的方法来创建线程安全的集合——synchronizedSet 方法。这种方法通过在所有公共方法上添加同步块…...
【深度学习】模型参数冻结:原理、应用与实践
在深度学习领域,模型参数冻结是一种重要的技术手段,它在模型训练和优化过程中有着广泛的应用。本文将详细介绍模型参数冻结的相关概念、应用场景、在代码中的实现方式以及一些实际的案例分析。 一、模型参数冻结的概念 在深度学习模型的训练过程中&…...

数字后端教程之Innovus report_property和get_property使用方法及应用案例
数字IC后端实现Innovus中使用report_property可以报告出各种各样object的属性,主要有cell,net,PG Net,Pin,时钟clock,时序库lib属性,Design属性,timing path,timin arc等…...

JS中console对象内部提供调试方法
console.log() console.log() 是最常用的输出方法,用于将信息输出到浏览器控制台,通常用于普通的调试信息。 用途: 打印普通的消息、变量、对象等。 let user { name: "Alice", age: 25 }; console.log(user); // 输出对象 console.log(&…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

3.3.1_1 检错编码(奇偶校验码)
从这节课开始,我们会探讨数据链路层的差错控制功能,差错控制功能的主要目标是要发现并且解决一个帧内部的位错误,我们需要使用特殊的编码技术去发现帧内部的位错误,当我们发现位错误之后,通常来说有两种解决方案。第一…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...