【跟小嘉学 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 machinevb.gui = true# Customize the amount of memory on the VM:vb.cpus = 2vb.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: <<-SHELLapt-get updateyes | 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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SRS OBS利用RTMP协议实现音视频推拉流;WebRTC 屏幕直播分享工具

一、SRS OBS利用RTMP协议实现音视频推拉流 参考&#xff1a;https://ossrs.net/lts/zh-cn/docs/v5/doc/getting-started 1&#xff09;docker直接运行SRS服务&#xff1a; docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 registry.cn-hangzhou.aliyuncs.co…

【字节二面】SpringBoot可以同时处理多少请求

目录 一、示例代码二、那么springboot可以处理多少请求&#xff1f;三、maxConnections、maxThreads、acceptCount的关系 一、示例代码 RestController Slf4j public class RequestController {GetMapping("/test")public String test(HttpServletRequest request) …

科技团队治理能力成长路线图

点击&#x1f446;蓝字 关注我们 本文观点&#xff5c;吴穹 主笔&#xff5c;AI小助手 温馨提示&#xff1a;干货长文&#xff0c;建议收藏阅读喔&#xff5e; 引言 2024年3月20日&#xff0c;吴穹博士于上海交通大学上海高级金融学院同一众信托行业金融科技管理者进行了《金融…

【JVM】关于JVM垃圾回收

文章目录 &#x1f334;死亡对象的判断算法&#x1f338;引用计数算法&#x1f338;可达性分析算法 &#x1f333;垃圾回收算法&#x1f338;标记-清除算法&#x1f338;复制算法&#x1f338;标记-整理算法&#x1f338;分代算法&#x1f338;哪些对象会进入新生代&#xff1f…

算法学习——LeetCode力扣动态规划篇8

算法学习——LeetCode力扣动态规划篇8 300. 最长递增子序列 300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删…

nuxt学习

一、遇到的问题 1、nuxt初始化失败问题解决方案 使用npm和pnpm初始化都失败 原因&#xff1a;主机连不上DNS服务器 解决方案 Step1: 打开文件夹 Windows:路径&#xff1a;C:\Windows\System32\drivers\etc Mac: 路径&#xff1a;/etc/hosts Step2: 使用记事本方式打开 …

游戏领域AI智能视频剪辑解决方案

游戏行业作为文化创意产业的重要组成部分&#xff0c;其发展和创新速度令人瞩目。然而&#xff0c;随着游戏内容的日益丰富和直播文化的兴起&#xff0c;传统的视频剪辑方式已难以满足玩家和观众日益增长的需求。美摄科技&#xff0c;凭借其在AI智能视频剪辑领域的深厚积累和创…

【JavaSE】内部类

目录 前言 内部类 内部类的种类 1. 实例内部类 2 静态内部类 3 匿名内部类 4 局部内部类 结语 前言 内部类是我们前面学习遗留下来的知识点&#xff0c;在学完接口后才能更好的理解它&#xff0c;因此等到现在才讲 内部类 在Java中&#xff0c;我们可以将A类定义在B…

人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景,模型结构介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景&#xff0c;模型结构介绍。特征金字塔网络&#xff08;FPN&#xff09;是一种深度学习模型结构&#xff0c;主要应用于目标检测任务中&am…

什么是 SSL 证书?

SSL 证书的介绍 SSL&#xff08;Secure Sockets Layer&#xff09;证书是一种由数字证书颁发机构&#xff08;CA&#xff09;签发的加密证书&#xff0c;用于在 Web 浏览器和服务器之间建立安全连接。SSL 证书能够确保网站和应用程序的数据传输过程中不被窃听、篡改或伪造&…

从0配置React

在本地安装和配置React项目&#xff0c;您可以使用create-react-app这个官方推荐的脚手架工具。以下是安装React的步骤&#xff0c;包括安装Node.js、使用create-react-app创建React应用&#xff0c;以及启动开发服务器。 下载安装node.js运行以下命令&#xff0c;验证Node.js…

系列学习前端之第 7 章:一文掌握 AJAX

1、AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff08;中文名&#xff1a;阿贾克斯&#xff09;&#xff0c;就是异步的 JS 和 XML。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一起使用的新方式。AJAX 可以在浏览器中向服务器发送异步请求…

Wasm初上手

总之也是为了扩宽技术面吧。。。我也不知道为什么就想试试了&#xff0c;就酱。 参考阅读&#xff1a;极客时间《WebAssembly入门课》 安装wasm的编译器Emscripten。Emscripten 是一个“源到源”语言编译器工具集&#xff0c;这个工具集可以将 C/C 代码编译成对应 JavaScript 代…

AI学习-Pandas数据处理分析

文章目录 1. Pandas概述2. Series用法2.1 Series的创建2.2 Series的取值2.3 Series的相关方法 3. DataFrame用法3.1 DataFrame创建3.2 DataFrame取值3.3 DataFrame相关方法 1. Pandas概述 ​ Pandas 是一个开源的数据分析处理库&#xff0c;它应用在数据科学、统计分析、机器学…

手机短信验证码自动转发到服务器

今天写一个自动化处理程序&#xff0c;需要验证码登录&#xff0c;怎么样把手机收到的短信自动转发到服务器接口呢&#xff1f; 利用ios手机快捷指令的功能 打开快捷指令点击中间自动化点击右上角号选择信息信息包含选取&#xff0c;输入验证码选择立即执行点击下一步按下图配…

程序汪接的4万智慧餐饮项目

本文章来自程序汪背后的私活小团队&#xff0c;开发智慧餐厅的小程序 由于程序汪太忙于是把这个项目让一个靠谱粉丝开发了&#xff0c;当然开发质量和进度我会跟踪&#xff0c;具体分析如下 B站【我是程序汪】 老程序员接了一个4万的智慧餐饮项目&#xff0c;开发周期60天 小程…

Docker中常见的命令行

1 docker的全部命令 docker attach #连接到正在运行中的容器 docker build #使用 Dockerfile 创建镜像 docker builder #管理builds docker builder prune #清除build缓存 docker checkpoint #管理checkpoints docker checkpoint create #从正在运行的容器创建检…

LATTICE进阶篇DDR2--(2)详解IPUG35---基于官方例程

前言 本章主要讲述根据《DDR & DDR2 SDRAM Controller IP Cores User’s Guide 》数据手册&#xff0c;配合ddr2的demo仿真&#xff0c;学习DDR2的IP核时序控制。 器件&#xff1a;Lattice ECP3 环境&#xff1a;Win10 Diamond3.13 ModelSim SE-64 10.5 一、下载DDR2…

【链表专题】(2. 两数相加 23. 合并 K 个升序链表 25. K 个一组翻转链表)

文章目录 2. 两数相加23. 合并 K 个升序链表25. K 个一组翻转链表 2. 两数相加 题目链接: leetcode2. 两数相加 class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode cur1 l1,cur2 l2;ListNode newHead new ListNode(0);ListNode prev ne…

STM32的简介

内存 一般MCU包含的存储空间有FLASH和RAM,&#xff08;RAM和flash又有片上和片外的区别&#xff0c;片上表示mcu自带的&#xff0c;已经封装在MCU内部的&#xff0c;片外表示外挂的&#xff0c;当项目中需要做一些复杂的应用&#xff0c;会存在资源不足的情况&#xff0c;这时…