VMWare安装配置
VMWare安装配置
VMWare Workstation Pro:17.5版本参考秘钥JU090-6039P-08409-8J0QH-2YR7F
安装完成,创建虚拟机
下载ubuntu镜像:选择18.04.6版本(如果版本已经升级,则另外选择一个相对稳定的版本)
- 方式1:ubuntu中文区官网
- 方式2:下载桌面版ubuntu(新手推荐)
Server版(老手推荐,新手跳过)
Server版本安装参考:
新建虚拟机,选择镜像(ubuntu镜像)
- 原生版(参考上述配置,安装的是server版本)
桌面版安装(新手建议安装桌面版)
选择镜像文件(desktop版本)输入系统名称、用户名密码(noob、123456),选择镜像安装目录,选择给虚拟机分配的硬盘空间大小,可以选择自定义虚拟机配置(如果电脑配置比较好,可以分配16G内存、4核CPU,其他内容不用变动),然后等待安装
选择ubantu桌面版适用新手入门,安装配置完成后输入密码即可进入系统,然后做一些基础项配置:分辨率、语言、日期时间等
安装完成,系统初始化,配置基础内容。点击win键:配置基本内容
- 输入resolution(屏幕缩放改为200%,结合实际调整)
- 输入language(安装语言支持等待安装,然后调整中文,等待下次登录系统就会生效)
- 增加中文输入法(language添加输入法和语言,区域和语言配置,再次重新登录即可使用中文)
- 时区修改:输入time(日期和时间),修改时区
配置参考说明
参考本机的CPU配置选择(任务管理器=》详细信息查看【性能】)
配置参考
处理器数量:
如果打算同时运行多个虚拟机或者需要高性能,你可以考虑将虚拟机的处理器数量设置为主机的逻辑处理器数量(即 32 个),但要确保不要超过主机的物理核心数量(即 24 个),因为这可能会导致过度分配和性能下降。
每个处理器的内核数量:
对于每个处理器的内核数量,一般来说,设置为 1 或者 2 是比较常见的选择。这取决于虚拟机的工作负载和性能需求。
如果你的虚拟机主要用于轻量级任务或者测试目的,设置每个处理器的内核数量为 1 是足够的。
如果你的虚拟机需要处理较重的工作负载或者需要更高的性能,可以考虑将每个处理器的内核数量设置为 2,以提高虚拟机的处理能力。
常见的设置是将虚拟机的处理器数量设置为主机的逻辑处理器数量,并将每个处理器的内核数量设置为 1 或者 2。
最佳的设置取决于你的具体需求和工作负载,你可能需要进行一些实验和性能测试来找到最适合你的配置
桌面版使用
给系统安装软件:软件商店安装、命令行终端程序安装
系统提供了apt软件包管理器(可通过apt install指令安装)
# 安装docker
sudo apt install docker.io
# 等待安装完成,确认docker版本
docker -v
使用docker测试,如果执行docker创建镜像提示没有权限,则有两种方式:
# 以管理员身份执行
sudo docker run hello-world
# 或者通过systemctl重启docker
systemctl restart docker
docker run hello-world
远程开发
在window下远程开发,操作linux服务器(不改变原有开发习惯,如果要在linux虚拟机中开发可能又要不断切换调整浪费时间),远程开发主要分为两种方式:远程部署、纯远程开发
准备工作
- 网络联通(ifconfig确认宿主机和虚拟机的网络联通是否正常)
- SSH环境配置
1.环境准备
🚀网络联通
# 查看虚拟机ip
ifconfig
# 如果没有安装这个命令,则可安装net-tools
sudo apt install net-tools
或者按win键,输入IP(选择网络配置,选择查看网络IP)
本机CMD执行ping指令连接虚拟机IP查看网络是否联通,如果可以ping通则说明本机可以访问到虚拟机。或者虚拟机执行ping指令访问本机IP
🚀SSH 环境
虚拟机中安装SSH服务:
# 安装ssh
sudo apt-get install openssh-server
# 查看ssh服务是否开启
ps -ef | grep ssh
# 打开ssh服务
sudo service ssh start
# 关闭ssh服务
sudo service ssh stop
🚀更新软件包并安装开发环境
# 更新软件包
sudo apt update
# 安装jdk8
sudo apt install openjdk-8-jdk
# 检查java版本
java -version
# 安装java依赖管理工具maven
sudo apt install maven
# 查看maven版本
mvn -v
2.远程部署模式(基于本地 =》 同步到linux服务器部署)
目的:通过本地服务操作完成远程服务器项目的代码同步、调试、运行、构建、部署
针对调试:不建议对线上的项目进行调试、打断点,可能会影响用户的使用,是一个危险的操作
1)本地创建Springboot项目
创建一个干净的Springboot项目,模拟远程开发
配置同步:Tools=》Development=》Configuration (创建一个远程配置)=》添加选择sftp协议=》输入服务器名称(Ubuntu)
然后在相应配置中添加一个SSH连接配置,让软件知道应该去访问哪个linux服务器。点击设置添加一个SSH配置,输入虚拟机的IP、用户名、密码
点击OK之后则可在侧边栏看到对应服务目录,如果没有侧边栏则可以手动打开:Tools=》Development=》Browse Remote Host
配置映射:同步本地文件和远程服务器文件
Tools=》Development=》Configuration :选择刚创建好的服务配置,然后点击Mappings选项卡进行配置,需要先理解每个参数的含义
- Local path:本机项目代码存放位置
- Deployment path:希望将代码同步到linux服务器的目录位置
- Web path:/
进入到linux 虚拟机目录(如果虚拟机创建了用户,例如创建了用户noob,则可在/home下有一个noob目录专门用于存放这个用户相关的所有文件),在里面创建一个文件夹专门用于存储项目代码(即同步部署的目标路径)
2)代码同步
🚀手动同步:配置完成,右键选择项目RemoteDemo,选择Deployment=》Sync with Deployed to Ubuntu (一键同步),然后就会自动列举出当前没有同步的文件内容。点击一键同步即可完成同步操作,随后去linux服务器上查看代码是否同步完成(基于手动同步操作)
🚀自动同步:Tools=》Development=》Automatic Upload(自动上传配置),点击该配置则开启自动上传,随后在项目中任意位置创建一个文件,测试是否自动同步即可
本地删除文件的时候会相应提示是否要联动删除远程的文件内容,如果说每次删除一个文件都要询问一次则会比较麻烦,因此可以考虑自行调整配置:Tools=》Development=》Options 可以更改自动上传配置的一些内容(结合自身需求进行调整)
3)远程操控运行代码(运行、构建、部署、调试)
🚀本地终端远程操控linux服务器运行代码
打开【Terminal】窗口,选择服务器后自动连接
然后进入到代码目录,执行指令运行代码【mvn spring-boot:run
】,随后程序会自动下载项目依赖并启动项目
等待一段时间之后,可以查看控制台确认项目是否正常启动,启动成功之后则在本地访问linux虚拟机的ip访问项目(linux服务器IP+访问端口+项目路径)
这里有一个小细节,如果执行mvn spring-boot:run
指令,项目依赖安装完成之后发现项目并没有启动,虽然显示build success,但是它是将项目所需依赖加载出来,却没有启动项目,因此需要排查原因;
一开始以为是maven依赖没有构建,重新执行mvn clean install还是同样的问题,参考了很多文章也没有解决方案,于是突发奇想去查看mvn这个指令执行的原理,然后再去看对应的问题
使用mvn spring-boot:run
命令,可以直接在项目中运行Spring Boot应用程序,无需先打包成jar或war文件。这在开发过程中非常有用,因为它可以快速启动,并允许进行实时编译和自动重启
结合上述执行原理分析,回归到pom.xml项目本身,发现在默认生成的springboot项目中对spring-boot-maven-plugin
的执行目标配置添加了一个skip属性,而导致无法扫描RemoteDemoApplication作为启动类配置,因此就会出现上面的问题,虽然依赖加载完成、构建成功,但是没有要启动的内容,因此不会启动项目。解决方案就是修改配置,取消skip
,然后重新执行mvn spring-boot:run
这个时候再去访问项目,项目正常访问:虚拟机访问:http://localhost:8080/health、宿主机访问:http://[虚拟机IP]:8080/health
🚀本地终端远程操控linux 服务器构建、部署项目
构建项目:通过【Terminal】终端,执行指令【mvn package
】打包项目,确认build success,然后看对应目录生成的jar
部署项目:执行上一步骤生成的jar,java -jar xxx.jar --sping.profiles.active=prod
,然后确认项目启动信息,启动成功则可进行访问
java -jar RemoteDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
🚀本地终端远程调试linux服务器项目
本地项目打开Run/Debug Configurations,添加一套远程调试的配置(Remote JVM Debug)
Host:填写linux服务器IP、Port:选择不冲突的端口号(默认是5005)、JDK版本(看实际使用的版本,此处选择8),然后会看到配置会自动生成一个启动命令行的参数配置,复制这个命令行参数,然后在启动项目的时候指定参数。记得点击Apply保存配置,然后根据生成的命令行启动项目
# 参考命令行参数配置
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
# 启动程序
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar xxx.jar --sping.profiles.active=prod
# 观察程序启动内容(发现其会额外占用一个5005端口)
# 以debug模式启动
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar RemoteDemo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
随后在本地点击debug按钮(对应debug选择的是前面配置的ubuntu debug),让它成功连接远程的JVM,然后在本地设置断点进行调试,就会发现可以通过本地调试远程部署的项目(但是这里有一个问题,就是必须保证本地的项目代码和线上部署的项目代码是一致的,不然这种调试毫无意义)
3.远程开发模式(基于linux,本地操作远程)
通过idea自带的远程开发模式,实现一个更简单、体验更好的远程开发模式,无需做任何多余配置
远程开发模式:以服务器为主,将所有的代码编辑、运行、部署等操作都是在服务器上运行,而本地电脑只是相当于操作远程服务器(有点类似云游戏概念,本地不存储代码,所有的内容都在服务器上,这种情况适用于本地电脑性能一般、远程服务器性能超强、以及开发环境需要多人协作或者需要统一一套开发环境的场景,类似开发机,连接到统一的开发机上去操作)
如果是多人协作场景,还需考虑多人协作修改冲突问题,要借助Git进行版本管理
借助IDEA的远程开发功能来进行操作,先关闭现有的RemoteDemo项目(所有项目),然后新建选择Remote Development=》SSH(可以选择已有的配置,也可自行填充配置信息)
选择IDE和项目,然后软件就会在linux服务器上安装项目开发所需环境(开发软件),文件路径选择项目所在路径,第一次安装配置可能会比较慢
等待项目加载完成,然后可以本地启动调试项目(这个时候则可直接访问IP测试项目),然后可以查看本地电脑的任务管理器的IDEA的CPU占用情况
本地启动失败,需要配置,settings=》Build,Exception,Development:Compile=》进程VM选项:-Djdk.lang.Process.launchMechanism=vfork
可能是使用了比较新的IDEA版本导致,需要配置一下setting
扩展
VMWare Tools安装:实现windows于VMWare文件互传
sudo apt-get install open-vm-tools-desktop -y
# 重启系统使其生效
sudo reboot
检查是否安装成功:重启虚拟机后,菜单栏→虚拟机→安装 VMware Tools→已经变成“重新安装 VMware Tools”,这表明 VMware Tools 已经安装成功
随后可以直接在ubuntu中直接复制粘贴到windows中
常见问题
电脑闪屏后重置C盘内容,导致VMWare不能正常使用,就算以管理员身份启动还是同样的问题,重装VMWare17进行覆盖,然后重新输入许可证密钥即可
SSH链接异常(Bad owner or permissions on C:\Users\USER/.ssh/config),查看对应文件的权限信息。根据提示,移除掉对应用户的访问控制(如果是继承,则需要进入高级配置中【禁用继承】,然后再删除掉对应的用户信息)