今天的话题是开发环境搭建,我换过好几台电脑,也最害怕换电脑。因为电脑上有各种开发环境各种的开发工具各种插件一旦换电脑都要重新安装(这可是一件很麻烦的事情)特别是开发环境,以前我也是直接把开发环境安装到自己机器上。直到我遇到了vagrant我彻底解脱了,相见恨晚啊 很多人都是直接在自己机器上搭建程序运行环境,所以需要安装不同版本的jdk apache tomcat nginx...如果想学其他语言又要安装其他语言的开发环境比如我最近在玩ruby on rails,要安装ruby语言和rails框架,rvm或者rbenv。没事的也摆弄摆弄nodejs又要安装nodejs,nvm等等各种各样的程序,系统上的东西越来越多,总是让人很不放心。并且,我使用的是mac,服务器上使用的是Linux啊,两个环境不一样,也可能出现各种麻烦的事情
我应该很早就使用Linux作为开发平台了,搭建一个开发环境一般是这样的
首先是系统安装
以前安装一套新系统要去 Ubuntu 官网下载一个镜像文件,然后新建一个 vitualbox 虚拟机(或者vmware),然后需要有人值守的去完成整个系统安装过程,很是繁琐。但用了 Vagrant 以后这个过程变成无人值守的了,意思就是一个命令搞定一切。过程是这样 首先,保证我的系统上有两个基础软件,一个是 vagrant 一个就是 virtualbox ,安装过程就是双击然后下一步下一步而已,没啥好说的。装好之后,到命令行中就有 vagrant 这个命令了。那么这个时候是不是就要去下载系统光盘了呢?
NO,有一个网站叫做 https://vagrantcloud.com/,到上面搜一下 ubuntu,排名第一的这个
ubuntu/trusty64
就是 ubuntu 提供的 ubuntu 14.04 的64位系统镜像文件 来到命令行执行下面命令 cd ~ mkdir VirtualBox VMs cd VirtualBox VMs mkdir moonlight //这里是项目名称你的可以不同,不同的项目也不一样。vagrant的目标是为每一个项目创建一个虚拟机 cd moonlight
这样moonlight文件夹下就多了一个Vagrantfile文件所有这个虚拟机的设置都在这里了(一会儿再配置,先把虚拟机起起来再说)
然后执行
vagrant up就会自动到vagrant cloud 网站上下载box进行安装了。如果是第一次下载,可以需要等一二十分钟,所以一般我是早上起来干这个活,网速比较快。(我这里的网速实在无语)但是,如果之前在另外一个项目中执行过这个操作了,那么也就是这个box已经存在我本地机器上了。这时候,vagrant导入这个box进来,只需要几秒钟就可以在创建出一个新的virtualbox 虚拟系统了,vagrant 的基本思路是为每一个项目创建自己的一个虚拟机。而且这个系统和之前的系统是完全隔离的。如果我过一段时间不需要这台虚拟机了,执行
vagrant destroy
就都清理干净了,而且其他同样使用这个 box 虚拟机也不会受到影响。
config.vm.provider "virtualbox" do |v|
v.memory = 1024
既然虚拟机起起来了那就该配置了,那我就修改一下虚拟机的内存和ip把,打开Vagrantfile文件添加
#设置虚拟机内存(1G)
end
#设置虚拟机IP
config.vm.network :private_network, ip: "192.168.1.100"
然后再打开本机的/etc/hosts文件添加
192.168.1.100 moonlight.dev
以后可以浏览器中用 moonlight.dev来访问虚拟机里面的网站了
共享文件夹:默认情况下,Vagrantfile所在的这个文件夹会自动挂载到虚拟机的/vagrant
目录下这个意味着我们可以使用我们mac上的sublimeText vim git 搜狗输入法 这些工具了,
Mac依旧是我写代码的环境。ubuntu虚拟机是项目的安装运行环境。这个分工是太合理了!
最后我来使用vagrant搭建一个PHP开发环境
上面我创建一个moonlight的文件夹进入这个文件夹(这个文件夹就是我们的项目名,它所需要的
环境都在这里面)先把虚拟机起起来
vagrant up
系统起起来了那么我们就要登录这个系统,使用vagrant这个用户登录系统(这个用户挺好,执行sudo是不需要输入密码的,开发中实际使用挺好用的)命令
vagrant ssh
执行下面命令安装apache2 mysql php等
#mysql密码是111111
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password 111111'
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password 111111'
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
#apache2 php5-mysql
sudo apt-get install apache2 php5-mysql libapache2-mod-php5
#others module
sudo apt-get install php5-gd php5-curl php5-xdebug
安装完成
然后再去设置一下apache2
cd /etc/apache2/sites-avaiable
sudo vim moonlight.conf
填入下面内容
<VirtualHost *:80>
ServerName moonlight.dev
DocumentRoot /vagrant/
</VirtualHost>
在 sites-enable 下面创建符号链接并且加载新配置
sudo a2ensite moonlight.conf
cd ..
sudo rm sites-enabled/000-default.conf
sudo service apache2 reload
sudo rm -rf /var/www
sudo ln -fs /vagrant /var/www
最后再把/etc/apache2/sites-available/moonlight.conf更改一下
为
DocumentRoot /var/www
再次访问一切正常
vagrant强烈推荐!