• 基于Vagrant的虚拟环境搭建流程


    Vagrant,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。

    一. 下载资源:

    1 下载安装 VirtualBox :https://www.virtualbox.org/

    2 下载安装 Vagrant :http://www.vagrantup.com/

    3 下载需要使用的 box :

    官方提供的范例:http://files.vagrantup.com/precise32.box

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

    二. 添加镜像到 Vagrant:

    假设下载的镜像存放路径是 ~/box/test.box,在终端里输入:

    $ vagrant box add gsky ~/box/test.box

    gsky 是我们给这个 box 命的名字,~/box/test.box 是 box 所在路径

    三. 初始化开发环境:

    1 创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,用 gsky 镜像初始化当前目录的环境:

    $ cd ~/dev  # 切换目录

    $ vagrant init gsky  # 初始化

    $ vagrant up  # 启动环境

    2 启动完成后,就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置要运行的各种环境和参数了。

    $ vagrant ssh  # SSH 登录

    $ cd /vagrant  # 切换到开发目录,也就是宿主机上的 `~/dev`

    ~/dev 目录对应虚拟机中的目录是 /vagrant

    Windows 终端并不支持 ssh,所以需要安装第三方 SSH 客户端,比如:Putty、Cygwin 等。

     

    登录的帐号密码均为 vagrant ,登录之后如果需要 su root ,密码也是 vagrant

    注:使用 vagrant ssh 时,会提示可以使用密钥进行登录,如果需要使用putty进行密钥登录的话,需要下载 puttygen 将 ssh 的密钥转换为 ppk 文件才能使用。

     

    3 Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。

    Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80 这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:

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

    重启虚拟机,这样就能用 192.168.33.10 访问这台机器了,可以把 IP 改成其他地址,只要不产生冲突就行。

    4 目录映射:

    既然是部署环境,那么开发工作肯定还是需要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就好了,不然就本末倒置了,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。

    默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件可以直接在 /vagrant 下进行访问,当然也可以在通过 ln 创建软连接,如

    ln -fs /vagrant/wwwroot /var/www

    来进行目录映射,当然,从自动化配置的角度,能不进系统就不需要进系统,所以在Vagrant也可以进行目录映射的操作:

    config.vm.synced_folder "wwwroot/", "/var/www"

    前面的参数 “wwwroot/”  表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: “d:/www/”.

    后面的参数 “/var/www” 表示虚拟机中对应映射的目录。

    5 运行脚本:

    虽然不是必须,但是如果有需要在启动时运行一些脚本(环境的安装或者有些服务的启动需要在完成目录映射之后进行),可以编辑脚本,类似如下(摘自Vagrant Document):

    #!/usr/bin/env bash

    apt-get update

    apt-get install -y apache2

    rm -rf /var/www

    ln -fs /vagrant /var/www

    保存在和Vagrantfile相同目录,文件名自取(如 boot.sh),然后在Vagrantfile中添加:

    config.vm.provision :shell, :path => "boot.sh"

    四. 打包分发

    当配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:

    $ vagrant package

    打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

    PS:

    vagrant package --output NAME --vagrantfile FILE

    可选参数:

    --output NAME :(可选)设置通过NAME来指定输出的文件名

    --vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中

    注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:

    sudo rm -f /etc/udev/rule.d/70-persistent-net.rules

    五. 常用命令

    $ vagrant init  # 初始化

    $ vagrant up  # 启动虚拟机

    $ vagrant halt  # 关闭虚拟机

    $ vagrant reload  # 重启虚拟机

    $ vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)

    $ vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)

    $ vagrant ssh  # SSH 至虚拟机

    $ vagrant status  # 查看虚拟机运行状态

    $ vagrant destroy  # 销毁当前虚拟机

    六. 注意事项

    使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:

    # Apache 配置添加:

    EnableSendfile off

    # Nginx 配置添加:

    sendfile off;

    可以参考: http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour

  • 相关阅读:
    Chapter 2: 随机变量
    数据集
    Chapter 1: 随机事件及其概率
    概率论与数理统计每周教学内容及作业
    概率论与数理统计教学内容
    Entity Framework search sequnce
    Runtime Complexity of .NET Generic Collection
    update the UI property cross thread
    打通技术的任督二脉
    windbg symbol path
  • 原文地址:https://www.cnblogs.com/leaf526/p/3599969.html
Copyright © 2020-2023  润新知