中学网站域名用什么用,软文推广多少钱一篇,赛扶做网站,实训建设网站的目的前言#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中#xff0c;帮助初级程序员快速进阶#xff0c;以最快的速度#xff0c;效率#xff0c;快速进阶到中高阶程序员。
本项目将基于谷粒商城…前言这个系列将使用最前沿的cursor作为辅助编程工具来快速开发一些基础的编程项目。目的是为了在真实项目中帮助初级程序员快速进阶以最快的速度效率快速进阶到中高阶程序员。
本项目将基于谷粒商城项目并且对谷粒商城项目进行二次重构使其满足最新的主流技术栈要求。
上一篇文章介绍了谷粒商城的技术架构并且分析了它有什么不足。我们这篇文章学习使用vagrant快速创建虚拟机部署虚拟机环境。
1、虚拟机软件virtual box安装
可以使用vmware或者virtual box等软件安装虚拟机。犹豫virtual box较为轻量级而且开源免费我们这里选用它。您也可以使用其它软件。当然您有多余的linux电脑那也是很ok的。就不用安装了。 补充为何服务器一般要用linux 服务器通常选择Linux操作系统主要基于以下几个原因 开源性和成本效益Linux是开源的。 稳定性和可靠性Linux以其卓越的稳定性著称能够长时间运行而无需重启适合需要持续服务的服务器环境。 安全性Linux的多用户和多任务设计以及强大的权限管理机制使其在安全性方面优于许多其他操作系统。此外开源社区的积极维护确保了安全漏洞能够及时被发现和修复。 灵活性和可定制性Linux允许用户根据具体需求定制系统选择适合的发行版和软件包满足不同的服务器应用场景。 广泛的社区支持Linux拥有庞大的开发者和用户社区提供丰富的技术支持和资源帮助解决服务器管理和维护中的各种问题。 请自行直接从官网下载安装vitual box。https://www.virtualbox.org/
2、Vagrant安装
一般来说安装虚拟机我们会在网络上查找需要的安装镜像但是这样比较麻烦。这里我们使用新技术Vagarant。
Vagrant 是一个开源工具用于创建和管理虚拟开发环境。它使得开发人员能够在本地机器上快速搭建虚拟机模拟不同操作系统和软件环境而无需担心配置问题。通过 Vagrant开发者可以使用简单的配置文件来自动化环境的构建使得开发环境的一致性和可重复性更强。
简单来说Vagrant 就像是一个“虚拟机管理器”帮助你轻松创建、管理和共享虚拟开发环境。
下载地址https://www.vagrantup.com/ 下载后双击傻瓜式安装。 注意Vagrant 是没有图形界面的所以安装完成后也没有桌面快捷方式。具体使用方法接下来会详细说明。
Vagrant 的安装程序会自动把安装路径加入到 PATH 环境变量所以这时候可以通过命令行执行 vagrant version 检查是否安装成功 3、快速部署虚拟机
接下来使用vagrant部署一个虚拟机。
vagrant init centos/7
vagrant up成功后将看到如下截图。 打开virtual box可以看到虚拟机已经启动了。 注意命令 vagrant init centos/7 中使用的centos/7是vagrant官方提供的镜像名称类似于docker。想要查找很简单。可以通过官网去找。
https://portal.cloud.hashicorp.com/vagrant/discover
您可能会遇到如下报错。
C:\usrvagrant up
Bringing machine default up with virtualbox provider...default: Importing base box centos/7...
There was an error while executing VBoxManage, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.Command: [import, \\\\?\\C:\\Users\\半旧\\.vagrant.d\\boxes\\centos-VAGRANTSLASH-7\\2004.01\\virtualbox\\box.ovf, --vsys, 0, --vmname, centos-7-1-1.x86_64_1737351515819_14516, --vsys, 0, --unit, 10, --disk, C:/Users//VirtualBox VMs/centos-7-1-1.x86_64_1737351515819_14516/centos-7-1-1.x86_64.vmdk]Stderr: 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Interpreting \\?\C:\Users\\.vagrant.d\boxes\centos-VAGRANTSLASH-7\2004.01\virtualbox\box.ovf...
OK.
0%...
Progress state: VBOX_E_INVALID_OBJECT_STATE
VBoxManage.exe: error: Appliance import failed
VBoxManage.exe: error: Storage for the medium C:\Users\???\VirtualBox VMs\centos-7-1-1.x86_64_1737351515819_14516\centos-7-1-1.x86_64.vmdk is not created
VBoxManage.exe: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component ApplianceWrap, interface
VBoxManage.exe: error: Context: enum RTEXITCODE __cdecl handleImportAppliance(struct HandlerArg *) at line 1363 of file VBoxManageAppliance.cpp这个错误是因为路径中包含了非标准字符如 半旧即中文字符而 VirtualBox 或 Vagrant 在处理这些字符时出现了问题。
解决办法。
步骤 1更改 Vagrant 的存储位置
在 C: 盘下创建一个新的目录如 C:\VagrantData。
设置 VAGRANT_HOME 环境变量指向这个新目录
setx VAGRANT_HOME C:\VagrantData步骤 2清理之前下载的 box 文件 既然我们更改了 Vagrant 的存储路径我们需要清理之前下载的 centos/7 box 文件。
删除原有的 centos/7 box 文件。你可以删除以下文件夹
bash
C:\Users\半旧\.vagrant.d\boxes\centos-VAGRANTSLASH-7步骤 3更改virtual box全局配置 步骤4重新执行虚拟机安装
打开一个新的cmd窗口重新执行命令。
vagrant init centos/7
vagrant up接下来我们远程连接下虚拟机。回顾下我们之前看到的控制台信息。 发现没有原来已经帮我们自动创建了ssh连接相关信息。我们只需要执行如下命令就完成了远程连接。
vagrant ssh牛
4、网络配置
接下来我们需要解决一个问题就是宿主机与虚拟机端口冲突。比如两者都有mysql两个3306端口就冲突了。
我们可以配置端口转发来避免这一问题。 但是这要是很多软件冲突就太麻烦了。
我们可以给虚拟机分配单独的ip地址解决这一问题。
改ip有很多办法因为我们使用了vagarant可以直接更改vagrantfile解决。 在宿主机输入命令查看虚拟网卡配置。 看到图中是192.168.56.1我们将虚拟机的ip地址设置为同一网段就行。 重启下虚拟机。
vagrant reload测试下宿主机和虚拟机网络是否互通。 一切ok。
自此使用vagrant创建虚拟机的内容就大功告成了。
5、补充常见网络连接模式
这里再补充一点网络的基础知识。我们回顾下之前Vagrantfile中看到的内容发现没有网络有好几种模式。 先解释下这个配置文件。
1、端口转发Port Forwarding端口转发使得主机host machine可以访问虚拟机guest machine上特定的端口。其实就是端口映射关系。
示例1开放端口并允许公共访问
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing localhost:8080 will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
config.vm.network forwarded_port, guest: 80, host: 8080这个配置会将虚拟机guest的端口 80 转发到主机host的端口 8080。 在主机的浏览器中访问 localhost:8080 时将会访问虚拟机的端口 80。
示例 2仅允许通过本地回环地址访问
# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine and only allow access
# via 127.0.0.1 to disable public access
config.vm.network forwarded_port, guest: 80, host: 8080, host_ip: 127.0.0.1
2、公共网络Public Network
# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
config.vm.network public_network这个配置使得虚拟机通过桥接网络连接到物理网络虚拟机将像一台独立的物理设备一样出现在同一网络中。 虚拟机会自动获取一个与主机网络中其他设备相同的 IP 地址通常由 DHCP 服务器分配。它允许虚拟机与网络中的其他设备进行通信。
上面有一个名词桥接网络它是什么呢其实它就是虚拟机的一种网络模式。而示例1示例2采用的是端口转发其实是另一种网络模式网络地址转换(NAT)
在virtual box软件中可以看到这些网络模式。 桥接模式
桥接网络Bridged Network 是一种虚拟机网络配置使得虚拟机像物理网络中的另一台独立设备一样通过物理主机的网络接口直接连接到物理网络。
桥接网络的工作原理 在桥接网络模式下虚拟机和物理主机宿主机共享同一个物理网络适配器虚拟机与物理网络中的其他设备如其他计算机、打印机、路由器等在同一个网络中并且会像主机一样获取到一个独立的 IP 地址。
桥接网络的特点 独立的 IP 地址虚拟机将被分配到和主机在同一局域网中的 IP 地址。这个 IP 地址通常由 DHCP 服务器分配虚拟机在网络上就像一台物理设备。
虚拟机与物理设备通信虚拟机能够与物理网络上的其他设备进行通信就像它们是直接连接到物理网络一样。
与主机隔离虚拟机不会受到主机操作系统的网络配置影响虚拟机拥有完全独立的网络连接。 NAT模式。
NATNetwork Address Translation模式 是虚拟机VM网络配置的一种方式它允许虚拟机通过宿主机的网络连接访问外部网络如互联网而无需直接暴露虚拟机的 IP 地址。
NAT模式的工作原理 在 NAT 模式 下虚拟机通过宿主机物理主机的网络连接进行外部通信。虚拟机本身并不直接拥有公共 IP 地址而是通过宿主机共享网络连接。宿主机会充当一个“网关”把虚拟机的网络流量转换NAT为宿主机的 IP 地址然后将这些数据转发到外部网络。
特点 虚拟机与外部网络通信虚拟机可以访问外部网络如互联网但它对外界是不可见的外部网络无法直接访问虚拟机。虚拟机的网络流量会通过宿主机的 IP 地址进行转发。
虚拟机的私有 IP虚拟机通常会获得一个私有 IP 地址如 192.168.x.x 或 10.x.x.x并且该 IP 地址仅对虚拟机和宿主机可见。外部网络无法直接访问虚拟机的私有 IP 地址。
端口转发Port Forwarding如果你希望从外部网络访问虚拟机的服务例如 Web 服务可以通过设置端口转发来实现。通过端口转发外部网络可以通过宿主机的某个端口访问虚拟机的端口。 Host-Only仅主机模式。
仅主机网络模式创建一个虚拟网络仅允许虚拟机与宿主机进行通信而虚拟机与外部网络没有连接。虚拟机将获得一个由宿主机分配的 IP 地址可以通过宿主机访问虚拟机但不能直接访问互联网或其他网络。
使用场景适用于需要隔离虚拟机与外部网络但又需要虚拟机和宿主机之间通信的场景。例如在测试环境中需要虚拟机进行隔离但需要宿主机管理虚拟机。
其实就是虚拟机和宿主机组了一个内部局域网。
现在在理解上面配置是不是就很清晰明了了