python基础编程之1-1 构建虚拟开发环境

本文介绍了如何使用Vagrant和VirtualBox搭建虚拟开发环境,特别是针对Python开发。首先解释了为什么选择Vagrant,因为它能提供统一的开发环境并简化配置。然后详细阐述了VirtualBox的特点和安装过程,接着介绍了Vagrant的下载、安装和配置虚拟机的步骤,包括如何加载box镜像、初始化虚拟机、启动和登录到虚拟系统。最后提到了Vagrantfile的重要配置选项,如主机名、网络设置和同步目录。
摘要由CSDN通过智能技术生成

1-1 构建虚拟开发环境

Date: 2021-04-20

Author: SunnyChou

学前须知:
如果学习本节课之前,您对Python的运行环境很熟悉,已经能熟练使用linux操作系统下python开发和运行较为熟悉,则此节可跳过。本节适合于在windows环境下比较熟悉而对linux环境不了解的同学。
linux环境的安装和操作方法,后续会有小节说明

为啥不注册云服务器?

我没钱,我不想花钱,但是又想在本地搭建linux环境,学习ubuntu和centos,使用vagrant+VirtualBox搭建虚拟开发环境

VirtualBox

​ 一款功能强大的x86和AMD64 / Intel64 虚拟化产品,适用于企业以及家庭使用。VirtualBox不仅是一款功能非常丰富,性能卓越的企业用户产品。

​ vmware只有企业版才支持docker,virtualbox是完全支持docker

​ VirtualBox 是一个免费开源的虚拟机,相对 VMware 来说更加小巧

​ 我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。

1 支持操作系统

​ VirtualBox可在Windows,Linux,Macintosh和Solaris主机上运行,并支持大量客户操作系统,包括但不限于Windows(NT 4.0,2000,XP,Server 2003,Vista,Windows 7,Windows 8,Windows 10 ),DOS / Windows 3.x,Linux(2.4,2.6,3.x和4.x),Solaris和OpenSolaris,OS / 2和OpenBSD。

2 安装VirtualBox

下载网址:

​ http://download.virtualbox.org/virtualbox/5.1.24/

下载软件:

​ VirtualBox-5.1.24-117012-Win.exe

安装成功后,会在桌面产生virtualbox。

vagrant

​ Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源VirtualBox虚拟化系统,使用 Chef创建自动化虚拟环境。

​ Vagrant是一款用来构建虚拟开发环境的外挂工具,可以简化虚拟机配置和管理。它底层支持VirtualBox、VMware、AWS等,非常适合使用php/python/ruby/java语言开发的应用。

虽然 Vagrant 也支持 VMware,不过 VMware 是收费的,对应的 Vagrant 版本也是收费的

Vargant的优点

1 统一开发环境。一次配置打包,统一分发给团队成员,统一团队开发环境,解决诸如“编码问题”,“缺少模块”,“配置文件不同”带来的问题;

2 避免重复搭建开发环境。新员工加入,不用浪费时间搭建开发环境,快速加入开发,减少时间成本的浪费;

3 多个相互隔离开发环境。可以在不用box里跑不同的语言,或者编译安装同一语言不同版本,搭建多个相互隔离的开发环境,卸载清除时也很快捷轻松。

1. Vagrant下载地址:

​ https://releases.hashicorp.com/vagrant/1.9.7/

进入vagrantup官网 https://www.vagrantup.com/downloads.html,

下载vagrant_1.9.7_x86_64,安装

安装完成后,cmd进入后,输入vagrant,如果出现如下信息,表示安装成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TnlHu0d8-1665239127451)(F:\TX课堂\授课内容\第一部分-编程基础\课件\day01\doc\vagrant-success.png)]

​ 至此,vagrant安装成功!

2. 下载package.box

​ 去vagrant官网下载一个package.box 文件, box文件就是一个系统的镜像文件。

​ 参考网站:

http://www.vagrantbox.es/

​ 有不同的虚拟化环境box,包含centos,debian,ubuntu等,下载到本地。

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fGX3stnL-1665239127451)(F:\TX课堂\授课内容\第一部分-编程基础\课件\day01\doc\vagrant-box.png)]

此时,可以选择自己想要安装的操作系统

我下载的是 vagrant-centos-7.box,见附件

centos box镜像版本:

​ vagrant-centos-7.box

ubuntu box版本:

​ xenial-server-cloudimg-amd64-vagrant.box

3. 把box加载到vagrant中

box文件就是vagrant的镜像文件

https://github.com/CommanderK5/packer-centos-template/releases

下载好之后,在该目录下执行命令加载镜像文件到Vagrant中去

查看vagrant box 使用手册 (vagrant box help)

cmd -》 cd $PATH/virtualbox-vagrant

> vagrant box add centos7 vagrant-centos-7.box

centos7是给虚拟机起的名字 ,随意写。然后可以通过以下命令查看,当前vagrant下有那些可用

> vagrant box list
centos7 (virtualbox, 0)

ubuntu对应的box地址如下:

https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-vagrant.box

说明:

$ vagrant box remove centos7 # 从box列表移除

4. 初始化虚拟机

​ 在你想要创建虚拟机的目录下,执行以下命令进行初始化

> vagrant  init   centos7

会生成一个Vagrantfile文件,该文件就是Vagrant的配置文件。

具体关于vagrantfile的详解见章节后面介绍。

5. 启动虚拟机

在该目录下输入:

vagrant up

等待启动,如果没有错误并且启动完成后,可以在virtualbox中看到虚拟机

说明:

​ 可能会出现错误信息,提示没有开启vt虚拟化支持

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bAsfuw2U-1665239127452)(F:\TX课堂\授课内容\第一部分-编程基础\课件\day01\doc\硬件加速不可用.png)]

需要进入系统BIOS设置开启下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sl8hDyit-1665239127452)(F:\TX课堂\授课内容\第一部分-编程基础\课件\day01\doc\bios-vt.jpg)]

设置好了后,保存进入系统,再次执行如下命令

>vagrant up

等待启动虚拟机。进入步骤6

说明:关闭虚拟机,采用 vagrant halt

6. 登录到centos7系统

登录到centos7系统中

>vagrant ssh

会免密进入到centos操作系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xgB4myAE-1665239127453)(C:\Users\lenovo\Desktop\vagrant_ssh_success.png)]

进入到centos7的vagrant用户下,进行操作了!

至此,采用virtualbox结合vagrant构建虚拟开发环境已经部署完成!

(可以采用yum进行包安装和python环境安装配置)

vagrantfile知识扩展

​ Vagrantfile文件,里面包含有大量的配置信息,通过它可以定义虚拟机的各种配置,如网络、内存、主机名等,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置

配置详解

下面是一些常用的配置:

config.vm.hostname:配置虚拟机主机名
config.vm.network:这是配置虚拟机网络,由于比较复杂,我们其后单独讨论
config.vm.synced_folder:除了默认的目录绑定外,还可以手动指定绑定
config.ssh.username:默认的用户是vagrant,从官方下载的box往往使用的是这个用户名。如果是自定制的box,所使用的用户名可能会有所不同,通过这个配置设定所用的用户名。
config.vm.provision:我们可以通过这个配置在虚拟机第一次启动的时候进行一些安装配置

​ 需要注意的是,Vagrantfile文件只会在第一次执行vagrant up时调用执行,其后如果不明确使用vagrant reload进行重新加载,否则不会被强制重新加载。

  1. box设置
config.vm.box = "centos7"

​ 该名称是再使用 vagrant init 中后面跟的名字。

2. hostname 设置

config.vm.hostname = "node1"

​ 设置hostname非常重要,因为当我们有很多台虚拟服务器的时候,都是依靠hostname來做识别的。比如,我安装了centos1,centos2 两台虚拟机,再启动时,我可以通过vagrant up centos1来指定只启动哪一台。

3. 虚拟机网络设置

config.vm.network "private_network", ip: "192.168.10.11"   // Host - only模式

config.vm.network "public_network", ip: "10.1.2.61"       // Bridge模式

Vagrant的网络连接方式有三种:

NAT : 缺省创建,用于让vm可以通过host转发访问局域网甚至互联网。

host-only : 只有主机可以访问vm,其他机器无法访问它。

bridge : 此模式下vm就像局域网中的一台独立的机器,可以被其他机器访问。

config.vm.network "public_network", ip: "192.168.0.17"
#创建一个bridge桥接网络,指定IP
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
#创建一个bridge桥接网络,指定桥接适配器
config.vm.network "public_network"
#创建一个bridge桥接网络,不指定桥接适配器

4. 同步目录设置

config.vm.synced_folder "D:/xxx/code", "/home/www/" 

​ 第一个参数是宿主机的目录,第二个参数是虚拟机挂载的目录。

​ 前面的路径(D:/xxx/code)是本机代码的地址,后面的地址就是虚拟机的目录。虚拟机的/vagrant目录默认挂载宿主机的开发目录(可以在进入虚拟机机后,使用df -h 查看),这是在虚拟机启动时自动挂载的。

5. 端口转发设置

config.vm.network :forwarded_port, guest: 80, host: 8080

​ 上面的配置把宿主机上的8080端口映射到客户虚拟机的80端口,例如你在虚拟机上使用nginx跑了一个Go应用,那么你在host上的浏览器中打开http://localhost:8080时,Vagrant就会把这个请求转发到虚拟机里跑在80端口的nginx服务上。不建议使用该方法,因为涉及端口占用问题,常常导致应用之间不能正常通信,建议使用Host-only和Bridge方式进行设置

6. provision任务

​ 你可以编写一些命令,让vagrant在启动虚拟机的时候自动执行,这样你就可以省去手动配置环境的时间了。

​ 脚本何时会被执行 ?

​ 第一次执行vagrant up命令

​ 执行vagrant provision命令

​ provision任务是预先设置的一些操作指令,格式:


config.vm.provision 命令字 json格式参数

config.vm.provion 命令字 do |s|
    s.参数名 = 参数值
end

修改完Vagrantfile的配置后,记得要重启虚拟机,才能使用虚拟机更新后的配置。reload

vagrant reload

帮助命令

vagrant help

查看vagrant版本信息

vagrant -v

Vagrant命令详解


命令	作用
vagrant box add	添加box的操作
vagrant init	初始化box的操作,会生成vagrant的配置文件Vagrantfile
vagrant up	启动本地环境
vagrant ssh	通过 ssh 登录本地环境所在虚拟机
vagrant halt	关闭本地环境
vagrant suspend	暂停本地环境
vagrant resume	恢复本地环境
vagrant reload	修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
vagrant destroy	彻底移除本地环境
vagrant box list	显示当前已经添加的box列表
vagrant box remove	删除相应的box
vagrant package	打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin	用于安装卸载插件
vagrant status	获取当前虚拟机的状态

t的配置文件Vagrantfile
vagrant up 启动本地环境
vagrant ssh 通过 ssh 登录本地环境所在虚拟机
vagrant halt 关闭本地环境
vagrant suspend 暂停本地环境
vagrant resume 恢复本地环境
vagrant reload 修改了 Vagrantfile 后,使之生效(相当于先 halt,再 up)
vagrant destroy 彻底移除本地环境
vagrant box list 显示当前已经添加的box列表
vagrant box remove 删除相应的box
vagrant package 打包命令,可以把当前的运行的虚拟机环境进行打包
vagrant plugin 用于安装卸载插件
vagrant status 获取当前虚拟机的状态














评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunnychou课堂

您的鼓励是我最大的前进动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值