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

【Ubuntu24.04】服务部署(虚拟机)

目录

  • 0 背景
  • 1 安装虚拟机
    • 1.1 下载虚拟机软件
    • 1.2 安装虚拟机软件
    • 1.2 安装虚拟电脑
  • 2 配置虚拟机
    • 2.1 配置虚拟机网络及运行初始化脚本
    • 2.2 配置服务运行环境
      • 2.2.1 安装并配置JDK17
      • 2.2.2 安装并配置MySQL8.4
      • 2.2.3 安装并配置Redis
  • 3 部署服务
  • 4 总结

0 背景

    你的服务部署在了你的计算机上,没有任何多余的操作:你的计算机操作系统是Ubuntu24.04的,你直接将它作为了服务器,你给它配置了静态IP,在上面安装了服务运行所必要的组件,然后部署了服务。
    起初,你的服务比较小,只有一个模块,不久之后,你发现你的服务可以支持更多的功能,于是你新增了几个模块,这些模块每个都是一个微服务,都和最初的那个模块平级,而且都需要部署在服务器上。
    按照你的经验,每个模块都需要部署在一个服务器上才行。那么现在要解决的问题就是:怎么才能找到多台服务器呢?那不成有几个模块就要买多少台电脑,然后给每个电脑装系统,装组件,然后部署服务吗?
    聪明的你即使是土豪也不会选择买电脑的。在一个无意的瞬间,你忽然想起来你还安装并使用过虚拟机呢。那可太好了,每个虚拟机就是一个服务器!
    接下来就是关于虚拟机的操作了。

1 安装虚拟机

    这里以VMware为例,如果想使用VirtualBox的话请看VirtualBox虚拟机下安装Ubuntu24.04操作系统和VirtualBox安装ubuntu-live-server24.04。

1.1 下载虚拟机软件

    最开始接触VMware的时候曾经被折磨过,后来对它的印象不是很好,后来听说VMware收费了,对它的印象就更不好了,然而最近又听说要免费了,再加上这也算是一个主流的虚拟机,还是得接触一下。
    如果你对它的官网不熟,要找到你需要的产品其实还是不容易的,另外需要注意的是在官网下载是需要注册一个账号并登录的,只需要一个邮箱来接收验证码就可以了,其他的信息都可以乱写。下面给出下载网址:

    在登录账号之后直接搜索这个网址即可
在这里插入图片描述
    这里选择安装17.5.2
在这里插入图片描述
在这里插入图片描述
    下载之前会让你填写一些信息,住址,邮编,城市之类的东西,这些东西可以随便写一些字符串。下载过程还是很快的,600多兆两三分钟就下载完了。
在这里插入图片描述

1.2 安装虚拟机软件

    运行下载的安装包。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
    注意安装位置,便于你管理软件。
在这里插入图片描述
    可以选择不勾
在这里插入图片描述
    个人认为开始菜单挺鸡肋的,可以选择不勾
在这里插入图片描述
    这一步显示的信息应该和具体的计算机有关。选择安装。
在这里插入图片描述
    不过有可能会出现下面的情况:
在这里插入图片描述
    我是由于重装了VMware,之前装了又卸载过,所以导致了这个问题。这个时候不要选任何选项,用管理员方式打开cmd窗口,输入以下的命令:

net stop VMAuthdService
taskkill /F /IM mmc.exe
sc delete VMAuthdService

在这里插入图片描述
    好像似乎没什么用,这个时候你再选择“重试”,它会花较长时间安装,不过最终会安装好。
在这里插入图片描述
    然后提示你是否现在输入密钥,为什么不呢?下面直接给出一些密钥(不保证全部可用):

JU090-6039P-08409-8J0QH-2YR7F
4A4RR-813DK-M81A9-4U35H-06KND
NZ4RR-FTK5H-H81C1-Q30QH-1V2LA
4Y09U-AJK97-089Z0-A3054-83KLA
4C21U-2KK9Q-M8130-4V2QH-CF810

    选择一个输入即可
在这里插入图片描述
在这里插入图片描述
    至此,VMware的安装全部完成。

1.2 安装虚拟电脑

    虚拟机软件安装好之后,接下来就是安装虚拟电脑了。如果只是将这些虚拟电脑当做服务器使用的话,就没必要安装桌面版的操作系统了。
    这里选择安装Ubuntu24.04服务器版,与以往不同的是,你需要安装多台虚拟机。
在这里插入图片描述
在这里插入图片描述
    选择对应的iso文件
在这里插入图片描述
    给虚拟电脑命名并选择安装的位置
在这里插入图片描述
    这两个选项按照个人喜好选择
在这里插入图片描述
    最后会让你确认一遍
在这里插入图片描述
    确认无误后点击“完成”即可。

    接下来就是关于Ubuntu的安装了,不再赘述,安装过程参考VirtualBox安装ubuntu-live-server24.04。
在这里插入图片描述

2 配置虚拟机

    安装好虚拟电脑之后就是配置了,不过手动配置太麻烦了,笔者也整理了脚本供参考。

2.1 配置虚拟机网络及运行初始化脚本

    在之前的文章中,笔者直接使用scp命令将脚本从宿主机Windows传到网络模式为NAT的虚拟机上,那个时候使用的是VirtualBox,设置了端口转发,但在VMware中设置端口转发似乎比较麻烦,所以这里不打算使用。而是使用远程连接的方式:

  1. 设置虚拟电脑的网络模式为自定义(VMnet8),这是自带的,不用自己设置

在这里插入图片描述
在这里插入图片描述
2. 登录到虚拟电脑中
3. 查看虚拟电脑的IP地址:执行命令ip a,笔者的IP地址是192.168.128.128,按自己具体的来

在这里插入图片描述
4. 使用Termius中的SFTP远程传输脚本文件,这个时候的IP地址192.168.128.128是可以被远程连接的。
5. 在虚拟机中执行初始化脚本文件,脚本文件参考VirtualBox安装ubuntu-live-server24.04
6. 执行脚本文件会让你设置IP地址,注意不要重复就是了,而且注意和宿主机的网段和网关保持一致。
7. 配置桥接模式的具体桥接方式

在这里插入图片描述
    将桥接的网卡设置成宿主机上真实的网卡。

在这里插入图片描述
9. 执行完脚本之后将网络连接模式设置为桥接模式

在这里插入图片描述
    至此,虚拟机的初始化工作就做好了,可以用Termius等远程连接工具连接试一下,如果能连接外网,就说明配置成功。

2.2 配置服务运行环境

    既然虚拟机基本环境配置好了,那么接下来就是在上面安装一些你的服务需要用到的组件,最常见的还是JDKMySQLRedis。下面直接给出安装脚本,直接在虚拟机或者Termius等远程连接工具上面执行即可。

2.2.1 安装并配置JDK17

#!/bin/bash
sudo apt update
sudo apt upgrade -y
# JDK 配置
# 首先创建jdk的文件夹
jdk_dir="/usr/local/jdk/"
sudo mkdir ${jdk_dir}
# 然后进入文件夹
cd ${jdk_dir}
# 下载JDK文件, 这里默认下载JDK17
jdk_url="https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz"
echo "download jdk.tar.gz file, give a url, default: ${jdk_url}"
read jdk_url_in
if [ -n "${jdk_url_in}" ]; then# 如果用户输入了URL, 则使用用户输入的, 输错了不负责jdk_url=${jdk_url_in}
fi
echo "download jdk from url: ${jdk_url}"
# 下载JDK文件
tmp_jdk_tar_name=$(date +%s%3N)
sudo curl -Lo ${tmp_jdk_tar_name} ${jdk_url} 
# 指定的文件夹必须要先存在
tmp_jdk_tar_r_name="${tmp_jdk_tar_name}_$(date +%s%3N)"
sudo mkdir ${tmp_jdk_tar_r_name}
# 解压到指定文件夹
sudo tar zxf ${tmp_jdk_tar_name} -C ${tmp_jdk_tar_r_name}
# 进入解压后的文件夹然后获取 java home
cd ${tmp_jdk_tar_r_name}
# 解压出来只有一个文件夹, 取得这个文件夹的名字
java_dir=$(ls)
# 将解压后的文件夹移动到临时目录的上一级, 即 /usr/local/jdk/ 中
sudo mv ${java_dir} ${jdk_dir}
cd ${jdk_dir}
# 删除所有的临时文件和文件夹
sudo rm -rf ${tmp_jdk_tar_name} ${tmp_jdk_tar_r_name}
# 现在配置 JDK 环境变量
echo "jdk installed successfully, now config JAVA HOME."
# 移动到解压出来的目录中
cd ${java_dir}
# 将 JAVA_HOME 环境变量写入用户家目录中的 .profile 文件中
# 注意版本, Ubuntu24.04 默认是有这个文件存在的
echo -e "\n# JDK config\nexport JAVA_HOME=${PWD}\nexport PATH=\${PATH}:\${JAVA_HOME}/bin" >> ~/.profile
# 刷新
echo "now your jdk has been installed at ${jdk_dir}${java_dir}"
# 以上, JDK 就配置好了

    执行完脚本之后需要手动执行(不知道在脚本里面为什么不生效):

source ~/.profile

2.2.2 安装并配置MySQL8.4

#!/bin/bash
sudo apt update
sudo apt upgrade -y
# MySQL8.4安装
# 回到家目录
tmp="tmp_$(date +%s%3N)"
cd ~
mkdir "${tmp}"
cd "${tmp}"
curl -Lo a https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb 
# MySQL的密码会在执行以下命令的时候通过图形化交互的方式填写
sudo dpkg -i a
# 刷新源,这一步非常重要
sudo apt update
sudo apt install mysql-server
# 准备修改远程登录权限的SQL脚本
cd ~
sql_file="${tmp}/$(date +%s%3N)"
echo -e "use mysql;\nselect user,host,plugin from user;\nupdate user set host = '%' where user = 'root';\nflush privileges;" > "${sql_file}"
# 执行SQL脚本
mysql -uroot -p < "${sql_file}"
# 删除临时目录
cd ~
rm -rf "${tmp}"
echo "now MySQL8.4 has been installed."
# 以上, MySQL8.4安装配置完成

2.2.3 安装并配置Redis

#!/bin/bash
sudo apt update
sudo apt upgrade -y
# Redis 安装及配置
# 安装直接执行如下指令即可
sudo apt install redis-server -y
# 接下来是配置, 配置主要是监听的IP和密码需要在配置文件中更改, 以及是否为保护模式
cd /etc
# redis/ 目录的权限是 rwxrws---, 对应8进制2770
sudo chmod 777 redis/
cd redis/
# 刚安装好的话 /etc/redis/ 中应该只有一个 redis.conf 文件
conf_name="redis.conf"
# 备份
sudo cp -f ${conf_name} "${conf_name}.backup"
# 修改 bind
sudo sed -i 's/^bind/# bind/' "${conf_name}"
# 修改密码
read -p "please input your new redis password: " pass
sudo sed -i "s/^# requirepass foobared/requirepass ${pass}/" "${conf_name}"
# 将 protected-mode 修改为 no
sudo sed -i 's/^protected-mode yes/protected-mode no/' "${conf_name}"
# 重启 Redis 服务以应用更改
sudo systemctl restart redis-server
cd /etc
# 恢复原有的权限
sudo chmod 2770 redis/
echo "redis configuration updated successfully."
# 以上, redis 安装配置完成

3 部署服务

    虽说是使用的虚拟机,但是现在仍然是在操作系统上直接部署服务,与直接在物理机操作系统上部署服务并没有什么区别,所以部署服务这一块,参考【Ubuntu24.04】服务部署(基础)这一篇文章。

4 总结

    本文主要介绍了如何安装VMware软件,如何在VMware中安装并配置虚拟机,以及部分组件的安装脚本以供参考。

相关文章:

【Ubuntu24.04】服务部署(虚拟机)

目录 0 背景1 安装虚拟机1.1 下载虚拟机软件1.2 安装虚拟机软件1.2 安装虚拟电脑 2 配置虚拟机2.1 配置虚拟机网络及运行初始化脚本2.2 配置服务运行环境2.2.1 安装并配置JDK172.2.2 安装并配置MySQL8.42.2.3 安装并配置Redis 3 部署服务4 总结 0 背景 你的服务部署在了你的计算…...

timm库加载的模型可视化

在深度学习中&#xff0c;模型的可视化有助于了解模型的结构和层级关系。以下是几种方式来可视化使用 timm 库加载的模型&#xff1a; 打印模型结构 torch.nn.Module 的子类&#xff08;包括 timm 的模型&#xff09;可以通过 print() 查看其结构&#xff1a;import timm# 加…...

服务限流、降级、熔断-SpringCloud

本文所使用的组件&#xff1a;Nacos&#xff08;服务中心和注册中心&#xff09;、OpenFeign&#xff08;服务调用&#xff09;、Sentinel&#xff08;限流、降级&#xff09;、Hystrix&#xff08;熔断&#xff09; 项目结构&#xff1a; service-provider&#xff1a;提供服…...

2024最新YT-DLP使用demo网页端渲染

2024最新YT-DLP使用demo网页端渲染 前提摘要1.使用python的fastapi库和jinjia2库进行前端渲染2.代码实现1&#xff09;目录结构2&#xff09;代码style.cssindex.htmlresult.htmlmain.pyrun.py 3&#xff09;运行测试命令端运行 3.项目下载地址 前提摘要 2024最新python使用yt…...

《第十部分》1.STM32之通信接口《精讲》之IIC通信---介绍

经过近一周的USART学习&#xff0c;我深刻体会到通信对单片机的重要性。它就像人类的手脚和大脑&#xff0c;只有掌握了通信技术&#xff0c;单片机才能与外界交互&#xff0c;展现出丰富多彩的功能&#xff0c;变得更加强大和实用。 单片机最基础的“语言”是二进制。可惜&am…...

wireshark使用lua解析自定义协议

wireshark解析自定义协议 1.自定义的lua放入路径2.修改init.lua2.1 开启lua2.2 init.lua文件最后加入自己的lua文件位置&#xff0c;这里需要确保与自己的文件名相同 3.编写lua4.编写c抓包5.wireshark添加自定义协议如何加调试信息 1.自定义的lua放入路径 一般是自己软件的安装…...

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容

参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…...

Qt实现可拖拽的矩形

之前项目上需要用Qt来绘制可拖拽改变形状的矩形。看了Qt Graphics相关的内容&#xff0c;虽然对Qt怎么添加图元的有了些了解&#xff0c;但是具体如何实现拖拽效果&#xff0c;一时也没有什么好的想法。还好网上有人分享的例子&#xff0c;很受启发。后来又回顾了一下这部分的代…...

CentOS:A服务器主动给B服务器推送(上传),B服务器下载A服务器文件(下载)

Linux:常识(bash: ip command not found )_bash: ip: command not found-CSDN博客 rsync 中断后先判断程序是否自动重连:ps aux | grep rsync 查看目录/文件是否被使用(查询线程占用):lsof /usr/local/bin/mongodump/.B_database1.6uRCTp 场景:MongoDB中集合非常大需要…...

Oracle 执行计划查看方法汇总及优劣对比

在 Oracle 数据库中&#xff0c;查看执行计划是优化 SQL 语句性能的重要工具。以下是几种常用的查看执行计划的方法及其优劣比较&#xff1a; 1. 使用 EXPLAIN PLAN FOR 和 DBMS_XPLAN.DISPLAY 方法 执行 EXPLAIN PLAN FOR 语句&#xff1a; EXPLAIN PLAN FOR SELECT * FROM …...

TCL大数据面试题及参考答案

Mysql 索引失效的场景 对索引列进行运算或使用函数:当在索引列上进行数学运算、函数操作等,索引可能失效。例如,在存储年龄的列上建立了索引,若查询语句是 “SELECT * FROM table WHERE age + 1 = 20”,这里对索引列 age 进行了加法运算,数据库会放弃使用索引而进行全表扫…...

九、FOC原理详解

1、FOC简介 FOC&#xff08;field-oriented control&#xff09;为磁场定向控制&#xff0c;又称为矢量控制&#xff08;vectorcontrol&#xff09;&#xff0c;是目前无刷直流电机&#xff08;BLDC&#xff09;和永磁同步电机&#xff08;PMSM&#xff09;高效控制的最佳选择…...

vue页面成绩案例(for渲染表格/删除/添加/统计总分/平均分/不及格显红色/输入内容去首尾空格trim/输入内容转数字number)

1.使用v-if 和v-else 完成<tbody>标签的条件渲染 2.v-for完成列表渲染 3.:class完成分数标红的条件控制 删哪个就传哪个的id&#xff0c;基于这个id去过滤掉相同id的项&#xff0c;把剩下的项返回 a标签的默认点击事件会跳转 这里要禁止默认事件 即使用click.provent 就…...

STM32编程小工具FlyMcu和STLINK Utility 《通俗易懂》破解

FlyMcu FlyMcu 模拟仿真软件是一款用于 STM32 芯片 ISP 串口烧录程序的专用工具&#xff0c;免费&#xff0c;且较为非常容易下手&#xff0c;好用便捷。 注意&#xff1a;STM32 芯片的 ISP 下载&#xff0c;只能使用串口1&#xff08;USART1&#xff09;&#xff0c;对应的串口…...

Centos使用docker搭建Graylog日志平台

日志管理系统有很多&#xff0c;比如ELK,Graylog&#xff0c;LokiGrafanaPromtail 适用场景&#xff1a; 1.如果需求复杂&#xff0c;服务器资源不受限制&#xff0c;推荐使用ELK&#xff08;Logstash Elasticsearch Kibana&#xff09;方案&#xff1b; 2.如果需求仅是将…...

自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例

Kafka&#xff1a;分布式消息系统的核心原理与安装部署-CSDN博客 自定义 Kafka 脚本 kf-use.sh 的解析与功能与应用示例-CSDN博客 Kafka 生产者全面解析&#xff1a;从基础原理到高级实践-CSDN博客 Kafka 生产者优化与数据处理经验-CSDN博客 Kafka 工作流程解析&#xff1a…...

【SQL】【数据库】语句翻译例题

SQL自然语言到SQL翻译知识点 以下是将自然语言转化为SQL语句的所有相关知识点&#xff0c;分门别类详细列出&#xff0c;并结合技巧说明。 1. 数据库操作 创建数据库 自然语言&#xff1a;创建一个名为“TestDB”的数据库。 CREATE DATABASE TestDB;技巧&#xff1a;识别**“创…...

linux基本命令2

7. 文件查找和搜索 (继续) find — 查找文件 find /path/to/search -name "file_name" # 根据名称查找文件 find /path/to/search -type f # 查找所有普通文件 find /path/to/search -type d # 查找所有目录 find /path/to/search -name "*.txt" # 查找…...

Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程

Redisson 是一个高性能的 Java Redis 客户端&#xff0c;提供了丰富的分布式工具集&#xff0c;如分布式锁、Map、Queue 等&#xff0c;帮助开发者简化 Redis 的操作。在集成 Redisson 到项目时&#xff0c;开发者通常有两种选择&#xff1a; 使用 Redisson 原始依赖。使用 Re…...

Git命令使用与原理详解

1.仓库 # 在当前目录新建一个Git代码库 $ git init ​ # 新建一个目录&#xff0c;将其初始化为Git代码库 $ git init [project-name] ​ # 下载一个项目和它的整个代码历史 $ git clone [url]2.配置 # 显示当前的Git配置 $ git config --list ​ # 编辑Git配置文件 $ git co…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

springboot整合VUE之在线教育管理系统简介

可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生&#xff0c;小白用户&#xff0c;想学习知识的 有点基础&#xff0c;想要通过项…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...