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

系列文章目录

【跟小嘉学 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、虚拟迁移与备份

前言

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/506089.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法 顺序栈的基本运算

一、实验内容 编写一个程序sqstack.cpp&#xff0c;实现顺序栈的各种基本运算&#xff0c;并在此基础上写一个程序exp6.cpp,实现以下功能 初始化栈s判断栈是否为空依次进栈元素a,b,c,d,e判断栈是否为空输出出栈序列判断栈是否为空释放栈 二、实验步骤 1、sqstack.cpp 2、ex…

6.5物联网RK3399项目开发实录-驱动开发之LCD显示屏使用(wulianjishu666)

90款行业常用传感器单片机程序及资料【stm32,stc89c52,arduino适用】 链接&#xff1a;https://pan.baidu.com/s/1M3u8lcznKuXfN8NRoLYtTA?pwdc53f LCD使用 简介 AIO-3399J开发板外置了两个LCD屏接口&#xff0c;一个是EDP&#xff0c;一个是LVDS&#xff0c;接口对应板…

go: go.mod file not found in current directory or any parent directory.如何解决?

这个错误表明你正在执行 go get 命令&#xff0c;但是当前目录或任何父目录中都找不到 go.mod 文件。这可能是因为你的项目还没有使用 Go Modules 进行管理。 要解决这个问题&#xff0c;有几种方法&#xff1a; go mod init <module-name> 其中 <module-name>…

CentOS系统下Docker的安装教程

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

oracle+110个常用函数

ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr…

C语言-malloc(申请函数)free(释放函数)

malloc和free的语法格式 malloc 函数是 C 语言标准库中的一个重要函数&#xff0c;用于动态分配内存。其语法如下&#xff1a; void *malloc(size_t size);这里的 void * 表示返回的是一个 void 类型的指针&#xff0c;实际上这个指针指向的是一个 char 类型的内存块。size_t …

R语言决策树(1)

数据集heart_learning.csv与heart_test.csv是关于心脏病的数据集&#xff0c;heart_learning.csv是训练数据集&#xff0c;heart_test.csv是测试数据集。要求&#xff1a;target和target2为因变量&#xff0c;其他诸变量为自变量。用决策树模型对target和target2做预测&#xf…

机器学习—— PU-Learning算法

机器学习—— PU-Learning算法 本篇博客将介绍PU-Learning算法的基本概念、基本流程、基本方法&#xff0c;并简单探讨Two-step PU Learning算法和无偏PU Learning算法的具体流程。最后&#xff0c;将通过Python代码实现一个简单的PU-Learning示例&#xff0c;以便更好地理解这…

事务传播行为Propagation

目录 背景Propagation测试程序1测试程序2分析 背景 前段时间&#xff0c;某个项目在部署时&#xff0c;被公司的一个检测拦截了&#xff0c;提示报错如下&#xff1a; Your code exists Method or Class with Transactional annotation that not use Propagation.REQUIRED.有…

npm镜像源证书过期问题解决

title: npm镜像源证书过期 search: 2024-02-29 文章目录 Failed to check for updates 问题ERR_PNPM_NO_PKG_MANIFESTnpm缓存清除指令权限不足导致删除不了解决方案npm创建基础配资文件 Failed to check for updates 问题 错误描述如上 检查完 node,vue,npm 的版本后都没啥问…

使用hping3网络工具构造TCP/IP数据包和进行DDos攻击

1 概述 hping3是一个强大的命令行工具&#xff0c;用于生成、发送和解析TCP/IP协议的数据包。它是开源的网络安全工具&#xff0c;由Salvatore Sanfilippo开发&#xff0c;主要应用于网络审计、安全测试和故障排查等领域。hping3不仅可以作为普通的网络连通性检测工具&#xf…

壁纸小程序Vue3(首页布局)

1.创建一个公共目录common来存放css和images App.vue中引用 <style lang"scss"> /*每个页面公共css */ import common/style/common-style.scss; </style> 2.渲染轮播图 <template><view class"homeLayout"><vi…

苍穹外卖04 (新增内表的外键id获取,多表分页查询,多表批量删除,修改先查在改内表外键id用主表的,起售时包含了“停售”状态的外关联表)

1. 新增套餐 1 需求分析和设计 业务规则&#xff1a; 套餐名称唯一 套餐必须属于某个分类 套餐必须包含菜品 名称、分类、价格、图片为必填项 添加菜品窗口需要根据分类类型来展示菜品 新增的套餐默认为停售状态 2 代码实现 1 根据分类id查询菜品 DishControllerGetMa…

手机有线投屏到直播姬pc端教程

1 打开哔哩哔哩直播姬客户端并登录(按下图进行操作) 2 手机用usb数据线连接电脑(若跳出安装驱动的弹窗点击确定或允许),usb的连接方式为仅充电(手机差异要求为仅充电),不同品牌手机要求可能不一样,根据实际的来 3 在投屏过程中不要更改usb的连接方式(不然电脑会死机需要重启) …

SAP 学习笔记 - 系统移行业务 - Migration cockpit工具 - 移行Material(品目)

本章开始&#xff0c;来研究研究移行工具 Migration cockpit。 理论啥的先放一边&#xff0c;来先做一个简单的实例&#xff0c;以对 Migration cockpit 有个大概的印象。 这里就先做一个移行品目的例子。 1&#xff0c;LTMC 启动Migration cockpit工具 默认给我启动了 IE &a…

C++11入门手册第二节,学完直接上手Qt(共两节)

C++多线程 #include <thread>:C++多线程库 #include <mutex>:C++互斥量库 #include <future>:C++异步库 多线程介绍 线程的创建 void entry_1() { }以普通函数作为线程入口函数:void entry_2(int val) { }​std::thread my_thread_1(entry_1);std::thr…

【b站李炎恢】Vue.js Element UI 下 | 十天技能课堂 | 更新中... | 李炎恢

课程地址&#xff1a;【Vue.js Element UI | 十天技能课堂 | 更新中... | 李炎恢】 https://www.bilibili.com/video/BV1U54y127GB/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 备注&#xff1a;虽然标题声明还在更新中&#xff0c;但是看一些常用…

npm软件包管理器

npm软件包管理器 一.npm 使用步骤二.npm安装所有依赖三.npm全局软件包-nodemon pm 简介链接&#xff1a; 软件包管理器&#xff0c;用于下载和管理 Node.js 环境中的软件包 一.npm 使用步骤 1.初始化清单文件&#xff1a; npm init -y &#xff08;得到 package.json 文件&am…

Django DRF视图

文章目录 一、DRF类视图介绍APIViewGenericAPIView类ViewSet类ModelViewSet类重写方法 二、Request与ResponseRequestResponse 参考 一、DRF类视图介绍 在DRF框架中提供了众多的通用视图基类与扩展类&#xff0c;以简化视图的编写。 • View&#xff1a;Django默认的视图基类&…

RocketMQ(版本4.9.4)+RocketMQ_Dashbord环境搭建(生产者、消费者的前置环境搭建)

一、官方网站下载 RocketMQ源码包 https://rocketmq.apache.org/zh/docs/4.x/introduction/02quickstart 二、把rocketMQ上传到Linux环境下解压&#xff0c;编译&#xff0c;执行以下命令&#xff08;需要提前装jdk和maven并配置好环境变量&#xff09; unzip rocketmq-all-4…