在VMware中安装Ubuntu server
我这里安装的是ubuntu-22.04.5-live-server-amd64.iso
,可以到清华源下载
打开VMware前需要看一下网络,改成NAT模式
方便ssh连接
- 语言:选择English
- 键盘布局:默认即可,English(US)
- 版本:Ubuntu server
- 网络配置:默认即可
- 代理:默认
- 镜像代理:改成阿里云
https://mirrors.aliyun.com/ubuntu/
- 磁盘分区:选择 Use an entire disk(自动分区),下一个页面默认,然后continue
- 用户设置:输入用户名和密码
- 系统更新:skip跳过
- ssh服务:勾选 Install OpenSSH server
- 其他软件:暂时不需要,跳过
配置sshd_config
ListenAddress 0.0.0.0 # 允许所有 IP 连接PasswordAuthentication yes # 允许密码登录(可选,建议用密钥)PermitRootLogin yes # 允许ssh连接时使用root用户
端口这里不用修改,还是用默认的22,后续通过NAT设置配置端口转发,让windows的50022转发到这个虚拟机的22端口
重启ssh服务:sudo service ssh restart
(已废弃)ssh通过127.0.0.1+端口的方式连接不同的虚拟机
- 关闭虚拟机,在 VMware 中选择 “NAT 模式”
- 在 编辑 → 虚拟网络编辑器 → NAT设置 中添加端口转发规则:
- 主机端口(Windows 端口):
50022
(或其他自定义端口) - 虚拟机 IP:
192.168.142.128
(Ubuntu 的 NAT IP,可用ifconfig
查看) - 虚拟机端口:
22
(SSH 默认端口)
- 主机端口(Windows 端口):
重复此步骤,为每个虚拟机分配不同的 主机端口(如 50022
、50023
、50024
)
设置静态地址
上面的端口映射方式虽然ssh连接虚拟机简单了,但是如果虚拟机里运行了一个服务,windows想访问这个服务还是需要看一下虚拟机的ip地址,所以不如配置成静态的地址
首先在VMware中查看子网IP并修改网关,我这里子网IP为192.168.142.0
,网关设置为192.168.142.1
,该虚拟机对应的网卡名为VMnet8
然后在「网络和Internet设置」>「更改适配器选项」>「VMnet8」>「属性」>「Internet 协议版本 4 (TCP/IPv4)」>「属性」>「修改IP地址」
修改后打开虚拟机,修改/etc/netplan
路径下的网络配置文件
这里可能不同虚拟机的文件名是不同的,可以看一下文件内容,默认的内容大概是这样的
注意这里的ens33
,自己原来文件中是什么用什么,其它的有是ens32
的,修改后的内容:
# This is the network config written by 'subiquity'network: renderer: networkd ethernets: ens33: # 上面 ip addr 命令查看到的网卡编号 addresses: - 192.168.142.100/24 # 子网 CIDR 由 “子网 IP 地址” 192.168.142.0 和 “子网掩码” 255.255.255.0 计算得到:本机私有 IP 地址,在子网允许的 IP 范围内自定义(注意如果有多个虚拟机的,不要互相冲突) #gateway4: 192.168.142.1 # IPv4 网关 IP,上面“NAT 设置”可查看得到,注:gateway4 配置已过时,使用以下的 default routes 配置代替 routes: - to: default via: 192.168.142.1 # IPv4 网关 IP,上面“NAT 设置”可查看得到 nameservers: addresses: - 114.114.114.114 # 首选 DNS 服务器 - 8.8.8.8 # 备用 DNS 服务器 search: [] # 搜索域,这里为空 version: 2
修改后使用netplan apply
应用网络配置
重启被覆盖问题
我这里修改/etc/netplan
路径下的文件并netplan apply
应用后,通过ifconfig
查看是生效的,但是重启又会恢复,后来发现是Cloud-Init 覆盖了配置,所以还需要修改这个的配置文件
我这里查看/etc/cloud/cloud.cfg.d/
路径,发现90-installer-network.cfg
这个文件的内容和上面默认的50-cloud-init.yaml
是一样的,所以修改了90-installer-network.cfg
这个文件
将该文件的内容修改为和上面50-cloud-init.yaml
完全一致即可,以下是不带注释的代码:
# This is the network config written by 'subiquity'network: renderer: networkd ethernets: ens33: addresses: - 192.168.142.100/24 routes: - to: default via: 192.168.142.1 nameservers: addresses: - 114.114.114.114 - 8.8.8.8 search: [] version: 2
1.yudao后端服务构建
下载JDK21
由于openJDK22版本GA了,所以21版本需要到历史版本中下载https://jdk.java.net/archive/
配置JAVA环境
上传到linux系统中,之后解压,这里我将压缩包放到了/opt
目录下
cd /opttar xvf openjdk-21.0.2_linux-x64_bin.tar.gz
编辑文件~/.bashrc
在文件最后添加三行内容(已废弃,使用下面的代码)
# 废弃,使用这三行代码后,虚拟机中默认的java版本为jdk11,这里PATH写的不对,# 不应该把 CLASSPATH 加到 PATH 里,CLASSPATH 不是用来设置 PATH 的,它只用于# Java 程序运行时加载类路径,导致了/opt/jdk-21.0.2/bin 没有优先于系统默认的# /usr/bin 出现在 PATH 中# 经测试,which java指令的输出结果为/usr/bin/javaexport JAVA_HOME=/opt/jdk-21.0.2export CLASSPATH=.:${JAVA_HOME}/libexport PATH=${CLASSPATH}:${JAVA_HOME}/bin:$PATH
新的代码:
# 设置 JDK 安装路径export JAVA_HOME=/opt/jdk-21.0.2
# 设置 CLASSPATH(Java 类路径,仅用于 Java 程序运行)export CLASSPATH=.:$JAVA_HOME/lib
# 设置 PATH(系统查找命令的路径,必须把 $JAVA_HOME/bin 放在最前面)export PATH=$JAVA_HOME/bin:$PATH
使用新代码并加载配置后,查看java版本正常
重新加载配置
source ~/.bashrc
查看JAVA版本
java --version
如果版本为openjdk 21.0.2,说明没有问题
安装配置maven
apt install maven
配置国内源,更改配置文件/etc/maven/settings.xml
找到<mirrors>
标签行,将下面内容添加到此标签内
<mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public </url></mirror>
下载后端源码
mkdir -p /opt/gitdircd /opt/gitdirgit clone https://gitee.com/zhijiantianya/yudao-cloud.git
切换分支 由于官方更新了项目,将master-jdk21
分支替换为了master-jdk17
,所以这里跟视频不一样。又因为官方更新速度比较快,有时候新代码无法通过构建,使用时无需追求最新的代码而是选择一个稳定能够通过的代码。项目提供了tag,可以切换到最新的tag来成功构建。可以在项目下执行git tag
来查看项目所有的tag,这里使用最新的tag:
cd yudao-cloud/git checkout v2.1.0\(jdk17/21\)
构建项目
mvn clean package -Dmaven.test.skip=true
项目构建时长跟网络和机器配置有关
至此,我们已经部署好了后端环境,成功构建了后端项目 后续我们会继续部署这个项目,直到项目部署到k8s集群中并能正常访问