系列文章目录
【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、Linux 概述
- 1.1、GNU 与自由软件
- 1.2、Linux是什么
- 1.3、Linux 特色
- 1.4、Linux的优缺点
- 1.4.1、Linux 优点
- 1.4.2、Linux 缺点
- 二、虚拟机介绍
- 2.1、虚拟机是什么
- 2.2、Hype-V
- 2.3、Vmware(付费软件)
- 2.4、VirtualBox(开源软件)
- 三、Vagrant
- 3.1、[Vagrant](https://www.vagrantup.com/) 是什么
- 3.2、Vagrant 使用指南
- 3.2.1、查看 vagrant 版本 命令
- 3.2.1、配置 Vagrant
- 3.2.1、添加镜像
- 3.2.2、查看box 列表
- 3.2.3、新建虚拟机
- 3.2.4、启动虚拟机
- 3.2.5、查看虚拟机状态
- 3.2.6、连接虚拟机
- 3.2.7、查看 ssh 配置
- 3.2.8、停止虚拟机
- 3.2.9、暂停虚拟机
- 3.2.10、恢复虚拟机
- 3.2.11、重载虚拟机配置
- 3.2.12、删除虚拟机
- 3.3、认识 Vagrantfile 文件
- 3.3.1、Vagrantfile 语法介绍
- 3.3.2、端口转发(Port forward)配置
- 3.3.3、配置私有网络
- 3.3.4、配置公共网络
- 3.3.5、配置同步文件夹
- 3.3.5.1、vboxsf 同步
- 3.3.5.2、nfs 同步
- 3.3.5.3、rsync 同步
- 3.3.6、更改虚拟机规格
- 3.3.7、Provision
- 3.4、使用 vagrant-snap 快速备份和恢复 Vagrant 虚拟机
- 3.4.1、vagrant-snap 介绍
- 3.4.2、创建快照
- 3.4.3、恢复快照
- 3.4.4、应用场景
- 3.5、虚拟迁移与备份
文章目录
- 系列文章目录
- @[TOC](文章目录)
- 前言
- 一、Linux 概述
- 1.1、GNU 与自由软件
- 1.2、Linux是什么
- 1.3、Linux 特色
- 1.4、Linux的优缺点
- 1.4.1、Linux 优点
- 1.4.2、Linux 缺点
- 二、虚拟机介绍
- 2.1、虚拟机是什么
- 2.2、Hype-V
- 2.3、Vmware(付费软件)
- 2.4、VirtualBox(开源软件)
- 三、Vagrant
- 3.1、[Vagrant](https://www.vagrantup.com/) 是什么
- 3.2、Vagrant 使用指南
- 3.2.1、查看 vagrant 版本 命令
- 3.2.1、配置 Vagrant
- 3.2.1、添加镜像
- 3.2.2、查看box 列表
- 3.2.3、新建虚拟机
- 3.2.4、启动虚拟机
- 3.2.5、查看虚拟机状态
- 3.2.6、连接虚拟机
- 3.2.7、查看 ssh 配置
- 3.2.8、停止虚拟机
- 3.2.9、暂停虚拟机
- 3.2.10、恢复虚拟机
- 3.2.11、重载虚拟机配置
- 3.2.12、删除虚拟机
- 3.3、认识 Vagrantfile 文件
- 3.3.1、Vagrantfile 语法介绍
- 3.3.2、端口转发(Port forward)配置
- 3.3.3、配置私有网络
- 3.3.4、配置公共网络
- 3.3.5、配置同步文件夹
- 3.3.5.1、vboxsf 同步
- 3.3.5.2、nfs 同步
- 3.3.5.3、rsync 同步
- 3.3.6、更改虚拟机规格
- 3.3.7、Provision
- 3.4、使用 vagrant-snap 快速备份和恢复 Vagrant 虚拟机
- 3.4.1、vagrant-snap 介绍
- 3.4.2、创建快照
- 3.4.3、恢复快照
- 3.4.4、应用场景
- 3.5、虚拟迁移与备份
前言
本系列文章,我们将讲述Linux操作系统和Linux集群架构、Shell脚本编程、Linux系统开发等相关知识点。我们需要注意《鸟哥的linux私房菜》中文版才到第三版用的CentOS5,繁体版使用的CentOS7。
参考资料
《鸟哥的Linux私房菜繁体版》
《鸟哥的Linux私房菜简体版》
一、Linux 概述
1.1、GNU 与自由软件
1984年 Richard Mathew Stalllman 发起 GNU 计划,我们目前使用的很多自由软件几乎直接或间接受益于该计划。该计划目的是建立一个自由、开放的 Unix 操作系统。
1985年,为了避免GNU所开发的自由软件被其他人所利用而成为专利软件, 所以他与律师草拟了有名的通用公共许可证(General Public License, GPL), 并且称呼他为copyleft。
GNU所开发的软件:
- Emacs
- gcc
- Glibc
- Bash shell
1984年,MIT与其他第三方首次发表了 X Window System,并且在1988年成立了非营利性质的 XFree86。
- 取得软件与原始码:你可以根据自己的需求来执行这个自由软件;
- 复制:你可以自由的复制该软件;
- 修改:你可以将取得的原始码进行程序修改工作,使之适合你的工作;
- 再发行:你可以将你修改过的程序,再度的自由发行,而不会与原先的撰写者冲突;
- 回馈:你应该将你修改过的程序代码回馈于社区!
1.2、Linux是什么
Linux 的内核是由 Linus Torvalds在1991年的时候给他开发出来的。Linux内核是一个用C语音编写的免费、可移植的内核,可以运行在各种计算机硬件设备上,包括个人电脑、服务器、嵌入式系统和移动设备。
Linux操作系统基于Unix的设计原则,具有多用户、多任务、多线程和分时操作的特点。它提供了一个强大的命令行界面,同时也有图形用户界面可供选择。
Linux操作系统具有高度的可定制性和灵活性,用户可以根据自己的需求进行个性化的设置和配置。它支持各种编程语言和开发工具,可以用于开发各种应用程序和服务。
Linux操作系统在服务器领域非常流行,被广泛用于云计算、大数据处理、网站托管等领域。它也是许多移动设备和嵌入式系统的基础,如Android智能手机操作系统就是基于Linux内核开发的。
1.3、Linux 特色
Linux 是开源的操作系统内核,其特点如下
- 自由与开放的使用与学习环境
- 配置需求低廉
- 核心功能强大而稳定
- 独立作业
1.4、Linux的优缺点
1.4.1、Linux 优点
- 稳定的操作系统
- 免费或少许费用
- 安全性、漏洞的快速修复
- 多任务、多用户系统
- 使用者与群组规划
- 相对比较不耗自由的系统
- 适合需要小核心程序的嵌入式系统
- 整合度佳且多样的图形用户接口(GUI)
1.4.2、Linux 缺点
- 没有稳定的支持厂商
- 游戏的支持度不足
- 专业软件的支持度不足
- 教育培训做的不好
二、虚拟机介绍
2.1、虚拟机是什么
虚拟机是一种软件模拟实际计算机硬件和操作系统的环境。它可以在物理计算机上创建多个独立的虚拟计算机,每个虚拟计算机都可以运行不同的操作系统和应用程序。虚拟机可以提供一种隔离与独立性的环境,使多个操作系统和应用程序可以在同一台物理计算机上同时运行,从而提高资源利用率和灵活性。虚拟机技术广泛应用于服务器虚拟化、云计算、软件开发和测试等领域。
2.2、Hype-V
Hype-V是一种由微软开发的虚拟化技术,它是Windows操作系统中的一项功能。Hype-V允许用户在一台主机上运行多个虚拟操作系统,每个虚拟操作系统都可以在自己的独立虚拟环境中运行,仿佛是在一台独立的计算机上运行一样。
Hype-V可以提供许多优势,包括更好的资源利用、隔离性和安全性。它在企业环境中被广泛使用,可以帮助管理多个服务器和应用程序,并简化IT管理工作。
Hype-V也可以在个人计算机上使用,例如开发人员可以使用虚拟机来测试和运行不同版本的操作系统,或者在不同的开发和测试环境中运行多个虚拟机。
总的来说,Hype-V是一种虚拟化技术,可以在一台主机上同时运行多个虚拟操作系统,提供更好的资源利用和管理。
2.3、Vmware(付费软件)
VMware 是一家虚拟化软件公司,成立于1998年,总部位于美国加利福尼亚州帕洛阿尔托。VMware 提供了一系列的虚拟化产品,包括虚拟机软件、云计算基础设施、云管理平台、安全产品等。其虚拟机软件能够在一台物理计算机上运行多个虚拟操作系统,实现资源的最优化利用和隔离保护。VMware 的产品广泛应用于企业的数据中心、云计算环境、网络安全和移动设备管理等领域。
2.4、VirtualBox(开源软件)
Vbox(VirtualBox)是一款由Oracle公司开发的开源虚拟化软件,它可以在计算机上创建和运行虚拟机。
虚拟机是一种软件模拟的计算机系统,它可以在物理计算机上运行,并模拟出一个完整的计算机环境。虚拟机可以运行不同的操作系统和应用程序,而不会与物理计算机的操作系统和应用程序发生冲突。
Vbox可以创建多个虚拟机,并在其中安装不同的操作系统,例如Windows、Linux等。用户可以在虚拟机中运行各种应用程序,进行开发、测试、演示等操作,而不会影响物理计算机的正常运行。
Vbox提供了一系列功能,如虚拟磁盘管理、网络设置、共享文件夹等,可以方便地配置和管理虚拟机。它还支持快照功能,可以保存虚拟机的状态,方便用户在需要时快速恢复到某个特定的状态。
总之,Vbox是一款功能强大的虚拟化软件,可以帮助用户在物理计算机上创建和管理虚拟机,实现多操作系统的同时运行和管理
三、Vagrant
3.1、Vagrant 是什么
Vagrant是一个开源工具,用于构建和管理虚拟化开发环境。它可以在不同的虚拟化平台(如VirtualBox、VMware、Hyper-V等)上自动创建和配置虚拟机,并提供统一的命令行界面来管理虚拟机的生命周期。通过使用Vagrant,开发人员可以轻松地搭建和共享开发环境,确保团队成员之间的一致性,并简化开发、测试和部署过程。Vagrant还支持使用配置文件来定义虚拟机的配置和软件安装,使得环境的复制和重建变得简单和易于维护。
3.2、Vagrant 使用指南
3.2.1、查看 vagrant 版本 命令
vagrant version
3.2.1、配置 Vagrant
Vagrant 创建虚拟机需要先倒入镜像文件,也就是 box,默认存储在用户主目录下的 .vagrant.d 目录下,对于 windows 系统而已 就是:C:\Users\用户名.vagrant.d。
后续可能会用到比较多镜像,或者你的 C 盘空间比较紧缺,可以通过设置环境变量 VAGRANT_HOME 来设置该目录。在 Windows 系统中,可以这样操作:新建系统环境变量,环境变量名为 VAGRANT_HOME,变量值为 D:\VirtualBox.vagrant.d
Vagrant 镜像站:https://app.vagrantup.com/boxes/search
3.2.1、添加镜像
vagrant box add ubuntu/bionic64
该命令会网上下载镜像,比较慢
3.2.2、查看box 列表
vagrant box list
3.2.3、新建虚拟机
vagrant init centos/7
vagrant init ubuntu/bionic64
创建 centos 或 ubuntu 虚拟机
该命令会在当前目录下,生成一个 Vagrantfile文件。
3.2.4、启动虚拟机
vagrant up
3.2.5、查看虚拟机状态
vagrant status
3.2.6、连接虚拟机
vagrant ssh
该虚拟机的默认用户名 root、vagrant 密码都是vagrant,默认是无密码免登录。
3.2.7、查看 ssh 配置
vagrant ssh-config
使用该命令可以查看 ssh 的配置信息,查看 private-key
3.2.8、停止虚拟机
vagrant halt
直接在 VirtualBox 上关闭虚机,或者直接在虚机内部执行 poweroff 命令也都是可以的。
3.2.9、暂停虚拟机
vagrant suspend
3.2.10、恢复虚拟机
vagrant resume
不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行。
3.2.11、重载虚拟机配置
vagrant reload
3.2.12、删除虚拟机
vagrant destroy
3.3、认识 Vagrantfile 文件
3.3.1、Vagrantfile 语法介绍
该配置文件使用的 Ruby 语法,因为 Vagrant 就是用 Ruby 编写的。
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/bionic64"
end
config.vm.box 对应的就是虚机的镜像,也就是 box 文件,这是唯一必填的配置项
3.3.2、端口转发(Port forward)配置
所谓的端口转发,就是把虚拟机的某个端口 映射到宿主机到端口这样,就可以在宿主机上访问虚拟机的服务
config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
3.3.3、配置私有网络
配置私有网络 就是 VirtualBox 的主机网络,也就是 HostOnly 网络。
config.vm.network "private_network", ip: "192.168.33.10"
如果这个网段的主机网络在 VirtualBox 中不存在,Vagrant 会在启动虚机时自动创建。所以,如果你想要利用已有的网络,请查看现有主机网络配置:
私有网络实际也可以直接使用 DHCP,但是并不推荐
config.vm.network "private_network", type: "dhcp"
3.3.4、配置公共网络
这里通常对应的就是桥接网络。实际开发场景下,我们极少会需要把虚机暴露到公共网络上,这样既不安全,也没有必要。
默认所起的第 1 个 NAT 网络已经保证了虚机可以上互联网,而私有网络保证了宿主机和虚机,以及虚机和虚机之间的通信。如果有对外暴露服务的需求,还可以使用端口转发。
config.vm.network "public_network"
3.3.5、配置同步文件夹
3.3.5.1、vboxsf 同步
config.vm.synced_folder "../data", "/vagrant_data"
vagrant 提供了多种同步方式,默认使用 vboxsf 挂载文件系统,需要安装如下插件。
vagrant plugin install vagrant-vbguest
3.3.5.2、nfs 同步
也可以使用 NFS 方式
vagrant 默认是使用VirtualBox的共享的方式实现两个系统之前文件的共享, 该共享方式访问速度比较慢, 所以, vagrant作为web开发环境时, 访问会比较慢。
vagrant官方的文档上建议优化该io性能问题的方法是使用nfs,安装 nfs 插件
vagrant plugin install vagrant-winnfsd
修改配置
config.vm.synced_folder "/vBox/Centos7/wwwroot", "/www/wwwroot", type: "nfs"
3.3.5.3、rsync 同步
config.vm.synced_folder "../data", "/vagrant_data", type: "rsync"
3.3.6、更改虚拟机规格
VirtualBox 等虚拟机软件在 Vagrant 中被称为 Provider,虚机的规格等配置是和 Provider 相关的。因为 VirtualBox 用的最多,所以默认的配置提示是以 VirtualBox 举例。
把中间那一段取消注释,其它的可以删掉:
config.vm.provider "virtualbox" do |vb|
# Display the VirtualBox GUI when booting the machine
vb.gui = true
# Customize the amount of memory on the VM:
vb.cpus = 2
vb.memory = "1024"
end
vb.gui = true 是在虚机启动时自动打开 VirtualBox 的图形界面,这对服务器来说没什么用,可以留也可以直接删掉。
添加 CPU 的配置,同时修改内存大小:这里将内存修改为2048MB,cpus数量是2
内存的大小单位是 MB,值是数字,默认的示例中有引号,实际也可以不加
3.3.7、Provision
Provision 是指在虚机初次创建的时候,Vagrant 自动去执行的构造任务,比如安装软件,更新系统配置等。
因为 box 往往只提供基础的系统(虽然我们可以自定义 box,但是并不是每次都要这么做,而且这样做会丧失一部分灵活性),有些东西仍然需要在创建虚机的时候完成。
什么情况下会触发 provision的操作
- 某个环境初次执行 vagrant up 的时候
- 执行 vagrant provision 命令
- 重启的时候 vagrant reload --provision,带上 --provision 选项 ::: 现在可以在这里添加GCC的安装的案例了
config.vm.provision "shell", inline: <<-SHELL
apt-get update
yes | apt install gcc
SHELL
3.4、使用 vagrant-snap 快速备份和恢复 Vagrant 虚拟机
3.4.1、vagrant-snap 介绍
vagrant-snap 是一个用于快速备份和恢复 Vagrant 虚拟机的工具。对于开发者而言,Vagrant 可以提供一个标准化的开发环境,但手动配置和维护这些环境可能会浪费大量时间。vagrant-snap 提供了一种简单的方式来创建、管理和恢复 Vagrant 虚拟机的快照,从而提高了开发效率。
功能特性
- 1、一键式快照创建与恢复:通过简单的命令,可以轻松创建虚拟机的快照,并在需要适恢复到特性状态;
- 2、存储优化:vagrant-snap 使用了增量备份方式,在多次创建快照后只保留差异部分,节省磁盘空间。
- 3、支持多种虚拟化技术:包括 VirtualBox 和 VMware Fusion,让你可以在不同的虚拟化环境中使用 vagrant-snap
vagrant plugin install vagrant-snap
3.4.2、创建快照
vagrant snap take <snapshot-name>
3.4.3、恢复快照
vagrant snap restore <snapshot-name>
3.4.4、应用场景
- 代码测试:在进行功能测试或集成测试时,可以先创建一个快照,然后在测试完成后恢复到初始状态。
- 团队协作:每个成员都可以基于同一个虚拟机快照开始工作,保证开发环境的一致性。
- 灾难恢复:当遇到意外问题导致虚拟机损坏时,可以通过恢复之前的快照迅速恢复工作状态。
3.5、虚拟迁移与备份
# 1、停止正在运行的 vagrant 虚拟机
vagrant halt
# 2、打包当前环境为一个box
vagrant package ---output my_backup.box
# 3、添加打包的box到Vagrant的box列表中:
agrant box add my_backup.box my_backup.box
# 4、初始化并使用备份的 box
vagrant init my-backup-box
vagrant up