当前位置:   article > 正文

【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统概述

【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统概述

系列文章目录

【跟小嘉学 Linux 系统架构与开发】一、学习环境的准备与Linux系统介绍

前言

本系列文章,我们将讲述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
  • 1

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
  • 1

该命令会网上下载镜像,比较慢

3.2.2、查看box 列表

vagrant box list
  • 1

3.2.3、新建虚拟机

vagrant init centos/7
vagrant init ubuntu/bionic64
  • 1
  • 2

创建 centos 或 ubuntu 虚拟机

该命令会在当前目录下,生成一个 Vagrantfile文件。

3.2.4、启动虚拟机

vagrant up
  • 1

3.2.5、查看虚拟机状态

vagrant status
  • 1

状态

3.2.6、连接虚拟机

vagrant ssh
  • 1

该虚拟机的默认用户名 root、vagrant 密码都是vagrant,默认是无密码免登录。

3.2.7、查看 ssh 配置

vagrant ssh-config
  • 1

使用该命令可以查看 ssh 的配置信息,查看 private-key

3.2.8、停止虚拟机

vagrant halt
  • 1

直接在 VirtualBox 上关闭虚机,或者直接在虚机内部执行 poweroff 命令也都是可以的。

3.2.9、暂停虚拟机

vagrant suspend
  • 1

3.2.10、恢复虚拟机

vagrant resume
  • 1

不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行。

3.2.11、重载虚拟机配置

vagrant reload
  • 1

3.2.12、删除虚拟机

vagrant destroy
  • 1

3.3、认识 Vagrantfile 文件

3.3.1、Vagrantfile 语法介绍

该配置文件使用的 Ruby 语法,因为 Vagrant 就是用 Ruby 编写的。

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"
end
  • 1
  • 2
  • 3

config.vm.box 对应的就是虚机的镜像,也就是 box 文件,这是唯一必填的配置项

3.3.2、端口转发(Port forward)配置

所谓的端口转发,就是把虚拟机的某个端口 映射到宿主机到端口这样,就可以在宿主机上访问虚拟机的服务

config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

  • 1
  • 2

3.3.3、配置私有网络

配置私有网络 就是 VirtualBox 的主机网络,也就是 HostOnly 网络。

config.vm.network "private_network", ip: "192.168.33.10"
  • 1

如果这个网段的主机网络在 VirtualBox 中不存在,Vagrant 会在启动虚机时自动创建。所以,如果你想要利用已有的网络,请查看现有主机网络配置:

私有网络实际也可以直接使用 DHCP,但是并不推荐

config.vm.network "private_network", type: "dhcp"
  • 1

3.3.4、配置公共网络

这里通常对应的就是桥接网络。实际开发场景下,我们极少会需要把虚机暴露到公共网络上,这样既不安全,也没有必要。

默认所起的第 1 个 NAT 网络已经保证了虚机可以上互联网,而私有网络保证了宿主机和虚机,以及虚机和虚机之间的通信。如果有对外暴露服务的需求,还可以使用端口转发。

config.vm.network "public_network"
  • 1

3.3.5、配置同步文件夹

3.3.5.1、vboxsf 同步
config.vm.synced_folder "../data", "/vagrant_data"
  • 1

vagrant 提供了多种同步方式,默认使用 vboxsf 挂载文件系统,需要安装如下插件。

vagrant plugin install vagrant-vbguest
  • 1
3.3.5.2、nfs 同步

也可以使用 NFS 方式

vagrant 默认是使用VirtualBox的共享的方式实现两个系统之前文件的共享, 该共享方式访问速度比较慢, 所以, vagrant作为web开发环境时, 访问会比较慢。

vagrant官方的文档上建议优化该io性能问题的方法是使用nfs,安装 nfs 插件

vagrant plugin install vagrant-winnfsd
  • 1

修改配置

config.vm.synced_folder "/vBox/Centos7/wwwroot", "/www/wwwroot", type: "nfs"
  • 1
3.3.5.3、rsync 同步
config.vm.synced_folder "../data", "/vagrant_data", type: "rsync"
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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
  • 1
  • 2
  • 3
  • 4

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
  • 1

3.4.2、创建快照

vagrant snap take <snapshot-name>
  • 1

3.4.3、恢复快照

vagrant snap restore <snapshot-name>
  • 1

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/363094
推荐阅读
相关标签
  

闽ICP备14008679号