虚拟机安装与使用

1.Linux简介

Linux是一种自由和开放源代码的操作系统。它最初由芬兰的计算机科学家Linus Torvalds于1991年创造,并且在全球范围内得到了广泛的采用和发展。

Linux操作系统是基于Unix操作系统的设计原理和功能。它具有稳定性、安全性和高度可定制的特性,适用于各种不同的设备和平台,如个人计算机、服务器、嵌入式系统和移动设备。

Linux在开源社区中得到了广泛的支持和贡献。使用者可以免费获取Linux操作系统的源代码,并根据自己的需要进行定制和修改。这也使得Linux成为一个高度灵活和可扩展的操作系统。

Linux操作系统拥有许多不同的发行版,如Ubuntu、Debian、Fedora、CentOS等。每个发行版在核心Linux系统之上添加了自己的软件包和配置,以满足特定用户的需求。

由于其稳定性和安全性,Linux在服务器领域得到了广泛应用。许多大型互联网公司和企业都使用Linux作为他们的服务器操作系统。此外,Linux还广泛用于科学研究、教育和个人计算机领域。

总的来说,Linux是一个强大、自由和开放的操作系统,它具有广阔的应用领域和强大的社区支持,成为计算机科学领域中重要的一部分。

1.1应用场景分析

  1. 桌面应用
    linux在桌面场景下应用不多,这个场景下一般还是使用windows
  2. 服务端(后端)
    电商,门户网站后端服务,一般采用linux作为操作系统,java,c++,python,go,运行和部署在linux服务
  3. 嵌入式
    linux最小和最核心的版本只有几百K,智能物联设备方便嵌入式开发
  4. 云计算
    运维和部署场景,使用linux

2.vagrant 和 VirtualBox

2.1vagrant

Vagrant是一个比较流行的虚拟机管理软件,使用Vagrant 可以让我们用命令直接从云上下载虚拟机的镜像,然后进行创建和管理等,vagrant集成了主流的虚拟机管理工具vmvare 和 virtualbox,默认使用virtualbox
vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile 功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。vagrant 还支持把当前系统做成一个.box 后缀命名的镜像,类似 docker 的 image,可轻松实现环境的移植。
vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用。
在容器流行之前,Vagrant 就是用来编排虚机和自动部署开发环境的,有了 Docker/Kubernetes 之后,直接用容器来编排应用确实更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。

2.2virtualbox

VirtualBox 是一款开源的虚拟机软件,和VMWare是同类型的软件,用于在当前的电脑上构建一台虚拟机,在这台虚拟机上可以安装系统和软件。

2.3 为什么使用vagrant

1.面临的一个大问题是,环境不同意,最常见的就是:在我机器上没问题,怎么在你这就不能跑了。可能配置不一样,或者缺少某个依赖。多人合作或者跨平台开发很可能遇到这些问题。
2.那么有没有办法统一开发环境呢?vagrant就是做这个的,配置好了开发环境,打包到一个.box 文件(或者直接使用别人打包好到.box文件),这就是一个虚拟机,下次换环境的时候,直接使用这个虚拟机开发就可以了。这就是vagrant的方便之处。所以vagrant 依赖于virtualbox 或者 vmware等虚拟机软件。
3.用vagrant管理的时候,还可以把对应的配置share给测试,这样别人帮你做测试的时候就能省掉很多环境搭建的工作,而且不用担心测试环境跟你开发环境有差别。

virtualBox(本身也可以创建虚拟机,只是相对麻烦)会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。

2.4 vagrant实战

1.安装VirtualBox
2.安装vagrant
3.下载box
4.将下载的box加入到vagrant中
5.创建一个目录,初始化,配置vagrantfile文件和bootstrap.sh
6.开始安装虚拟机

2.4.1 VirtualBox 安装

VirtualBox 下载地址https://www.virtualbox.org/wiki/Downloads

  1. 安装目录
    推荐安装到d:\java…
  2. 配置 虚拟机安装位置
    在这里插入图片描述

2.4.2vagrant安装

https://www.vagrantup.com/downloads下载最新版Vagrant,注意Vagrant没有图形界面,所以安装后也没有桌面快捷方式。

  1. 安装
    推荐安装目录d:\java…
  2. 配置

vagrant的box默认下载用户的宿主目录\vagrant_box
在这里插入图片描述

2.4.3 安装centos7虚拟机

2.4.3.1 下载box

可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。
下载box 名为 centos_v1.box

2.4.3.2 vagrantfile

vagrant 的精髓在一个 Vagrantfile 里面,和 docker 的 Dockerfile
功能上一样。我们只需要把需要安装部署的步骤写在 Vagrantfile 里面,便可以实现轻松部署。

1.随便创建一个文件 f:\java\virtual\s13
在目录中执行

vagrant init centos

产生配置文件vagrantfile
2.修改配置文件vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  (1..3).each do |i|
    config.vm.define vm_name = "s#{i}"  do |config|
        config.vm.provider "virtualbox" do |v|
            v.customize ["modifyvm", :id, "--name", vm_name]
	    v.customize ["modifyvm", :id, "--memory", "8192"]
            v.customize ["modifyvm", :id, "--cpus", "2"]
        end
        config.vm.box = "centos_v1"
        config.vm.hostname =vm_name
        config.ssh.username = "root"
        config.ssh.password = "vagrant"
							#		config.ssh.shell = "powershell"
							#config.ssh.shell = "bash -l"
        config.vm.network :private_network, ip: "192.168.56.7#{i}"
	config.vm.provision :shell, :path => "bootstrap.sh"
    end
  end
end

解释
在这里插入图片描述

3.配置bootstrap.sh文件 域名解析

#!/usr/bin/env bash

# The output of all these installation steps is noisy. With this utility
# the progress report is nice and concise.

echo "Update /etc/hosts"
cat > /etc/hosts <<EOF
127.0.0.1       localhost

192.168.56.71 s1
192.168.56.72 s2
192.168.56.73 s2
EOF

echo "Disable iptables"
setenforce 0 >/dev/null 2>&1 && iptables -F

### Set env ###
echo "export LC_ALL=en_US.UTF-8"  >>  /etc/profile
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

解释
在这里插入图片描述

2.4.3.3 box准备

1.查看本地box

vagrant box list

2.添加 box

vagrant box add centos_v1 ./centos_v1.box

前面是添加后的名字,后面是下载的box名字
3.添加完之后查看本地box

F:\java\virtual\s13>vagrant box list
centos-travel (virtualbox, 0)
centos_v1     (virtualbox, 0)

4.删除box

F:\java\virtual\s13>vagrant box remove centos-travel
Removing box 'centos-travel' (v0) with provider 'virtualbox'..
2.4.3.4

1.安装虚拟机

#必须在vagrantfile所在的目录安装
vagrant up
2.4.3.5安装可视化软件

安装一个可视化软件 MobaXterm1_CHS1.exe 进行连接
在这里插入图片描述
连接成功后
在这里插入图片描述

2.4.4 常用命令

启动

#启动Vagrantfile(s1,s2,s3)配置所有虚拟
vagrant up

#启动具体一个虚拟机
vagrant up s1

关闭

vagrant halt #关闭所有

vagrant halt s1

删除

vagrant destroy # 删除所有的虚拟机
vagrant destroy s1 #删除s1

2.4.5 自定义box的打包和使用

把已安装的虚拟机打包成一个自定义的box,分享管理我们的虚拟机

1.打包虚拟机,产生一个自定制的box

#关闭虚拟机
vagrant halt s1
#打包名为s1的虚拟机,后面为打包后的box名字
vagrant package --base s1 --output centos_v2.box

2.把centos_v2添加到vagrant中

#列表
F:\java\virtual\s13>vagrant box list
centos_v1 (virtualbox, 0)

#添加
F:\java\virtual\s13>vagrant box add centos_v2 ./centos_v2.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v2' (v0) for provider:
    box: Unpacking necessary files from: file://F:/java/virtual/s13/centos_v2.box
    box:
==> box: Successfully added box 'centos_v2' (v0) for 'virtualbox'!

#列表
F:\java\virtual\s13>vagrant box list
centos_v1 (virtualbox, 0)
centos_v2 (virtualbox, 0)

3.修改Vagrantfile,设置box使用centos_v2
在这里插入图片描述
4.使用虚拟机

vagrant up

2.4.6 命令和配置文件

详细的命令文档参考官网
https://developer.hashicorp.com/vagrant/docs/cli/package

3. Linux常用命令

3.1 linux基本目录结构

在这里插入图片描述
各目录作用
● bin (binaries)存放二进制可执行文件
● sbin (super user binaries)存放二进制可执行文件,只有root才能访问
● etc (etcetera)存放系统配置文件
● usr (unix shared resources)用于存放共享的系统资源
● home 存放用户文件的根目录
● root 超级用户目录
● dev (devices)用于存放设备文件
● lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
● mnt (mount)系统管理员安装临时文件系统的安装点
● boot 存放用于系统引导时使用的各种文件
● tmp (temporary)用于存放各种临时文件
● var (variable)用于存放运行时需要改变数据的文件

3.2 vagrant默认的挂载目录

可以和宿主机共享文件
在挂载目录下创建一个文件夹,在虚拟机中也可以看到

挂载目录
在这里插入图片描述

3.3命令

3.3.1常用命令

1.打印命令

echo hello 

2.ls命令

ls -la #详细查看,所有文件和目录

● -l (long)详细列表
● -a (all) 显示隐藏文件、特殊目录.和…
● -t (time)显示时间
3.man命令

man ls

● ctrl+f:下一页
● ctrl+b:上一页
● :q退出\

3.1.2 文件或目录常用命令

  1. cd
    进入目录
#绝对路径
[root@s1 ~]# cd /vagrant
[root@s1 vagrant]# ls
bootstrap.sh  centos_v1.box  centos_v2.box  centos_v3.box  lua-demo  Vagrantfile

#进入用户的宿主目录
cd ~ 

cd .. #进入上级目录

#./ 不写,都是代表当前目录

cd - 进入上一个历史目录

[root@s1 man]# cd ~
[root@s1 ~]# pwd
/root
[root@s1 ~]# cd -
/usr/local/share/man
[root@s1 man]# pwd
/usr/local/share/man
[root@s1 man]#

2.pwd
显示当前工作目录

[root@s1 vagrant]# cd ~
[root@s1 ~]# ls
anaconda-ks.cfg  post_install.log  v3.txt
[root@s1 ~]# pwd
/root

3.su
切换用户

[vagrant@s1 /]$ cd /root/
-bash: cd: /root/: Permission denied #使用vagrant不能访问/root

[vagrant@s1 /]$ su root
Password:
[root@s1 /]# cd /root/

普通股用户切换到root用户,需要密码
4.mkdir

  • 创建目录
    参数:-p 创建的文件父目录不存在的情况下先生成父目录
[vagrant@s1 ~]$ cd ~ #进入宿主目录
[vagrant@s1 ~]$ ll
total 0
[vagrant@s1 ~]$ mkdir /home/vagrant/java-project/src #创建目录
mkdir: cannot create directory ‘/home/vagrant/java-project/src’: No such file or directory
[vagrant@s1 ~]$ mkdir -p /home/vagrant/java-project/src #-p自动产生父目录
[vagrant@s1 ~]$ ll
total 0
drwxrwxr-x 3 vagrant vagrant 16 Jul  6 11:16 java-project
[vagrant@s1 ~]$ cd java-project/
[vagrant@s1 java-project]$ ll
total 0
drwxrwxr-x 2 vagrant vagrant 6 Jul  6 11:16 src
[vagrant@s1 java-project]$

5.tree
以树列表生成目录
需要下载

su root #切换管理员
yum install -y tree

[root@s1 vagrant]# su vagrant
[vagrant@s1 ~]$ tree java-project
java-project
├── resources
│   └── db
└── src

6.touch
创建文件

[vagrant@s1 src]$ touch Hello.java
[vagrant@s1 src]$ ll
total 0
-rw-rw-r-- 1 vagrant vagrant 0 Jul  6 14:01 Hello.java
[vagrant@s1 src]$

7.cp
拷贝文件、目录
参数:-r 递归拷贝 先拷贝子文件,再拷贝父文件

# cp [目标文件] [目标地址]
[vagrant@s1 ~]$ cp java-project/src/Hello.java ./java-project/src/main/java/
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
└── src
    ├── Hello.java
    ├── main
    │   └── java
    │       └── Hello.java
    └── test

-r 递归拷贝

[vagrant@s1 ~]$ cp -r  java-project/resources/ java-project/src/main/
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
│       └── jdbc.properties
└── src
    ├── main
    │   ├── java
    │   │   └── Hello.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

8 directories, 3 files

8.rm
删除文件或目录
参数: -r :递归删除
-f :强制删除

[vagrant@s1 ~]$ rm java-project/src/Hello.java
[vagrant@s1 ~]$ tree java-project/
java-project/
├── resources
│   └── db
└── src
    ├── main
    │   └── java
    │       └── Hello.java
    └── test

9.mv
移动文件或目录、修改文件名

# 移动文件

[vagrant@s1 ~]$ mv  java-project/resources/ java-project/src/main/
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── Hello.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files

# 修改文件名

[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── Hello.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files
[vagrant@s1 ~]$ mv java-project/src/main/java/Hello.java java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── main
    │   ├── java
    │   │   └── HelloWorld.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 2 files

10.cat
显示文本文件内容

# cat [文件名]
cat OAuth2Config.java

cat a.txt > b.txt #把a.txt内容覆盖到b.txt
cat a.txt >> b.txt #吧a.txt追加到b.txt
  1. more 、less
    分页显示文件内容。不同的是 less看完文件后,需要:q退出。而more是直接退出。
more OAuth2Config.java
less OAuth2Config.java

12.head
参数:-n [行数] 显示前几行内容

head  -n 10 OAuth2Config.java

13.tail
参数:-n 显示后几行
-f 即使读取,页面不退出,更新信息后会立即显示

tail -n 10 OAuth2Config.java

14.wc
统计
参数:-m 统计文本字节数
-w 统计文本字数
-l 统计文本行数

echo "hello java welcome to beijing" > a.txt
wc -w -l -m a.txt

15.find 查找文件

find -name Hello*.java

[vagrant@s1 ~]$ tree java-project/
java-project/
└── src
    ├── java -> app
    ├── main
    │   ├── java
    │   │   └── HelloWorld.java
    │   └── resources
    │       └── db
    │           └── jdbc.properties
    └── test

6 directories, 3 files
[vagrant@s1 ~]$ find -name Hello*.java
./java-project/src/main/java/HelloWorld.java
[vagrant@s1 ~]$ find -name jdbc.*
./java-project/src/main/resources/db/jdbc.properties

16.grep
查找文本、通道
参数:-n 显示行数
-i 不区分大小写

grep class OAuth2Config.java -n -i -o

17.In 创建软连接
ln -s 目标地址 文件名

ln -s /home/vagrant/java-project/src/main/java/HelloWorld.java app

echo "hello spring" >> app #通过软连接添加内容

cat app #通过软连接查看文件内容
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值