【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(&…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
