使用Vagrant构建Drupal本地开发环境

使用Vagrant构建Drupal本地开发环境 - Windows

ken
06/29/2015
使用Vagrant构建Drupal本地开发环境

Vagrant介绍

Vagrant 是一款用来构建虚拟开发环境的工具,它可以为你提供可配置、可再生、便携的工作环境,我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员,统一团队成员的开发环境。“代码在我机子上运行没有问题”这种说辞将成为历史。

为什么使用Vagrant

  • 对于开发人员来说,Vagrant可以帮你统一团队成员的开发环境。如果你或者你的伙伴创建了一个Vagrantfile,那么你只需要执行vagrant up就行了,所有的软件都会安装并且配置好。团队成员可以通过相同的Vagrantfile来创建他们的开发环境,无论他们是在Linux, Mac OS X, 或者Windows下,这样就可以保证你团队成员的代码是跑在相同的环境中,从而避免令人烦躁的【在我的机器上是可以的】问题。
  • 对于运维人员来说,Vagrant可以给你提供一次性,并且与线上一致的服务器环境,你可以利用VirtualBox或者VMware来测试你的shell scripts, Chef cookbooks, Puppet modules等管理脚本。你不需要再苦逼的登录到线上服务器提心吊胆的测试了,Vagrant可以解救你。
  • 对于设计人员来说,Vagrant可以帮你处理一切,你只需要专注在设计上就好了。一旦开发人员帮你配置好了Vagrant之后,你只需要执行vagrant up,然后开始设计。

Vagrant安装

1. 下载 : http://www.vagrantup.com/downloads.html

Drupal

2. 下载完成后点击 “setup.exe” 运行安装向导。

Drupal
Vagrant 安装向导

Drupal
同意条款

Drupal
选择安装目录

Drupal
安装准备就绪

Drupal
安装开始

Drupal
完成安装

Drupal所需安装

  • Cygwin
  • PHP
  • Drush

1. Cygwin安装

Drupal
下载适合的版本

Drupal
运行“setup.exe“安装向导

Drupal
选择安装类型

Drupal
设置安装目录

Drupal
选择下载保存目录

Drupal
选择网络连接

Drupal
选择站点

在选择安装包界面,选择你要下载的包:

  • openssh
  • git
  • rxvt
  • patch
  • patchutils
  • unzip
  • nano
  • vim
  • wget
  • connect-proxy
  • curl
  • rsync
  • bsdtar
  • ncurses
  • mysql

Drupal
选择安装包

Drupal
安装

Drupal
安装完成

或者可以直接在命令行安装:

C:\Windows\> C:\Users\admin\Downloads\setup.exe -q -P openssh,git,rxvt,patch,patchutils,unzip,nano,vim,wget,connect-proxy,curl,rsync,bsdtar,ncurses,mysql

2. PHP 安装

下载对应版本的PHP,完成后解压到如"C:\web\php\5328"(替换成实际的本地路径)。如果本地环境没有安装Visual C++ Redistributable,下载安装。

Drupal
PHP下载

Drupal
解压到本地目录
Drupal
把PHP路径添加到环境变量

完成以后可以在cygwin里测试一下:

Drupal

创建 php.ini

拷贝 “C:\web\php\5328\php.ini-dist” 并重命名为 “php.ini”.

3. Drush安装

$ cd /usr/local
$ wget http://ftp.drupal.org/files/projects/drush-7.x-5.9.tar.gz
$ tar -zxf drush-7.x-5.9.tar.gz
$ rm -rf drush-7.x-5.9.tar.gz
$ chmod u+x /usr/local/drush/drush
$ chmod u+x /usr/local/drush/drush.bat
$ ln -s /usr/local/drush/drush.bat /usr/bin/drush

Drupal

Vagrant优化选项

1. 使用rsync

由于整个Drupal项目文件数量比较多,使用共享磁盘方式的时候运行会比较慢,建议使用rsync同步到虚拟机里。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    config.vm.synced_folder "./docroot", "/var/www/docroot", type: "rsync", rsync__exclude: [".git*"], :create => true
end

2. 设置内存

config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
end

3. 优化虚拟机网络

config.vm.provider "virtualbox" do |vb|
    vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']
    vb.customize ['modifyvm', :id, '--natdnsproxy1', 'on']
    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
end

4. Vagrant配置文件示例

VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    # Vagrant box
    config.vm.box = "project"
    # 端口映射
    config.vm.network "forwarded_port", guest: 80, host: 8000
    config.vm.network "forwarded_port", guest: 443, host: 8443
    # rsync同步文件
    config.vm.synced_folder "../project/docroot", "/var/www/sites/project", type: "rsync", rsync__exclude: [".git*", "php.ini", "sites/default/files"], :create => true
    # 文件夹共享方式
    config.vm.synced_folder "../project/docroot/sites/default/files", "/var/www/sites/project/sites/default/files", :owner => "www-data"
    config.vm.provider "virtualbox" do |vb|
        vb.gui = false
        # 内存配置
        vb.customize ["modifyvm", :id, "--memory", "1024"]
        # 网络优化参数
        vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']
        vb.customize ['modifyvm', :id, '--natdnsproxy1', 'on']
        vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
    end
end

Vagrant常用命令

  • vagrant box add 添加box
  • vagrant box list 查看已安装的box
  • vagrant init 初始化
  • vagrant up 启动
  • vagrant halt 关闭虚拟机
  • vagrant ssh 连接虚拟机
  • vagrant package --output NAME 导出box (NAME.box)