day_02
一:linux简介:
Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都是用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机等。
1.1应用场景分析
1.1.1 桌面应用
由于Linux在桌面场景下应用不多,这个场景下大多还是使用Windows系统
1.1.2 服务端(后端)
电商,门户网站后端服务,一般采用Linux作为操作系统,Java、c++、python、go,运行和部署在Linux服务
1.1.3 嵌入式
Linux最小和核心的版本只有几百k,智能物联设备方便嵌入式开发
1.1.4 云计算
运维和部署场景,使用linux
二:Vagrant
2.1 虚拟机是什么
虚拟机:JVM,java虚拟机
2.2 vagrant是什么
vagrant是一个比较流行的虚拟机管理软件,使用Vagrant可以让我们使用命令直接
从云上下载虚拟机的镜像,然后进行创建和管理等,Vagrant集成了主流的虚拟机管理工具VMvare和VirtualBox,默认使用VirtualBox
Vagrant的精髓在一个Vagrantfile里面,和docker的Dockeerfile功能上一样,我们只需要把需要安装部署的步骤写在Vagrantfile里面,便可以实现轻松部署,vagrant还支持把当前系统做成一个 .box 后缀命名的镜像,类似于docker的imge,可轻松实现环境的移植。
vagrant可以吧配置好的环境打包成一个box,分享给其他人直接使用
在容器流行之前,Vagrant就是用来编排虚拟机和自动部署开发环境的,有了Docker/Kubernetes之后,直接用容器来编排应用更简单。但是还有一些工作,例如容器平台自身的安装,多节点集群的部署测试等,更方便用虚拟机解决。
编辑
2.3 安装CentOS 7 系统
2.3.1下载Box
可以在 A list of base boxes for Vagrant - Vagrantbox.es这个网址下载更多不同系统甚至是已经配置好环境可以直接用的Box,可以直接用上面网址,由Vagrant自动下载安装。
2.3.2 vagrantfile配置文件
1. 初始化配置文件
首先创建目录: D:\java\virtual\s13\
然后在目录中执行
vagrant init centos
初始化并产生配置文件
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
编辑
配置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.3.3 准备Box
1. 列表本地Box
F:\java\virtual\s13>vagrant box list
centos-travel (virtualbox, 0)
2.添加Box
把刚才下载的Box添加到vagrant中
F:\java\virtual\s13>vagrant box add centos_v1 ./centos_v1.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos_v1' (v0) for provider:
box: Unpacking necessary files from: file://F:/java/virtual/s13/vagrant-centos-7.2.box
box:
==> box: Successfully added box 'centos_v1' (v0) for 'virtualbox'!
3. 再执行查看列表
F:\java\virtual\s13>vagrant box list
centos-travel (virtualbox, 0)
centos_v1 (virtualbox, 0)
4. 删除Box
vagrant box remove centos-travel
2.3.4 安装虚拟机
1. 安装
#必须在vagrantfile所在的目录安装
vagrant up
2. 测试链接
使用MobaXterm链接刚才安装的3个服务器192.168.56.71/72/73(IP)
ip addr #查看ip地址
hostname #服务器名
2.4 常用命令
1. 启动
#启动Vagrantfile(s1,s2,s3)配置所有虚拟
vagrant up
#启动具体一个虚拟机
vagrant up s1
2. 关闭
vagrant halt #关闭所有
vagrant halt s1
2.5 自定义Box
安装了Java开发环境
- JDK
- Mysql
- Redis
- Elasticearch
- RocketMQ
- mion
- ......
能不能把已经安装的虚拟机打包成一个自定义的Box,分享给我们管理的虚拟机呢?
答案是:可以!!!
标准的虚拟机box没有vim编译器,所以需要下载
yum install vim -y
1.打包当前的虚拟机,产生一个自己定制的box
#关闭虚拟机
vagrant halt s1
#打包当前虚拟机
vagrant package --base s1 --output centos_v2.box
2.然后删除现有的虚拟机
vagrant halt
vagrant destroy # 删除所有的虚拟机
vagrant destroy s1 #删除s1
3.把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)
4.修改vagrantfile,设置box使用centos_v2
# -*- 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_v2"
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
编辑
5.最后使用已经安装了vim的box安装新的虚拟机
vagrant up