Vagrant使用说明

建立本身的box

安装

最小化安装

  1. 用户vagrant,密码vagrantgit

    这个安装的时候设置就行了,若是是CentOS会让你选择是否让这个用户作管理员,勾选就行了。其余的后面再设置。
  2. 设置.ssh/authorized_keysgithub

mkdir -p $HOME/.ssh
wget --no-check-certificate https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub -O $HOME/.ssh/authorized_keys
chmod 0700 $HOME/.ssh
chmod 0600 $HOME/.ssh/authorized_keys
chown -R vagrant $HOME/.ssh

这里原来就是以vagrant@vagrant为例,后来以为vagrant这个单词很差拼,索性改用户名吧,为了方便不一样用户名的读者复制代码,把里面的绝对路径都改为了带环境变量的。改了用户名之后用vagrant ssh就无法直接登陆了,须要在Vagrantfile里面指定
`config.ssh.username = "frost"服务器

更新系统

Debian:
sudo apt-get update && sudo apt-get dist-upgradessh

CentOS:
sudo yum updateui

安装VirtualBox Guest Additions

设备->安装VirtualBox Guest Additions,就能够把相应的iso『放在』虚拟机的光驱里。只有安装了这些附加功能才能正经常使用端口映射和目录同步功能。.net

Debianvagrant

apt-get install build-essential module-assistant
m-a prepare
cd /media/cdrom
sh VBoxLinuxAdditions-x86.run

CentOScode

sudo yum groupinstall "Development Tools"
sudo yum install kernel-devel
sudo mkdir /media/cdrom/
sudo mount /dev/cdrom /media/cdrom/
sudo ./VBoxLinuxAdditions.run

配置用户权限

  1. 设置vagrant用户的sudo权限开发

    Debian: 
    
    `root@debian:~# gpasswd -a vagrant sudo`
  2. 设置vagrant用户的sudo权限无需密码get

    `root@debian:~# visudo`

把下面这行

`%sudo    ALL=(ALL:ALL) ALL`

改为

`%sudo    ALL=(ALL:ALL) NOPASSWD:ALL`

这是Debian的习惯,CentOS系的用的组是wheel,因此也是同样把相应的wheel组的设置改一下。

其余

若是还要安装其余的包,这时候能够开始了,固然也能够以后用vagrant登录再安装。

打包

vagrant package --base Debian --output Debian.box

添加

vagrant box add --name Debian Debian.box

设置本身的box

生成配置

到你喜欢的目录执行vagrant init,会生成一个Vagrantfile的文件,按下面的说明作一些修改。

基本配置

config.ssh.insert_key = false
config.vm.box = "Debian"

同步目录

config.vm.synced_folder "./Code", "/home/vagrant/Code"

端口映射

这里只添加一条HTTP用的80端口,须要其余的能够再添加。
config.vm.network "forwarded_port", guest: 80, host: 8000

使用本身的box

开机

正常开机vagrant up

关机

优雅的关机vagrant halt

重启

标准的重启 vagrant reload

注意,觉得个人经验来看,若是你直接在虚拟机中用reboot或者shutdown -h了,极可能会引发不可预知的错误,好比镜像恢复到最初状态,全部软件被重置。因此若是可能,请使用上面说的这三个命令。

登录

vagrant ssh由于前面已经设置了免密码登录,因此这时候就能够很任性的随意登录了。

后记

因此如今咱们安装完一个完整的方便分发的开发环境了,然而有什么用呢?

想象一下这样的场景,你有一台配置还能够的Windows电脑,而后你须要Linux下的开发环境。这时问题来了,若是你装个虚拟机,在虚拟机里开发,那你就和你喜欢的IDE无缘了—-这么说有点绝对,你仍是能够用sftp之类的协议实现文件同步的,但明显没有咱们如今这种方式优雅。

设置一个同步目录,你在本地任性的用你喜欢的任何IDE写代码,写完以后访问127.0.0.1:8080就能够访问,这是一种什么样的体验啊?(固然,若是你有多个域名要用,仍是配个本地域名比较好)

还有,你说我是Mac,什么服务器,开发语言均可以安装在本地,和Linux也没有什么差异。这个问题我也考虑过,但我我的的爱好是把他们隔离开。你的Mac上安装个Apache了,Nginx了总感受怪怪的,并且搞很差这些东西哪里配置很差你的宿主机都没法工做了。因此,用虚拟机是成本最低的一种方式了。

我上面总结的这些仅限于我的使用,团队用的话还须要更多的配置,例如前面使用了insecure key,这就是不适合团队用的——但我尚未见过有团队用这个东西,至于puppet/chef更是没见过了。须要用到的时候再了解也不晚。

相关文章
相关标签/搜索