Windows 7使用Vagrant构建虚拟开发环境

目录

接触过一点儿SAE的Python开发,在Windows 7下用virtualenv搭建本地开发环境,按着教程一步一步操作,最后得到的环境还是不容易正常使用,出现诸如调用脚本需要指定全路径之类的问题。看到Vagrant这个有用的工具,当然要尝试一下。

安装

需要安装最新版的VirtualBox和Vagrant,并将VirtualBox和Vagrant的目录添加到系统环境变量PATH中。

准备镜像

vagrant使用在virtualbox虚拟机基础上封装的box镜像。Vagrant在添加镜像时会自动下载镜像文件,但鉴于国内访问国外网的速度,建议事先使用下载工具单独下载镜像。
Box镜像下载站:<//www.vagrantbox.es/>
我下载Vagrant官方的Ubuntu precise 64 VirtualBox镜像,存放到某个目录下面,比如:
F:\Virtual Machine\vbox\precise64.box

创建环境

创建开发目录

作为使用vagrant的主目录,后续将自动生成配置文件Vagrantfile,并将该目录自动映射到虚拟机中的/vagrant目录下。比如,使用如下目录
D:\project\vagrant\dev

添加镜像

使用 vagrant box add [box-name] [box-url] 添加box。box名称默认为base。
在上面目录处打开命令行提示符或powershell。添加镜像F:\Virtual Machine\vbox\precise64.box到Vagrant,使用如下命令:
[shell]
vagrant box add base “file://f:\Virtual Machine\vbox\precise64.box”
[/shell]
其中base为box名称,后面是镜像文件的路径。
提示:

表示成功添加名为base的box。

初始化

在开发目录中初始化vagrant。
[shell]
vagrant init [box-name]
[/shell]
如果box是base,可以省略box-name,否则必须给出box的名字。
执行命令后显示:

表示自动生成配置文件Vagrantfile,可以使用vagrant up启动虚拟机。

修改配置文件

添加某些选项,方便后续开发。
比如网络设置采用端口映射:
[ruby]
config.vm.network :forwarded_port, guest: 80, host: 8080
[/ruby]

使用

基本操作命令

vagrant init 初始化
vagrant up 启动虚拟机
vagrant halt 关闭虚拟机
vagrant reload 重启虚拟机
vagrant ssh    SSH登陆虚拟机
vagrant status 查看虚拟机运行状态
vagrant destroy 销毁当前虚拟机

启动虚拟机

[shell]
vagrant up
[/shell]
显示信息:

上面有两个端口映射(22和80)以及一个共享文件夹映射(/vagrant)。

SSH登陆

使用vagrant ssh登陆虚拟环境。但Windows的命令行提示符cmd没有ssh命令。不过由于我安装git时添加其到环境变量PATH,git内置ssh命令,可以直接在命令行中登陆。

可以使用其他ssh客户端,如Putty、Xshell等。
地址为127.0.0.1
端口见上面的映射关系,为2222
用户名为vagrant
Private key为 C:/Users/用户名/.vagrant.d/insecure_private_key

安装软件

添加中文支持

镜像为英文版,需要添加简体中文支持
[shell]
sudo apt-get install language-pack-zh-hans
[/shell]
修改默认语言为简体中文,编辑/etc/default/locale,将语言改为zh_CN.UTF8。

添加各种Python库

首先需要安装python-pip。
安装mysql-dev遇到EnvironmentError: mysql_config not found问题,找不到头文件。需要安装libmysqld-dev,和python-dev。

进一步

释放C盘空间

vagrant把box默认放在C盘的用户文件夹下,严重占用C盘空间(其实最初的box也就300多兆大小),我需要将其移动到其它位置。
将.vagrant.d文件夹移动到其它位置,并设置他的路径为环境变量VARANT_HOME即可。

参考

vagrant官网:<//www.vagrantup.com/>
virtualbox官网:https://www.virtualbox.org/
两篇博文

PyCharm中使用Vagrant的官方说明:《Configuring to work on a VM

BAE本地开发环境文档

PS

搭建环境后,发现无法使用SAE的本地开发工具,dev_server.py运行的端口无法在宿主机访问,还需进一步研究是否是端口没有开放的原因。