最近有很多好的项目的想法想实施,其中涉及到很多的环境。因为现在用的是MAC笔记本,对于MAC系统而言,每次升级之后系统的配置文件都会被重置,这个是一个糟糕的场景。于是我们就需要搭建一个独立的环境。要是以前的话,我肯定装一个虚拟机就开搞了,不过最近接触到一个新的工具,叫做Vagrant。
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它使用Oracle的开源Virtual Box虚拟化系统,使用 Chef创建自动化虚拟环境。
Vagrant还有一个很重要的好处在于,它可以将虚拟环境的目录映射到本机的指定的目录,这样我们就不用在本机开发完成代码后,然后再将代码拖到虚拟环境中进行测试了。
虽然这里http://www.vagrantbox.es/已经罗列出了许多个base box,基本上已经涵盖了所有的大部分操作系统的大部分版本。然后尝试去下载,但是发现下载的速度实在太慢太慢太慢了,而且下载一会后,就卡住不动了。虽然在网上其他人也提供了一些版本的box文件,但是主要都是Centos和Ubuntu的BOX文件,都是我想要的,我想要的Debian8的BOX文件。无奈之下,只能自己搭建一个这样的环境。
那么我们就开始吧。
1、安装VirtualBox,(VirtualBox-4.3.36)
2、安装Vagrant
3、准备Debian8的ISO镜像(debian-8.5.0-amd64)
4、创建一个新的虚拟机
5、启动虚拟机,安装Debian8,确保配置如下(非强制,如打算分发此box,建议遵循如下约定)
这个过程中需要注意的是Debian8的引导问题。系统装了很多次,每次装完后,都无法进入系统,后来百度了一下原来是系统安装过程中默认选择的引导方式有问题,安装是失败的,导致无法进入系统。那么要如何解决呢?那就是在选择引导类型的时候,选择“/dev/sda1”。然后就OK了。
6、安装完毕后,进入虚拟机
7、根据自己需要,安装一些常用软件
(1)apt-get install sudo
(2)apt-get install vim
(3)apt-get install zip unzip
(4)apt-get install php5
(5)apt-get install apache2
(6)apt-get install mysql-server mysql-client
(7)apt-get install php5-mysql php5-curl php5-gd libapache2-mod-php5 php5-mysql
(8)apt-get install openssh-server
8、创建admin组
sudo groupadd admin 9、添加vagrant用户到admin组
sudo usermod -G admin vagrant 10、安装puppet
sudo apt-get install puppet puppetmaster
sudo apt-get install ruby rubygems
sudo apt-get install chef 11、安装vagrant的public keys
mkdir ~/.ssh/ cd ~/.ssh wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant wget http://github.com/mitchellh/vagrant/raw/master/keys/vagrant.pub mv vagrant.pub authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/* 12、Install virtual box guest additions(为了共享文件夹,端口转发等)
sudo apt-get install linux-headers-$(uname -r) build-essential
下载指定版本的VBoxGuestAdditions.iso http://download.virtualbox.org/virtualbox/4.0.36/VBoxGuestAdditions_4.0.36.iso 然后用虚拟机的光驱加载这个镜像,接下来: sudo mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run 添加共享文件夹
sudo mkdir /vagrant 13、清除缓存
sudo apt-get clean 14、关闭虚拟机,进入virtual box directory
vagrant package --output debian8.box --base Debian8 这个过程中会遇到一个坑,系统可能会提示:Debian8: VM not created. Moving on 这是因为虚拟机的目录不一定就是虚拟机的名称,可以通过命令来查询:vboxmanage list vms 15、这样我们的定制版的Box文件就创建好了。接下来就简单了,创建一个目录,放入两个文件: debian8.box Vagrantfile Vagrantfile的内容为: # -*- mode: ruby -*- # vi: set ft=ruby : # All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don't change it unless you know what # you're doing. Vagrant.configure(2) do |config| config.vm.box = "debian8" config.vm.boot_timeout = 360 config.ssh.username = "root" config.ssh.password = "vagrant" config.vm.network "public_network" config.vm.network "forwarded_port", guest: 80, host: 8081 config.vm.network "forwarded_port", guest: 3306, host: 3307 config.vm.synced_folder "/Users/harry/Sites", "/var/www", create:true, owner: "www-data", group: "www-data" end 16、cd到该目录(非常重要) 17、执行添加BOX命令 vagrant box add debian8 debian8.box 18、打开BOX命令 vagrant up 然后所有的环境都已经准备好了。这个时候我们就可以在本机写代码,然后直接访问虚拟机的就可以测试了。 PS:vagrant常用命令如下: vagrant halt 关机 vagrant statue 当前虚拟机的状态 vagrant global-status 全局虚拟机的状态 vagrant destroy xxxx 删除虚拟环境 vagrant box list 列出当前box列表 vagrant box xxxx remove 删除box 顺便说明一下哦,以上步骤一个都不能少,少了任何一个都会引起很多问题,以上步骤是本人踩了很多坑后总结的步骤, 如果不想踩坑的话就按照步骤执行吧。
配置中有什么问题可以咨询我