Vagrant 入门 - 配置
现在我们已经有了一个运行 Ubuntu 的虚拟机,并且可以在宿主机上编辑文件并自动同步到虚拟机。现在让我们安装一个 web 服务器,通过服务器访问这些文件。
可以通过 SSH 进入并安装一个 web 服务器并开始工作,但每个使用 Vagrant 的人都必须这样做。相反,Vagrant 内置了对自动配置的支持。使用此功能时,Vagrant 将在执行 vagrant up
时自动安装软件,以便 guest 机器可以重复创建并可立即使用。
1. 安装 Apache
可以通过 shell 脚本来为刚才的项目设置 Apache。创建下面的 shell 脚本并命名为 bootstrap.sh
,保存在 Vagrantfile 文件相同的目录下:
#!/usr/bin/env bash
apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
rm -rf /var/www
ln -fs /vagrant /var/www
fi
然后,配置 Vagrant 在设置机器的时候运行这个脚本。编辑 Vagrantfile 文件:
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.provision :shell, path: "bootstrap.sh"
end
“provision” 行是新添加的,告诉 Vagrant 使用 shell 命令执行 bootstrap.sh
文件来设置虚拟机。文件路径是相对于 Vagrantfile 文件所在的项目根目录的相对路径。
2. 配置
配置写完后,执行 vagrant up
,Vagrant 会自动配置。可以在终端看到 shell 脚本的输出。如果虚拟机已经启动了,则需要执行 vagrant reload --provision
,这会快速重启虚拟机并跳过初始化导入阶段。因为 Vagrant 只会在第一次 vagrant up
启动虚拟机的时候自动运行 provisioner,所以需要在 reload 命令中使用 provision 标志指示 Vagrant 必须运行 provisioner。
Vagrant 运行结束后,web 服务器会成功运行。现在还不能在宿主机的浏览器上查看网页,但可以在通过 SSH 进入虚拟机后,通过加载文件来判断配置是否生效:
$ vagrant ssh
...
vagrant@precise64:~$ wget -qO- 127.0.0.1
上面例子会正常工作。我们安装 Apache 并设置其默认的 DocumentRoot 指向我们的 /vagrant
这个默认的同步目录。
可以创建更多文件并在终端查看,下一步需要配置网络选项以便用宿主机的浏览器访问虚拟机。
对于复杂的配置脚本,将自定义的 Vagrant box 与预先安装的软件包打包在一起,而不是每次构建它们可能会更高效。入门指南未涵盖此主题,但可以在 自定义 box 文档中找到该主题。
Vagrant 入门 - 配置的更多相关文章
- Vagrant入门
简单地说,Vagrant让我们可以通过代码的方式快速地.可重复地创建针对不同虚拟环境的虚拟机,包括Virtualbox.AWS.Docker等.它使得我们可以一次性地.自动创建多个环境相同的虚拟机,对 ...
- Vagrant安装配置
转载自:https://my.oschina.net/u/3424381/blog/888205 Vagrant安装配置 实际上Vagrant只是一个让你可以方便设置你想要的虚拟机的便携式工具,它底层 ...
- Vagrant入门二(转)
原文:https://github.com/zhjchina/Go-best-practice/edit/master/ebook/zh/01.3.md 3 Vgrant使用入门 前面我们已经学会了如 ...
- Vagrant入门一(转)
原文: https://github.com/astaxie/Go-best-practice/blob/master/ebook/zh/01.2.md 1.2 Vagrant安装配置 实际上Vagr ...
- [转] Vagrant入门
[From] https://www.cnblogs.com/davenkin/p/vagrant-virtualbox.html 简单地说,Vagrant让我们可以通过代码的方式快速地.可重复地创建 ...
- Spring-MVC开发步骤(入门配置)
Spring-MVC开发步骤(入门配置) Step1.导包 spring-webmvc Step2.添加spring配置文件 Step3.配置DispatcherServlet 在web.xml中: ...
- CEPH集群操作入门--配置
参考文档:CEPH官网集群操作文档 概述 Ceph存储集群是所有Ceph部署的基础. 基于RADOS,Ceph存储集群由两种类型的守护进程组成:Ceph OSD守护进程(OSD)将数据作为对象 ...
- mybatis入门配置和调试
欢迎转载http://www.cnblogs.com/jianshuai520/p/8669177.html大家一起努力,如果看的时候有图片半边遮挡起来的话,右键查看图片,就可以观看完整的图片,具体怎 ...
- webpack4入门配置
下面是抄过来的,方便自己翻越 webpack4.x入门配置 1.首先npm install webpack webpack-cli webpack-dev-server -g (mac电脑用超级管 ...
随机推荐
- Codeforces 1159D The minimal unique substring(构造)
首先我们先观察三个串 10,1110,11101110,答案都是红色部分,我们可以下一个结论,形如 1,1101,111101,那么答案为红色部分.我们可以发现,通过我们末尾添加的1,导致之前红色部分 ...
- 什么是 Python 的命名空间?
在 Python 中,所有的名字都存在于一个空间中,它们在该空间中存在和被操作——这就是命名空间.它就好像一个盒子,每一个变量名字都对应装着一个对象.当查询变量的时候,会从该盒子里面寻找相应的对象.
- python学习第四十五天__name__用法和作用
在python导入模块导入另外一个模块的时候,有时候只是想用其一个方法,会出现其他的方法也运行了,python用到__name__==‘__main__’ 解决问题,那么__name__用法和作用 1 ...
- 把java(springboot)程序打包docker镜像
前言:要在docker运行java(jar包)程序,就要把程序打包成docker镜像(以下简称镜像),可以先理解为镜像就是jar包 打包需要程序代码,java本身的打包环境(包括jdk和maven), ...
- sql 时间函数大全
1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 se ...
- 时间选择器moment格式化存在时差问题
时间选择器moment格式化存在时差问题解决方法: return moment(date).utc().zone(+6).format('YYYY-MM-DD')解决IE9时间选择器不能回显数据解决方 ...
- js中reduce()的牛掰所在 本质作用:实现数值累计,筛选过滤,类似递归
先看w3c官说 array.reduce(function(total, currentValue, currentIndex, arr), initialValue); /* total: ...
- AI-sklearn 学习笔记(一)sklearn 一般概念
scikit-learn Machine Learning in Python Simple and efficient tools for data mining and data analysis ...
- paste - 合并文件各行
总览 (SYNOPSIS) ../src/paste [OPTION]... [FILE]... 描述 (DESCRIPTION) 连续 依次 从 各个 文件 FILE 中 读取 一行 然后 合并成 ...
- ghci对haskell的类型推导
今天这篇文章分析一下ghci交互解释器对类型的推导. 假设有函数fn定义如下: let fn = map map 现在fn的类型是: map map :: [a -> b] -> [[a] ...